Was bedeutet es, wenn eine Technologie ein „Standard“ ist?

16

Ich habe angefangen, Java EE 7 zu lernen, und stoße häufig auf diesen Begriff "Standard", und ich verstehe nicht, was er bedeutet.

Zum Beispiel hier ein Zitat aus diesem Buch:

Im Gegensatz zu SOAP und dem WS- * -Stack, die auf W3C-Standards basieren, hat REST keinen Standard und ist nur ein Architekturstil mit Designprinzipien. REST-Anwendungen stützen sich stark auf viele andere Standards: HTTP, URI, URL ...

Ich habe eine Vorstellung davon, was das bedeuten könnte, bin mir aber nicht sicher.

Die beste Erklärung, auf die ich gestoßen bin, ist die Definition von hier .

Djole Pi
quelle
7
Lesen Sie die Wikiseite zum technischen Standard . Aber es könnte tatsächlich ein Modewort sein . Standards sind im Allgemeinen Spezifikationen: C ++ 11 und Posix sind also Standards.
Basile Starynkevitch
Es bedeutet, dass jeder, der es vorantreibt, versucht, Sie davon zu überzeugen, es zu kaufen.
bmargulies

Antworten:

21

Der Begriff "Standards" in der Programmierung bezieht sich häufig auf eine Technologie / ein Dokument, die bzw. das von einer Gruppe oder Community verwaltet wird. Die Mitglieder dieser Gruppe teilen häufig gemeinsame Anlageziele, sind aktive Nutzer dieser Technologie und möchten sicherstellen, dass die Technologie fortgesetzt wird.

Es gibt viele "Dinge" in der Programmierung, die von einer Community gesteuert werden. Diese Mitglieder können von Programmierern bis hin zu Unternehmensvertretern (z. B. Apple, Microsoft, IBM usw. usw.) reichen.

W3C ist eine sehr große Gruppe, die zusammenarbeiten, um viele Standards zu definieren.

Hier ist eine Liste der Mitglieder.

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

REST ist ein Beispiel für eine Technologie. Aufgrund ihrer Beliebtheit wird sie von vielen Menschen verwendet, aber es gibt keine Gruppe oder Community, die sie regiert. Aus diesem Grund gibt es keinen Ort, an dem man mit dem Finger zeigen und sagen kann, "so sagen die Standards, dass es getan werden sollte" .

Unternehmen wie IBM, Microsoft und andere haben eine Dokumentation zur Implementierung von REST veröffentlicht. Man könnte sagen, es gibt einen "gemeinsamen Weg" zur Implementierung von REST. Sie können eine maßgebliche Quelle auswählen , die eine Implementierung von REST beschreibt, und behaupten, dieser Referenz zu folgen. Die Verwendung maßgeblicher Quellen ist eine Möglichkeit, mit den Problemen der Kompatibilität in Webbrowsern umzugehen.

Reactgular
quelle
4
Ich möchte auch hinzufügen , RFC in die Liste der Orte Normen zu finden, da zB HTTP , die der Fragesteller erwähnt ist definiert durch RFC 2616
2
@Snowman Denken Sie daran, dass nicht alle RFCs Standards sind . Ich glaube, die meisten sind es nicht . Wie Sie oben auf Ihrer verknüpften Seite sehen können, wird RFC 2616 durch RFC 7230-7235 ersetzt, auf das stattdessen verwiesen werden sollte. Im Übrigen handelt es sich bei diesem Standard nur um einen "vorgeschlagenen Standard", nicht um einen "Internetstandard" .
Bob
@Snowman: Ihr Kommentar illustriert tatsächlich das Wichtigste: Ein Standard ist, wenn die Leute zustimmen, dass es ein Standard ist. Wenn Sie sich die RRF-Seite ansehen, werden Sie feststellen, dass es Hunderte von RFCs gibt, aber tatsächlich nur 78 Standards. Und HTTP, das Sie erwähnt haben, ist eigentlich kein Standard! Es ist "nur" eine Anfrage nach Kommentaren, dh eine Idee, die jemand hatte, über die er sprechen möchte. Das, was HTTP zu einem Standard macht, ist nicht, dass ein Verwaltungsrat es veröffentlicht (weil der betreffende Verwaltungsrat es eigentlich nicht als "Standard" bezeichnet), sondern weil die Leute es als einen Standard behandeln.
Jörg W Mittag
@ JörgWMittag Ich habe immer einen Standard als Dokument genommen, das aus einer maßgeblichen Quelle stammt und angibt, wie etwas sein soll . Das Problem ist, dass die Leute nicht einverstanden sind, was eine maßgebliche Quelle ist, während andere ihre maßgeblichen Befugnisse missbrauchen (z. B. Microsoft und Apple sind gute Beispiele). Sie beide ignorieren oft oder versuchen Standards zu erzwingen. Standards können oft etwas sein, von dem ein großes, mächtiges Unternehmen den Eindruck hat, dass sie nicht auf sie zutreffen.
Reactgular
1
@Mathew "Ich habe immer einen Standard als ein Dokument genommen, das aus einer maßgeblichen Quelle stammt und angibt, wie etwas sein sollte." - Ich stimme diesem Satz in Ihrem Kommentar zu, aber Ihre Antwort besagt derzeit, dass sich der Begriff „Standard“ auf die Technologie selbst bezieht. (Java ist demnach beispielsweise ein Standard, die Java EE 7-Spezifikation ist kein Standard.) In der vorherigen Version hieß es, Organisationen wie Oracle oder W3C seien "Standard". Ihre Antwort muss aktualisiert werden, um zu sagen, was Sie hier meinen. In der vorliegenden Form enthält Ihre Antwort Fehlinformationen. :(
doppelgreener
10

Eine Norm ist ein technisches Dokument, das das Verhalten einer Technologie festlegt. (Bei einigen Technologien kann es sich um eine andere Art von technischem Standard handeln .) Das ist alles, was sie sind und warum sie existieren: Sie sind Dokumente und beschreiben die Technologie.

Diese Dokumente werden von einem Leitungsgremium verfasst, das die Befugnisse und das Vertrauen besitzt, die erforderlich sind, um entscheiden zu können, wie diese Technologie funktioniert, und damit die Mitarbeiter sich darum kümmern können, wenn sie ein Spezifikationsdokument als Standard veröffentlichen. Ein Leitungsgremium könnte viele Standards für verschiedene Technologien oder verschiedene Versionen einer Technologie erstellen. Das Leitungsgremium könnte auch als Verwalter, Verfasser, Verwahrer usw. der Standards bekannt sein.

(Im Gegensatz zu dem, was Mathew beschreibt, ist ein Standard weder das Leitungsgremium noch die Technologie selbst. Es ist ein Dokument , das die Technologie oder eine bestimmte Version davon beschreibt.)

Einige Beispielstandards für Technologien, die Sie erwähnt haben (und andere):

HTML ist ein gutes Beispiel dafür, dass unterschiedliche Versionen einer Sprache häufig unterschiedliche Standards haben. Die verschiedenen Versionen haben unterschiedliche Dokumente, die beschreiben, wie mit verschiedenen Versionen der Sprache umgegangen werden soll.

HTTP ist eines der vielen Beispiele für einen Standard, der zwischen Gruppen wechselt: zuerst von der Netzwerkarbeitsgruppe, dann von der HTTP-Arbeitsgruppe, obwohl beide Gruppen Teil der IETF waren. Andere Technologien sind zwischen den Unternehmen gewechselt , beispielsweise HTML (erneut), dessen Version 2 von der IETF in RFC1866 verfasst wurde .

Warum gibt es Standards?

Sie dienen dazu, uns eine Garantie dafür zu geben, wie die Dinge funktionieren werden.

Die HTML5-Spezifikation gibt an, wie die verschiedenen Browser das von mir geschriebene HTML5-Markup verarbeiten und anzeigen, sofern sie den Standard korrekt implementieren (was in der Vergangenheit ein Problem war). Der C ++ 11-Standard gibt Auskunft darüber, welche verschiedenen C ++ 11-Codes ich schreiben werde oder nicht.

Ebenso sagt mir der HTML5-Standard , wenn ich einen Browser schreibe , wie ich mit verschiedenen HTML5-Markup-Elementen umgehen muss, damit die Benutzer das bekommen, was sie erwarten. Wenn ich einen C ++ 11-Compiler schreibe, sagt mir der C ++ 11-Standard, was ich tun muss, um die Sprache korrekt zu implementieren und den Code der Leute so zu gestalten, wie sie es erwarten.

Zum Beispiel Microsoft-Autoren C #. Sie können die C # -Sprachspezifikation 5.0 selbst herunterladen . Dieses Dokument ist ein Versprechen, dass der von Ihnen geschriebene C # -Code sich so verhalten sollte, wie er in der Spezifikation beschrieben ist, und zwar in jedem Compiler, der die Spezifikation tatsächlich korrekt implementiert.

( Wenn Sie Dinge außerhalb der Spezifikation tun , befinden Sie sich in einem undefinierten Gebiet und es gibt keinerlei Garantie dafür, was passieren wird oder nicht.)

Historisch gesehen gehen Standards auf Dinge wie Schraubengewinde zurück , so dass ich eine gewisse Garantie haben kann, dass, wenn ich eine Schraube vom Typ X bestelle, diese in das von mir gebohrte Loch passt und mit anderen Schrauben vom Typ X austauschbar ist.

Das bringt uns zurück zur Definition des Wortes "Standard" :

ein anerkanntes oder anerkanntes Beispiel für etwas, an dem andere gemessen oder beurteilt werden - Collins Dictionary

Ein anerkanntes Vergleichsmaß für den quantitativen oder qualitativen Wert; ein Kriterium. - Das American Heritage® Stedman's Medical Dictionary

dh das, womit du deine Sachen vergleichst, um sicherzustellen, dass du das bekommst, was du erwartest.

doppelgreener
quelle
1
Es gibt auch einen von ECMA veröffentlichten Standard für C #, .NET, CLR und C ++ / CLR, der dann auf ISO beschleunigt wurde. ISO hat auch einen Standard für HTML, ISO HTML 1.0 ist eine Teilmenge von W3C HTML 4.01 Strict.
Jörg W Mittag
4

Ein Technologiestandard ist eine Spezifikation, bei der erwartet wird, dass zwei Implementierungen desselben Standards interoperabel oder austauschbar sind. Beispiele: USB, Bluetooth, Java EE7, HTTP.

Dann gibt es "de facto" -Standards: Konventionen, die Interoperabilität ermöglichen, jedoch ohne eine explizit vereinbarte Spezifikation. Beispiel: Das Microsoft-DOC-Format war in der Vergangenheit ein De-facto-Standard, da viele Produkte DOC lesen und schreiben konnten, kanonische Spezifikationen jedoch erst viel später zur Verfügung standen. Dokumente wurden noch häufig im DOC-Format verteilt, mit der Erwartung, dass jeder Empfänger sie lesen kann, sodass sie de facto zum Standard geworden waren.

Um auf Ihr spezielles Beispiel einzugehen, hat REST keine explizit vereinbarte Spezifikation und ist daher kein echter Standard und kaum ein De-facto-Standard, da es erhebliche Unklarheiten hinsichtlich der korrekten Vorgehensweise aufweist und keine vorherrschenden Implementierungen vorhanden sind behebt diese Unklarheiten. (Ich bin nicht gegen REST. Es ist eine sehr gute Möglichkeit, Webdienste zu erstellen.)

Gudmundur Orn
quelle
1

Ein Standard ist eine standardisierte Konvention - entweder durch eine formale Spezifikation oder einfach, weil eine gemeinsame Konvention so populär geworden ist, dass sie vorherrschend ist.

A de jure standardist eine Spezifikation, die von einem Standardausschuss veröffentlicht wurde. Einige Standardausschüsse sind ISO, ECMA, DIN, ANSI und W3C.

Einige Beispiele de jure standardssind das A4-Papierformat (ISO-Standard 219), die c # -Sprache (ECMA-334) usw.

Der Begriff "de jure" wird selten verwendet, und ein "de jure-Standard" wird oft nur als Standard bezeichnet.

Ein De-facto-Standard ist ein Zoll, eine Konvention, ein Produkt oder ein System, das durch öffentliche Akzeptanz oder Marktkräfte eine beherrschende Stellung erlangt hat. "

(Quelle: Wikipedia - Ich könnte es nicht besser selbst schreiben)

Ein De-facto-Standard folgt nicht unbedingt einer formalen Spezifikation.

Wie Gudmundur Orn in dieser Antwort schrieb , war das Microsoft Office DOC-Format ein De-facto-Standard. Es hatte eine beherrschende Stellung und es wurde normalerweise angenommen, dass Menschen MS Word-Dokumente lesen können.

JSON ist ein lustiges Biest, da es als De-facto-Standard begann. Es wurde jedoch inzwischen als ECMA-404 formalisiert und ist nun ein "de-jure-Standard".

Es ist jedoch auch das vorherrschende Format für den Datenaustausch mit HTTP-basierten APIs (meines Wissens) und daher auch der "De-facto-Standard" für diesen Zweck.

Pete
quelle
-4

Für die gesetzliche Produkthaftung gelten die Mängel als Entwurf, Herstellung oder Dokumentation. Ein Design ist nicht fehlerhaft, wenn es auf einer Norm basiert, unabhängig davon, ob diese Norm fehlerhaft ist oder nicht. Es gilt der Standard, der zum Zeitpunkt der Produkterstellung gültig war. Eine Norm kann eine veröffentlichte Norm (ISO) oder eine anerkannte Industrienorm sein, die nicht von der Normungsvereinigung veröffentlicht wird. Daher ist TCP / IP mit all seinen inhärenten Fehlern wie Spoofing ein Standard. Wenn Sie eine neue Technologie wie VOIP erstellen und nichts unternehmen, um den Benutzer vor bekannten Problemen mit der zugrunde liegenden Technologie zu schützen, können Sie das Chaos aufrechterhalten. Oder ich liege falsch und habe hier einen Dokumentationsfehler ...

Jason Agronaut
quelle
3
Ein Standard kann per Definition nicht defekt sein. Ein Produkt, das einen Standard korrekt implementiert, kann jedoch fehlerhaft sein, es ist einfach nicht zweckmäßig. Es spielt keine Rolle, wie viele oder wie gut Sie Standards einhalten. Wenn das Produkt die Anforderungen für den vorgesehenen Zweck nicht erfüllt, ist es defekt.
Lie Ryan