Что это значит, когда некоторые технологии являются «стандартом»?

16

Я начал изучать Java EE 7, и я часто сталкиваюсь с этим термином «стандарт», и я не понимаю, что это значит.

Так, например, вот цитата из этой книги:

В отличие от SOAP и стека WS- *, которые опираются на стандарты W3C, REST не имеет стандарта и представляет собой просто стиль архитектуры с принципами проектирования. Приложения REST сильно зависят от многих других стандартов: HTTP, URI, URL ...

У меня есть представление о том, что это может значить, но я не уверен.

Лучшее объяснение, с которым я столкнулся, - это определение отсюда .

Джоле Пи
источник
7
Читайте википейдж по техническому стандарту . Но на самом деле это может быть модным словом . Стандарты - это, как правило, спецификации: так что C ++ 11 и Posix - это стандарты.
Василий Старынкевич,
Это означает, что тот, кто подталкивает его, пытается убедить вас купить его.
Bmargulies

Ответы:

21

Термин «стандарты» в программировании часто относится к технологии / документу, который регулируется группой или сообществом. Члены этой группы часто разделяют общие поставленные цели, являются активными пользователями этой технологии и хотят, чтобы технология продолжалась.

В программировании есть много «вещей», которые управляют ими. Эти члены могут варьироваться от программистов до корпоративного представительства (например, Apple, Microsoft, IBM и т. Д. И т. Д.)

W3C - очень большая группа, которая работает вместе, чтобы определить множество стандартов.

Вот список участников.

http://www.w3.org/Consortium/Member/List

REST является примером технологии, которая популярна среди многих людей, но не существует группы или сообщества, управляющих ею. Поэтому нет единого места, где можно было бы указать пальцем и сказать: «Так говорят стандарты, это должно быть сделано» .

Такие компании, как IBM, Microsoft и другие опубликовали документацию о том, как реализовать REST. Можно сказать, что существует «общий способ» реализации REST. Вы можете выбрать авторитетный источник, который описывает реализацию REST, и заявить, что следует этой ссылке. Использование авторитетных источников является одним из способов решения проблем совместимости в веб-браузерах.

Reactgular
источник
4
Я также добавил бы RFC в список мест, где можно найти стандарты, поскольку, например, HTTP, о котором упоминается
2
@ Snowman Имейте в виду, что не все RFC соответствуют стандартам ; Я считаю , что большинство является не . Кроме того, как вы можете видеть вверху вашей связанной страницы, RFC 2616 устарел из RFC 7230-7235, на который следует ссылаться. Кстати, это всего лишь «Предлагаемый стандарт», а не «Интернет-стандарт» (оба являются стандартом, но последний считается гораздо более зрелым и вряд ли изменится).
Боб
@ Снеговик: Ваш комментарий на самом деле иллюстрирует самое важное: стандарт - это когда люди соглашаются, что это стандарт. Если вы действительно посмотрите на страницу RRF, вы увидите, что существуют сотни RFC, но на самом деле только 78 стандартов. И HTTP, который вы упомянули, на самом деле не является стандартом! Это «просто» запрос комментариев, то есть какая-то идея, которую кто-то имел, которую он хочет обсудить. То, что делает HTTP стандартом, заключается не в том, что какой-то руководящий орган публикует его (потому что рассматриваемый руководящий орган фактически не называет его «стандартом»), а в том, что люди рассматривают его как единое целое.
Йорг Миттаг,
@ JörgWMittag Я всегда считал стандартом документ, опубликованный из авторитетного источника с указанием того, как что-то должно быть . Проблема в том, что люди могут не согласиться с тем, что такое авторитетный источник, в то время как другие злоупотребляют своими авторитетными полномочиями (например, Microsoft и Apple являются хорошими примерами). Они оба часто игнорируют или пытаются навязать стандарты. Стандарты часто могут быть чем-то, что крупная мощная корпорация считает неприменимым к ним.
Reactgular
1
@ Mathew «Я всегда считал стандартом документ, опубликованный из авторитетного источника, в котором указано, что должно быть». - Я согласен с этим предложением в вашем комментарии, но ваш ответ в настоящее время говорит, что термин «стандарт» относится к самой технологии. (Например, в соответствии с этим Java является стандартом, спецификация Java EE 7 не является стандартом.) В предыдущей версии говорилось , что такие организации , как Oracle или W3C, означают «стандарт». Ваш ответ должен быть обновлен, чтобы сказать, что вы имеете в виду здесь. Написано как есть, ваш ответ содержит дезинформацию. :(
doppelgreener
10

Стандарт - это технический документ, определяющий, как ведет себя технология. (Для некоторых технологий это может быть какой-то другой технический стандарт .) Это все, что они есть и почему они существуют: это документы, и они описывают технологию.

Эти документы созданы руководящим органом, который обладает полномочиями и доверием, необходимыми для того, чтобы они могли принимать решение о том, как работает эта технология, и чтобы люди были обеспокоены, когда выпускают документ спецификации в качестве стандарта. Управляющий орган может разработать множество стандартов для разных технологий или разных версий технологии. Руководящий орган также может быть известен как сопровождающие, авторы, хранители и т. Д. Стандартов.

(В отличие от того, что описывает Мэтью, стандарт не является ни руководящим органом, ни самой технологией. Это документ, описывающий технологию, или ее конкретную версию.)

Некоторые примеры стандартов для технологий, которые вы упомянули (и другие):

  • Стандарт SOAP , поддерживаемый W3C.
  • Стандарт URI, определенный в STD66 , поддерживается Инженерной группой по Интернету (IETF), которая также работает над ...
  • Спецификации HTTP 1.1 , разработанные Рабочей группой HTTP . Это запросы для комментариев (RFC), но, тем не менее, они определяют работу HTTP. Эти стандарты на самом деле очень новые , они были выпущены только в июне 2014 года. HTTP 1.1 был ранее определен в RFC 2616 Сетевой рабочей группой IETF.
  • Спецификации HTML, определенные в стандарте HTML Living . Он создан Рабочей группой по технологиям веб-гипертекста (WHATWG). W3C повторно публикует и разветвляет различные версии этого стандарта, выпуская их как HTML 4 , XHTML 1.0 и HTML5 среди других версий. WHATWG недоволен тем, что они делают это.
  • У Java есть стандарт, поддерживаемый Oracle. Его различные версии имеют разные стандарты, и вы можете загрузить стандарт Java EE 7 самостоятельно.
  • Спецификация языка C # 5.0 , созданная командой Microsoft. Предыдущие версии имеют свои собственные отдельные документы спецификации.

HTML является хорошим примером того, что разные версии языка часто имеют разные стандарты. Различные версии имеют разные документы, описывающие, как должны обрабатываться различные версии языка.

HTTP, между тем, является одним из многих примеров стандартного перемещения между группами: сначала Сетевой рабочей группой, затем - Рабочей группой HTTP, хотя обе группы были частью IETF. Другие компании переместились между компаниями, например HTML (опять же), версия 2 которого была создана IETF в RFC1866 .

Почему существуют стандарты?

Они существуют, чтобы дать нам гарантию того, как все будет работать.

Спецификация HTML5 говорит мне, как различные браузеры будут обрабатывать и отображать разметку HTML5, которую я пишу, при условии, что они правильно реализуют стандарт (что исторически было проблемой). Стандарт C ++ 11 расскажет мне о том, что будет делать или не писать код на C ++ 11, который я пишу.

Аналогично, если я пишу браузер, стандарт HTML5 скажет мне, как мне нужно обрабатывать различные фрагменты HTML5-разметки, чтобы люди получали то, что ожидали. Если я пишу компилятор C ++ 11, стандарт C ++ 11 скажет мне, что мне нужно сделать, чтобы правильно реализовать язык и заставить код людей работать так, как они ожидают.

Например, авторы Microsoft C #. Вы можете скачать C # Language Specification 5.0 для себя. Этот документ обещает, что код C #, который вы пишете, должен вести себя так, как он описан в спецификации, в любом компиляторе, который фактически реализует спецификацию правильно.

( Если вы делаете что-то за пределами спецификации , вы находитесь на неопределенной территории, и нет никаких гарантий относительно того, что произойдет или не произойдет.)

Исторически стандарты возвращаются к таким вещам, как винтовая резьба , так что я могу иметь некоторую гарантию, что, если я закажу винт типа X, он будет соответствовать отверстию, которое я просверлил, и будет взаимозаменяем с другими винтами типа X.

Что возвращает нас к определению слова «стандарт» :

принятый или одобренный пример чего-то, с чем другие оцениваются или оцениваются - Словарь Коллинза

Признанная мера сравнения для количественного или качественного значения; критерий. - Американский медицинский словарь Heritage® Stedman

то есть то, с чем вы сравниваете свои вещи, чтобы убедиться, что вы получите то, что ожидаете.

doppelgreener
источник
1
Существует также стандарт для C #, .NET, CLR и C ++ / CLR, опубликованный ECMA, который затем был быстро перенесен на ISO. ISO также имеет стандарт для HTML, ISO HTML 1.0 является подмножеством W3C HTML 4.01 Strict.
Йорг Миттаг
4

Технологический стандарт - это такая спецификация, что ожидается, что две реализации одного и того же стандарта будут совместимы или взаимозаменяемы. Примеры: USB, Bluetooth, Java EE7, HTTP.

Кроме того, существуют стандарты «де-факто»: соглашения, обеспечивающие совместимость, но без явной согласованной спецификации. Пример: формат Microsoft DOC исторически был стандартом де-факто, поскольку многие продукты могли читать и записывать DOC, но канонические спецификации были недоступны (намного позже). Документы по-прежнему широко распространялись в формате DOC, и ожидалось, что любой получатель сможет их прочитать, поэтому это стало стандартом де-факто.

Чтобы обратиться к вашему конкретному примеру, REST не имеет явной согласованной спецификации и поэтому не является истинным стандартом, а лишь стандартом де-факто, поскольку имеет значительную неоднозначность в том, как это должно быть сделано правильно, и не существует доминирующих реализаций, разрешает эти неясности. (Я не против REST. Это очень хороший способ создания веб-сервисов)

Гудмундур Орн
источник
1

Стандарт - это стандартизированное соглашение - либо по формальной спецификации, либо просто потому, что общее соглашение приобрело достаточную популярность, чтобы быть доминирующим.

A de jure standard- спецификация, опубликованная стандартным комитетом. Некоторые стандартные комитеты: ISO, ECMA, DIN, ANSI и W3C.

Примерами de jure standardsмогут служить формат бумаги A4 (стандарт ISO 219), язык c # (ECMA-334) и т. Д.

Термин «де-юре» используется редко, а «стандарт де-юре» часто называют просто стандартом.

Стандарт де-факто - это обычай, соглашение, продукт или система, которая заняла доминирующее положение благодаря общественному признанию или рыночным силам ».

(источник: Википедия - я не мог бы написать лучше)

Стандарт де-факто не обязательно следует какой-либо формальной спецификации.

Как писал в этом ответе Гудмундур Орн, формат Microsoft Office DOC был стандартом де-факто. Он занимал доминирующее положение, и обычно предполагалось, что люди могут читать документы MS Word.

JSON - забавный зверь, поскольку он начинал как стандарт де-факто. Однако с тех пор он был официально оформлен как ECMA-404 , поэтому теперь он является стандартом де-юре.

Однако он также является преобладающим форматом для обмена данными с API на основе HTTP (насколько мне известно), что делает его также «стандартом де-факто» для этой цели.

Пит
источник
-4

Для юридической ответственности за продукт дефект относится к дизайну, изготовлению или документации. Конструкция не является дефектной, если она основана на стандарте, независимо от того, является ли этот стандарт дефектным. Применяется стандарт, который применяется при создании продукта. Стандарт может быть опубликованным стандартом (ISO) или принятым отраслевым стандартом, который не публикуется ассоциацией стандартов. Таким образом, TCP / IP со всеми присущими ему дефектами, такими как спуфинг, является стандартом, и если вы создаете новую технологию, такую ​​как VOIP, и ничего не делаете для защиты пользователя от известных проблем с базовой технологией, вы можете продолжать беспорядки. Или я могу ошибаться и иметь дефект документации здесь ...

Джейсон Агронавт
источник
3
По определению, стандарт не может быть дефектным. Тем не менее, продукт, правильно реализующий стандарт, может быть дефектным, он просто не подходит для этой цели. Неважно, сколько или насколько хорошо вы соблюдаете стандарты, если продукт не соответствует требованиям его предназначения, он неисправен.
Ли Райан