Che cosa significa quando una tecnologia è uno "standard"?


16

Ho iniziato a studiare Java EE 7 e spesso mi imbatto in questo termine "standard" e non capisco cosa significhi.

Quindi, ad esempio, ecco una citazione da questo libro:

Contrariamente a SOAP e allo stack WS- *, che si basano sugli standard W3C, REST non ha standard ed è solo uno stile di architettura con principi di progettazione. Le applicazioni REST fanno molto affidamento su molti altri standard: HTTP, URI, URL ...

Ho qualche idea di cosa significhi, ma non ne sono sicuro.

La migliore spiegazione che ho trovato è la definizione da qui .


7
Leggi il wiki su standard tecnici . Ma potrebbe effettivamente essere una parola d'ordine . Gli standard sono generalmente specifiche: quindi C ++ 11 e Posix sono standard.
Basile Starynkevitch,

Significa che chiunque lo sta spingendo sta cercando di convincerti ad acquistarlo.
bmargulies,

Risposte:


21

Il termine "standard" nella programmazione si riferisce spesso a una tecnologia / documento governato da un gruppo o una comunità. I membri di quel gruppo spesso condividono obiettivi comuni investiti, sono utenti attivi di quella tecnologia e vogliono garantire che la tecnologia continui.

Ci sono molte "cose" nella programmazione che hanno una comunità che le governa. Questi membri possono variare dai programmatori alla rappresentanza aziendale (ad es. Apple, Microsoft, IBM, ecc. Ecc.)

W3C è un gruppo molto grande che lavora insieme per definire molti standard.

Ecco un elenco di membri.

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

Il REST è un esempio di tecnologia, a causa della sua popolarità viene utilizzata da molte persone, ma non esiste alcun gruppo o comunità che la governa. Pertanto, non esiste un posto dove puntare un dito e dire "è così che gli standard dicono che dovrebbe essere fatto" .

Aziende come IBM, Microsoft e altre hanno pubblicato la documentazione su come implementare REST. Si potrebbe dire che esiste un "modo comune" di attuare il REST. È possibile scegliere una fonte autorevole che descriva un'implementazione di REST e dichiarare di seguire tale riferimento. L'uso di fonti autorevoli è un modo in cui abbiamo affrontato i problemi di compatibilità nei browser web.


4
Vorrei anche aggiungere RFC all'elenco dei luoghi per trovare gli standard, poiché ad esempio HTTP, che il richiedente citato è definito da RFC 2616

2
@Snowman Tieni presente che non tutti gli RFC sono conformi agli standard ; Credo che la maggior parte sono non . Inoltre, come puoi vedere nella parte superiore della tua pagina collegata, RFC 2616 è obsoleto da RFC 7230-7235, che dovrebbe essere indicato invece. Per inciso, quello è solo uno "standard proposto", non uno "standard Internet" (entrambi sono standard tracciati, ma quest'ultimo è considerato molto più maturo e probabilmente non cambierà).
Bob

@Snowman: il tuo commento in realtà illustra la cosa più importante: uno standard è quando le persone concordano sul fatto che è uno standard. Se guardi effettivamente la pagina RRF, vedrai che ci sono centinaia di RFC, ma in realtà solo 78 standard. E HTTP, che hai menzionato, in realtà non è uno standard! È "solo" una richiesta di commenti, vale a dire un'idea che qualcuno ha avuto di cui vuole discutere. La cosa che rende HTTP uno standard non è che qualche organo di governo lo pubblichi (perché l'organo di governo in questione, in realtà non lo definisce uno "standard") ma perché le persone lo trattano come uno.
Jörg W Mittag,

@ JörgWMittag Ho sempre preso uno standard per essere un documento pubblicato da una fonte autorevole che indica come dovrebbe essere qualcosa . Il problema è che le persone non sono d'accordo su cosa sia una fonte autorevole, mentre altri abusano dei loro poteri autorevoli (ovvero Microsoft e Apple sono buoni esempi). Entrambi spesso ignorano o cercano di forzare gli standard. Gli standard possono spesso essere qualcosa che una grande società potente ritiene non applicabile a loro.
Reactgular

1
@Mathew "Ho sempre preso uno standard per essere un documento pubblicato da una fonte autorevole che indica come dovrebbe essere qualcosa." - Sono d'accordo con questa frase nel tuo commento, ma la tua risposta dice attualmente che il termine "standard" si riferisce alla tecnologia stessa. (Ad esempio, secondo questo, Java è uno standard, la specifica Java EE 7 non è uno standard.) La versione precedente diceva che le organizzazioni , come Oracle o W3C, erano ciò che significava "standard". La tua risposta deve essere aggiornata per dire cosa intendi qui. Scritta così com'è, la tua risposta contiene disinformazione. :(
doppelgreener,

10

Uno standard è un documento tecnico che specifica come si comporta una tecnologia. (Per alcune tecnologie, potrebbe trattarsi di un altro tipo di standard tecnico .) Questo è tutto ciò che sono e perché esistono: sono documenti e descrivono la tecnologia.

Questi documenti sono stati creati da un organo di governo che ha l'autorità e la fiducia necessarie per poter decidere come funziona quella tecnologia e per le persone che si preoccupano quando rilasciano un documento di specifica come standard. Un organo di governo potrebbe produrre molti standard, per diverse tecnologie o diverse versioni di una tecnologia. L'organo di governo potrebbe anche essere noto come manutentori, autori, custodi, ecc. Degli standard.

(Contrariamente a quanto descritto da Mathew, uno standard non è l'organo di governo la tecnologia stessa. È un documento che descrive la tecnologia o una sua versione particolare.)

Alcuni standard di esempio per le tecnologie che hai citato (e altri):

L'HTML è un buon esempio del fatto che diverse versioni di una lingua avranno spesso standard diversi. Le varie versioni hanno documenti diversi che descrivono come devono essere gestite le varie versioni della lingua.

HTTP, nel frattempo, è uno dei tanti esempi di spostamento standard tra i gruppi: prima dal gruppo di lavoro in rete, poi al gruppo di lavoro HTTP, sebbene entrambi i gruppi facessero parte della IETF. Altre tecnologie si sono spostate tra le aziende, come HTML (di nuovo), la cui versione 2 è stata creata dall'IETF in RFC1866 .

Perché esistono gli standard?

Esistono per darci una garanzia su come funzioneranno le cose.

La specifica HTML5 mi dice come i vari browser gestiranno e visualizzeranno il markup HTML5 che scrivo, supponendo che implementino correttamente lo standard (che storicamente è stato un problema). Lo standard C ++ 11 mi dirà cose su ciò che vari codici C ++ 11 che scrivo faranno o non faranno.

Allo stesso modo, se sto scrivendo un browser, lo standard HTML5 mi dirà come devo gestire vari pezzi di markup HTML5 in modo che le persone ottengano ciò che si aspettano. Se sto scrivendo un compilatore C ++ 11, lo standard C ++ 11 mi dirà cosa devo fare per implementare correttamente il linguaggio e far funzionare il codice delle persone nel modo in cui si aspettano che funzioni.

Ad esempio, gli autori Microsoft C #. Puoi scaricare la specifica di linguaggio C # 5.0 per te stesso. Questo documento promette che il codice C # che scrivi dovrebbe comportarsi nel modo in cui è descritto nelle specifiche, in qualsiasi compilatore che implementa effettivamente le specifiche correttamente.

( Se fai cose al di fuori delle specifiche , ti trovi in ​​un territorio indefinito e non c'è alcuna garanzia su ciò che accadrà o non accadrà.)

Storicamente, gli standard risalgono a cose come le filettature delle viti , in modo che io possa avere qualche garanzia che se ordino una vite di tipo X, si adatterà nel foro che ho praticato e sarà intercambiabile con altre viti di tipo X.

Il che ci riporta alla definizione della parola "standard" :

un esempio accettato o approvato di qualcosa in base al quale gli altri vengono giudicati o misurati - Collins Dictionary

Una misura riconosciuta di confronto per valore quantitativo o qualitativo; un criterio. - Dizionario medico American Heritage® Stedman

cioè la cosa con cui confronti le tue cose per assicurarti di ottenere ciò che ti aspetti.


1
Esiste anche uno standard per C #, .NET, CLR e C ++ / CLR pubblicato da ECMA, che è stato quindi accelerato in ISO. ISO ha anche uno standard per HTML, ISO HTML 1.0 è un sottoinsieme di W3C HTML 4.01 Strict.
Jörg W Mittag,

4

Uno standard tecnologico è una specifica in modo tale che due implementazioni dello stesso standard dovrebbero essere interoperabili o intercambiabili. Esempi: USB, Bluetooth, Java EE7, HTTP.

Esistono poi standard "di fatto": convenzioni che consentono l'interoperabilità, ma senza una specifica esplicita concordata. Esempio: il formato Microsoft DOC è stato storicamente uno standard di fatto, poiché molti prodotti potevano leggere e scrivere DOC, ma le specifiche canoniche non erano disponibili (fino a molto tempo dopo). I documenti erano ancora comunemente distribuiti nel formato DOC, con l'aspettativa che qualsiasi destinatario fosse in grado di leggerlo, quindi era diventato di fatto uno standard.

Per rispondere al tuo esempio specifico, REST non ha una specifica esplicita concordata e quindi non è un vero standard e a malapena uno standard di fatto poiché ha una notevole ambiguità nel modo in cui dovrebbe essere fatto correttamente e non esistono implementazioni dominanti che risolve queste ambiguità. (Non sono contrario a REST. È un ottimo modo per creare servizi Web)


1

Uno standard è una convenzione standardizzata - o mediante una specifica formale, o semplicemente perché una convenzione comune ha guadagnato abbastanza popolarità per essere dominante.

A de jure standardè una specifica pubblicata da un comitato standard. Alcuni comitati standard sono ISO, ECMA, DIN, ANSI e W3C.

Alcuni esempi de jure standardssono il formato carta A4 (standard ISO 219), il linguaggio c # (ECMA-334), ecc.

Il termine "de jure" viene usato raramente e uno "standard de jure" viene spesso chiamato standard.

Uno standard di fatto è un'usanza, una convenzione, un prodotto o un sistema che ha raggiunto una posizione dominante grazie all'accettazione pubblica o alle forze di mercato "

(fonte: wikipedia - non potrei scriverlo meglio da solo)

Uno standard di fatto non segue necessariamente alcuna specifica formale.

Come ha scritto Gudmundur Orn in questa risposta , il formato DOC di Microsoft Office era di fatto uno standard. Aveva una posizione dominante e si presumeva normalmente che le persone potessero leggere i documenti di MS Word.

JSON è una bestia divertente, dato che è iniziato come uno standard di fatto. Da allora è stato tuttavia formalizzato come ECMA-404 , quindi ora è uno "standard de jure".

È tuttavia anche il formato predominante per lo scambio di dati con API basate su HTTP (per quanto ne sappia), rendendolo così lo "standard di fatto" questo scopo.


-4

Per la responsabilità legale del prodotto, i difetti sono classificati come design, fabbricazione o documentazione. Un progetto non è difettoso se si basa su uno standard, indipendentemente dal fatto che tale standard sia difettoso. Lo standard applicabile è quello in vigore al momento della creazione del prodotto. Uno standard può essere uno standard pubblicato (ISO) o uno standard industriale accettato che non è pubblicato dall'associazione degli standard. Quindi TCP / IP con tutti i suoi difetti intrinseci come lo spoofing è uno standard e se crei una nuova tecnologia come VOIP e non fai nulla per proteggere l'utente da problemi noti con la tecnologia sottostante, allora sei sicuro di continuare il caos. Oppure potrei sbagliarmi e avere un difetto di documentazione qui ...


3
Per definizione, uno standard non può essere difettoso. Tuttavia, un prodotto che implementa correttamente uno standard può essere difettoso, ma non è adatto allo scopo. Non importa quanti o quanto segui gli standard, se il prodotto non soddisfa i requisiti previsti, è difettoso.
Lie Ryan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.