Co to znaczy, że jakaś technologia jest „standardem”?

16

Zacząłem uczyć się Java EE 7 i często spotykam się z tym terminem „standardowy” i nie rozumiem, co to znaczy.

Oto na przykład cytat z tej książki:

W przeciwieństwie do SOAP i stosu WS- *, które opierają się na standardach W3C, REST nie ma żadnego standardu i jest tylko stylem architektury z zasadami projektowania. Aplikacje REST w dużej mierze opierają się na wielu innych standardach: HTTP, URI, URL ...

Mam pojęcie, co to może znaczyć, ale nie jestem pewien.

Najlepszym wyjaśnieniem, na jakie się natknąłem, jest definicja stąd .

Djole Pi
źródło
7
Przeczytaj stronę internetową na temat standardu technicznego . Ale może to być modne słowo . Standardy są ogólnie specyfikacjami: więc C ++ 11 i Posix są standardami.
Basile Starynkevitch
Oznacza to, że ktokolwiek go naciska, próbuje przekonać cię do zakupu.
bmargulies

Odpowiedzi:

21

Termin „standardy” w programowaniu często odnosi się do technologii / dokumentu zarządzanego przez grupę lub społeczność. Członkowie tej grupy często mają wspólne inwestowane cele, są aktywnymi użytkownikami tej technologii i chcą mieć pewność, że technologia będzie kontynuowana.

W programowaniu jest wiele „rzeczy”, które rządzą społecznością. Członkowie ci mogą obejmować programistów lub przedstawicieli korporacyjnych (np. Apple, Microsoft, IBM itp.)

W3C to bardzo duża grupa, która współpracuje w celu zdefiniowania wielu standardów.

Oto lista członków.

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

REST jest przykładem technologii, która ze względu na swoją popularność jest używana przez wiele osób, ale nie rządzi nią żadna grupa ani społeczność. Dlatego nie ma jednego miejsca, w którym można by wskazać palcem i powiedzieć „w taki sposób standardy mówią, że należy to zrobić” .

Firmy takie jak IBM, Microsoft i inne opublikowały dokumentację dotyczącą wdrażania REST. Można powiedzieć, że istnieje „wspólny sposób” wdrażania REST. Możesz wybrać wiarygodne źródło, które opisuje implementację REST i twierdzić, że postępujesz zgodnie z tym odniesieniem. Wykorzystanie wiarygodnych źródeł jest jednym ze sposobów radzenia sobie z problemami kompatybilności w przeglądarkach internetowych.

Reactgular
źródło
4
Dodałbym również RFC do listy miejsc w celu znalezienia standardów, ponieważ np. HTTP, o którym wspomniany
2
@Snowman Należy pamiętać, że nie wszystkie RFC są zgodne ze standardami ; Wierzę, że większość to nie . Ponadto, jak widać u góry strony z linkami, RFC 2616 jest przestarzały z RFC 7230-7235, do którego należy się odwoływać. Nawiasem mówiąc, ten jest tylko „Proponowanym standardem”, a nie „standardem internetowym” (oba są standardowymi ścieżkami, ale ten drugi jest uważany za znacznie bardziej dojrzały i mało prawdopodobny do zmiany).
Bob
@Snowman: Twój komentarz w rzeczywistości ilustruje najważniejszą rzecz: standard jest wtedy, gdy ludzie się zgadzają, że jest standardem. Jeśli spojrzysz na stronę RRF, zobaczysz, że istnieją setki RFC, ale tak naprawdę tylko 78 standardów. A HTTP, o którym wspomniałeś, w rzeczywistości nie jest standardem! To „tylko” prośba o komentarz, czyli jakiś pomysł, który ktoś miał, o którym chciałby porozmawiać. To, co czyni HTTP standardem, nie polega na tym, że niektóre organy zarządzające go publikują (ponieważ dany organ zarządzający faktycznie nie nazywa go „standardem”), ale dlatego, że ludzie traktują go jako jeden.
Jörg W Mittag
@ JörgWMittag Zawsze traktowałem standard jako dokument opublikowany z wiarygodnego źródła stwierdzającego, jak coś powinno być . Problem polega na tym, że ludzie nie mogą się zgodzić z tym, czym jest wiarygodne źródło, podczas gdy inni nadużywają swoich autorytatywnych uprawnień (np. Microsoft i Apple są dobrymi przykładami). Oboje często ignorują lub próbują narzucić standardy. Normy często mogą być czymś, co zdaniem dużej potężnej korporacji ich nie dotyczy.
Reactgular
1
@Mathew „Zawsze traktowałem standard jako dokument opublikowany z wiarygodnego źródła stwierdzającego, jak coś powinno być”. - Zgadzam się z tym zdaniem w twoim komentarzu, ale twoja odpowiedź mówi obecnie, że termin „standard” odnosi się do samej technologii. (Np. Zgodnie z tym Java jest standardem, specyfikacja Java EE 7 nie jest standardem.) Poprzednia wersja powiedziała, że organizacje , takie jak Oracle lub W3C, miały na myśli to, co „standard” znaczy. Twoja odpowiedź musi zostać zaktualizowana, aby powiedzieć, co masz na myśli. Twoja pisemna odpowiedź zawiera błędne informacje. :(
doppelgreener
10

Standard to dokument techniczny określający zachowanie technologii. (W przypadku niektórych technologii może to być jakiś inny rodzaj standardu technicznego .) To wszystko, czym one są i dlaczego istnieją: są dokumentami i opisują technologię.

Dokumenty te są tworzone przez organ zarządzający, który ma uprawnienia i zaufanie niezbędne do decydowania o tym, jak działa ta technologia, oraz do dbania o ludzi, gdy udostępnią dokument specyfikacji jako standard. Organ zarządzający może opracować wiele standardów dla różnych technologii lub różnych wersji technologii. Organ zarządzający może być również znany jako opiekunów, autorów, opiekunów itp. Standardów.

(W przeciwieństwie do tego, co opisuje Mathew, standardem nie jest organ zarządzający ani sama technologia. To dokument opisujący technologię lub jej konkretną wersję).

Niektóre przykładowe standardy technologii, o których wspomniałeś (i inne):

HTML jest dobrym przykładem tego, że różne wersje języka często mają różne standardy. Różne wersje mają różne dokumenty opisujące, jak należy postępować z różnymi wersjami języka.

Tymczasem HTTP jest jednym z wielu przykładów standardowego przemieszczania się między grupami: najpierw przez Grupę Roboczą ds. Sieci, a następnie do Grupy Roboczej HTTP, chociaż obie grupy były częścią IETF. Inne technologie zostały przeniesione między firmami, takie jak HTML (ponownie), którego wersja 2 została opracowana przez IETF w RFC1866 .

Dlaczego istnieją standardy?

Istnieją, aby dać nam gwarancję, jak wszystko będzie działać.

Specyfikacja HTML5 mówi mi, jak różne przeglądarki będą obsługiwać i wyświetlać napisane przeze mnie znaczniki HTML5, przy założeniu, że poprawnie implementują standard (co w przeszłości było problemem). Standard C ++ 11 powie mi coś o tym, co zrobi lub nie zrobi różny kod C ++ 11, który piszę.

Podobnie, jeśli piszę przeglądarkę, standard HTML5 powie mi, jak mam obsługiwać różne elementy znaczników HTML5, aby ludzie otrzymywali to, czego oczekują. Jeśli piszę kompilator C ++ 11, standard C ++ 11 powie mi, co muszę zrobić, aby poprawnie zaimplementować język i sprawić, by kod ludzi działał tak, jak powinien.

Na przykład autorzy Microsoft C #. Możesz pobrać specyfikację języka C # 5.0 dla siebie. Ten dokument jest obietnicą, że kod C #, który piszesz, powinien zachowywać się tak, jak opisano w specyfikacji, w każdym kompilatorze, który faktycznie implementuje specyfikację poprawnie.

( Jeśli robisz rzeczy niezgodne ze specyfikacją , jesteś na nieokreślonym terytorium i nie ma żadnej gwarancji co do tego, co się wydarzy lub nie.)

Historycznie normy sięgają takich rzeczy jak gwint , więc mogę mieć pewną gwarancję, że jeśli zamówię śrubę typu X, to zmieści się w otworze, który wywierciłem, i będzie wymienna z innymi śrubami typu X.

Co prowadzi nas z powrotem do definicji słowa „standard” :

zaakceptowany lub zatwierdzony przykład czegoś, na podstawie którego inni są oceniani lub mierzeni - Słownik Collinsa

Uznana miara porównania wartości ilościowej lub jakościowej; kryterium. - Słownik medyczny American Heritage® Stedman's Medical Dictionary

tzn. rzecz, którą porównujesz, aby upewnić się, że dostaniesz to, czego oczekujesz.

doppelgreener
źródło
1
Istnieje również standard dla C #, .NET, CLR i C ++ / CLR opublikowany przez ECMA, który został następnie przyspieszony do ISO. ISO ma również standard HTML, ISO HTML 1.0 jest podzbiorem W3C HTML 4.01 Strict.
Jörg W Mittag
4

Standard technologiczny to specyfikacja, w której oczekuje się, że dwie implementacje tego samego standardu będą interoperacyjne lub wymienne. Przykłady: USB, Bluetooth, Java EE7, HTTP.

Są też standardy „de facto”: konwencje, które umożliwiają interoperacyjność, ale bez wyraźnie uzgodnionej specyfikacji. Przykład: format Microsoft DOC historycznie był de facto standardem, ponieważ wiele produktów mogło odczytywać i zapisywać DOC, ale specyfikacje kanoniczne nie były dostępne (aż znacznie później). Dokumenty nadal były powszechnie rozpowszechniane w formacie DOC, z oczekiwaniem, że każdy odbiorca będzie w stanie je odczytać, dlatego stało się to de facto standardem.

Aby odnieść się do twojego konkretnego przykładu, REST nie ma wyraźnie uzgodnionej specyfikacji i dlatego nie jest prawdziwym standardem, a jedynie de facto standardem, ponieważ ma znaczną dwuznaczność co do tego, jak należy to zrobić poprawnie i nie istnieją żadne dominujące implementacje, które rozwiązuje te dwuznaczności. (Nie jestem przeciwny REST. To bardzo dobry sposób na budowanie usług internetowych)

Gudmundur Orn
źródło
1

Norma jest znormalizowaną konwencją - albo przez formalną specyfikację, albo po prostu dlatego, że wspólna konwencja zyskała wystarczającą popularność, aby dominować.

A de jure standardjest specyfikacją opublikowaną przez standardowy komitet. Niektóre standardowe komitety to ISO, ECMA, DIN, ANSI i W3C.

Niektóre przykłady de jure standardsto rozmiar papieru A4 (standard ISO 219), język c # (ECMA-334) itp.

Termin „de jure” jest rzadko używany, a „standard de jure” jest często nazywany po prostu standardem.

Faktyczny standard to zwyczaj, konwencja, produkt lub system, który osiągnął pozycję dominującą dzięki akceptacji społecznej lub siłom rynkowym ”

(źródło: wikipedia - sam nie mogłem tego lepiej napisać)

Faktyczny standard niekoniecznie musi być zgodny z żadną formalną specyfikacją.

Jak napisał Gudmundur Orn w tej odpowiedzi , format Microsoft Office DOC był de facto standardem. Miał pozycję dominującą i zwykle zakładano, że ludzie mogą czytać dokumenty MS Word.

JSON jest zabawną bestią, ponieważ początkowo był de facto standardem. Od tego czasu został jednak sformalizowany jako ECMA-404 , dlatego jest teraz „standardem de jure”.

Jest to jednak również dominujący format wymiany danych z interfejsami API opartymi na HTTP (o ile mi wiadomo), co czyni go również „de facto standardem” w tym celu.

Pete
źródło
-4

W przypadku prawnej odpowiedzialności za produkt wada jest klasyfikowana jako projekt, produkcja lub dokumentacja. Projekt nie jest wadliwy, jeśli opiera się na normie, niezależnie od tego, czy norma jest wadliwa. Obowiązuje norma obowiązująca w momencie tworzenia produktu. Normą może być opublikowana norma (ISO) lub zaakceptowana norma branżowa, która nie została opublikowana przez stowarzyszenie norm. Tak więc TCP / IP ze wszystkimi nieodłącznymi wadami, takimi jak fałszowanie, jest standardem, a jeśli stworzysz nową technologię, taką jak VOIP, i nie zrobisz nic, aby chronić użytkownika przed znanymi problemami związanymi z podstawową technologią, możesz bezpiecznie kontynuować chaos. Albo mogę się mylić i mieć tutaj wadę dokumentacji ...

Jason Agronaut
źródło
3
Z definicji standard nie może być wadliwy. Jednak produkt prawidłowo wdrażający normę może być wadliwy, po prostu nie nadaje się do określonego celu. Nie ma znaczenia, ile i jak dobrze przestrzegasz standardów, jeśli produkt nie spełnia wymagań zamierzonego celu, jest uszkodzony.
Lie Ryan,