Qu'est-ce que cela signifie lorsqu'une technologie est une «norme»?

16

J'ai commencé à apprendre Java EE 7 et je rencontre souvent ce terme «standard», et je ne comprends pas ce que cela signifie.

Ainsi, par exemple, voici une citation de ce livre:

Contrairement à SOAP et à la pile WS- *, qui s'appuient sur les normes W3C, REST n'a pas de norme et n'est qu'un style d'architecture avec des principes de conception. Les applications REST s'appuient fortement sur de nombreuses autres normes: HTTP, URI, URL ...

J'ai une idée de ce que cela pourrait signifier, mais je ne suis pas sûr.

La meilleure explication que j'ai rencontrée est la définition d' ici .

Djole Pi
la source
7
Lire la page Web sur la norme technique . Mais cela pourrait en fait être un mot à la mode . Les normes sont généralement des spécifications: C ++ 11 et Posix sont donc des normes.
Basile Starynkevitch
Cela signifie que celui qui le pousse essaie de vous convaincre de l'acheter.
bmargulies

Réponses:

21

Le terme «normes» dans la programmation fait souvent référence à une technologie / un document régi par un groupe ou une communauté. Les membres de ce groupe partagent souvent des objectifs communs d'investissement, sont des utilisateurs actifs de cette technologie et veulent s'assurer que la technologie continue.

Il y a beaucoup de «choses» dans la programmation qui ont une communauté qui les régit. Ces membres peuvent aller des programmeurs à la représentation d'entreprise (c.-à-d. Apple, Microsoft, IBM, etc., etc.)

Le W3C est un très grand groupe qui travaille ensemble pour définir de nombreuses normes.

Voici une liste des membres.

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

REST est un exemple de technologie, car sa popularité est utilisée par de nombreuses personnes, mais aucun groupe ou communauté ne la régit. Par conséquent, il n'y a pas un seul endroit pour pointer du doigt et dire "c'est ainsi que les normes disent que cela devrait être fait" .

Des entreprises comme IBM, Microsoft et d'autres ont publié de la documentation sur la façon d'implémenter REST. On pourrait dire qu'il existe une «manière commune» de mettre en œuvre REST. Vous pouvez choisir une source faisant autorité qui décrit une implémentation de REST et prétendre suivre cette référence. L'utilisation de sources faisant autorité est une façon dont nous avons traité les problèmes de compatibilité dans les navigateurs Web.

Reactgular
la source
4
Je voudrais également ajouter RFC à la liste des endroits pour trouver des normes, car par exemple HTTP dont le demandeur a mentionné est défini par RFC 2616
2
@Snowman Gardez à l'esprit que tous les RFC ne sont pas conformes aux normes ; Je crois que la plupart ne le sont pas . En outre, comme vous pouvez le voir en haut de votre page liée, la RFC 2616 est obsolète par la RFC 7230-7235, à laquelle il convient de se référer à la place. Soit dit en passant, celui-ci n'est qu'une "norme proposée", pas une "norme Internet" (les deux sont conformes aux normes, mais cette dernière est considérée comme beaucoup plus mature et peu susceptible de changer).
Bob
@Snowman: Votre commentaire illustre en fait la chose la plus importante: une norme est lorsque les gens conviennent que c'est une norme. Si vous regardez réellement la page RRF, vous verrez qu'il y a des centaines de RFC, mais en fait seulement 78 normes. Et HTTP, que vous avez mentionné, n'est en fait pas un standard! C'est "juste" une demande de commentaires, c'est-à-dire une idée que quelqu'un avait dont il voulait discuter. La chose qui fait du HTTP une norme n'est pas que certains organes directeurs le publient (parce que l'instance dirigeante en question ne l'appelle pas en fait une "norme") mais parce que les gens le traitent comme tel.
Jörg W Mittag du
@ JörgWMittag J'ai toujours pris une norme pour être un document publié à partir d'une source faisant autorité indiquant comment quelque chose devrait être . Le problème est que les gens peuvent être en désaccord sur ce qu'est une source faisant autorité, tandis que d'autres abusent de leurs pouvoirs faisant autorité (c'est-à-dire que Microsoft et Apple sont de bons exemples). Ils ignorent ou essaient souvent de forcer les normes. Les normes peuvent souvent être quelque chose qu'une grande entreprise puissante pense ne pas leur appliquer.
Reactgular
1
@Mathew "J'ai toujours pris une norme pour être un document publié à partir d'une source faisant autorité indiquant comment quelque chose devrait être." - Je suis d'accord avec cette phrase dans votre commentaire, mais votre réponse indique actuellement que le terme «standard» fait référence à la technologie elle-même. (Par exemple, selon cela, Java est une norme, la spécification Java EE 7 n'est pas une norme.) La version précédente indiquait que les organisations , telles que Oracle ou W3C, étaient ce que signifiait «standard». Votre réponse doit être mise à jour pour dire ce que vous voulez dire ici. Écrit tel quel, votre réponse contient des informations erronées. :(
doppelgreener
10

Une norme est un document technique spécifiant le comportement d'une technologie. (Pour certaines technologies, il peut s'agir d'un autre type de norme technique .) C'est tout ce qu'elles sont et pourquoi elles existent: ce sont des documents et elles décrivent la technologie.

Ces documents sont rédigés par un organe directeur qui a l'autorité et la confiance nécessaires pour être en mesure de décider comment cette technologie fonctionne et pour que les gens se soucient lorsqu'ils publient un document de spécification en tant que norme. Un organe directeur pourrait produire de nombreuses normes, pour différentes technologies ou différentes versions d'une technologie. L'organe directeur pourrait également être connu en tant que responsables, auteurs, dépositaires, etc. des normes.

(Contrairement à ce que Mathew décrit, une norme n'est pas l'organe directeur ni la technologie elle-même. C'est un document décrivant la technologie, ou une version particulière de celle-ci.)

Quelques exemples de normes pour les technologies que vous avez mentionnées (et d'autres):

HTML est un bon exemple du fait que différentes versions d'une langue auront souvent des normes différentes. Les différentes versions ont différents documents décrivant comment les différentes versions de la langue doivent être gérées.

HTTP, quant à lui, est l'un des nombreux exemples d'un passage standard entre les groupes: d'abord par le groupe de travail réseau, puis par le groupe de travail HTTP, bien que les deux groupes fassent partie de l'IETF. D'autres technologies ont évolué entre les entreprises, comme HTML (encore une fois), dont la version 2 était créée par l'IETF dans la RFC1866 .

Pourquoi existe-t-il des normes?

Ils existent pour nous donner une garantie de la façon dont les choses vont fonctionner.

La spécification HTML5 m'indique comment les différents navigateurs géreront et afficheront le balisage HTML5 que j'écris, en supposant qu'ils implémentent correctement la norme (ce qui a toujours été un problème). La norme C ++ 11 me dira des choses sur ce que le code C ++ 11 que j'écris fera ou ne fera pas.

De même, si je suis j'écris un navigateur, la norme HTML5 me dira comment je dois gérer différents éléments de balisage HTML5 afin que les gens obtiennent ce qu'ils attendent. Si j'écris un compilateur C ++ 11, la norme C ++ 11 me dira ce que je dois faire pour implémenter correctement le langage et faire fonctionner le code des gens de la manière qu'ils attendent.

Par exemple, les auteurs Microsoft C #. Vous pouvez télécharger la spécification de langage C # 5.0 . Ce document est une promesse que le code C # que vous écrivez devrait se comporter comme il est décrit dans la spécification, dans tout compilateur qui implémente réellement la spécification correctement.

( Si vous faites des choses en dehors des spécifications , vous êtes en territoire indéfini et il n'y a aucune garantie que ce qui se passera ou ne se passera pas.)

Historiquement, les normes remontent à des choses comme les filets de vis , de sorte que je peux avoir une garantie que si je commande une vis de type X, elle s'adaptera dans le trou que j'ai percé et sera interchangeable avec d'autres vis de type X.

Ce qui nous ramène à la définition du mot "standard" :

un exemple accepté ou approuvé de quelque chose par rapport auquel les autres sont jugés ou mesurés - Collins Dictionary

Une mesure de comparaison reconnue pour la valeur quantitative ou qualitative; un critère. - Le dictionnaire médical American Heritage® Stedman

c'est-à-dire la chose à laquelle vous comparez vos trucs pour vous assurer d'obtenir ce que vous attendez.

doppelgreener
la source
1
Il existe également une norme pour C #, .NET, le CLR et C ++ / CLR publiée par ECMA, qui a ensuite été accélérée vers l'ISO. ISO a également une norme pour HTML, ISO HTML 1.0 est un sous-ensemble de W3C HTML 4.01 Strict.
Jörg W Mittag
4

Une norme technologique est une spécification telle que deux implémentations de la même norme devraient être interopérables ou interchangeables. Exemples: USB, Bluetooth, Java EE7, HTTP.

Il y a ensuite les normes "de facto": des conventions qui permettent l'interopérabilité, mais sans spécification convenue explicitement. Exemple: Le format Microsoft DOC a toujours été un standard de facto, car de nombreux produits pouvaient lire et écrire du DOC, mais les spécifications canoniques n'étaient disponibles (que bien plus tard). Les documents étaient encore couramment distribués au format DOC, dans l’espoir que tout destinataire serait en mesure de les lire, ce qui en faisait un standard de facto.

Pour répondre à votre exemple spécifique, REST n'a pas de spécification convenue explicitement et n'est donc pas une véritable norme, et à peine une norme de facto car il a une ambiguïté considérable sur la façon de le faire correctement, et aucune implémentation dominante n'existe résout ces ambiguïtés. (Je ne suis pas contre REST. C'est un très bon moyen de créer des services Web)

Orn Gudmundur
la source
1

Une norme est une convention normalisée - soit par une spécification formelle, soit simplement parce qu'une convention commune a acquis suffisamment de popularité pour être dominante.

UNE de jure standard est une spécification publiée par un comité standard. Certains comités de normes sont ISO, ECMA, DIN, ANSI et W3C.

Quelques exemples de jure standardssont le format de papier A4 (norme ISO 219), le langage c # (ECMA-334), etc.

Le terme «de jure» est rarement utilisé et un «standard de jure» est souvent simplement appelé standard.

Une norme de facto est une coutume, une convention, un produit ou un système qui a acquis une position dominante grâce à l'acceptation du public ou aux forces du marché. "

(source: wikipedia - Je ne pourrais pas mieux l'écrire moi-même)

Une norme de facto ne suit pas nécessairement toute spécification formelle.

Comme l'écrivait Gudmundur Orn dans cette réponse , le format Microsoft Office DOC était une norme de facto. Il avait une position dominante et on supposait normalement que les gens pouvaient lire les documents MS Word.

JSON est une bête drôle, car il a commencé comme une norme de facto. Cependant, il a depuis été officialisé sous le nom d' ECMA-404 , il s'agit donc désormais d'une «norme de jure».

C'est cependant aussi le format prédominant pour l'échange de données avec des API basées sur HTTP (à ma connaissance), ce qui en fait également le «standard de facto» à cet effet.

Pete
la source
-4

Pour la responsabilité légale des produits, les défauts sont classés en tant que conception, fabrication ou documentation. Une conception n'est pas défectueuse si elle est basée sur une norme, que cette norme soit défectueuse ou non. La norme qui s'applique est celle en place lors de la création du produit. Une norme peut être une norme publiée (ISO) ou une norme industrielle acceptée qui n'est pas publiée par l'association de normalisation. Ainsi, TCP / IP avec tous ses défauts inhérents comme l'usurpation d'identité est une norme et si vous créez une nouvelle technologie comme VOIP et que vous ne faites rien pour protéger l'utilisateur des problèmes connus avec la technologie sous-jacente, vous pouvez continuer le chaos en toute sécurité. Ou je peux me tromper et avoir un défaut de documentation ici ...

Jason Agronaut
la source
3
Par définition, une norme ne peut pas être défectueuse. Cependant, un produit mettant correctement en œuvre une norme peut être défectueux, il n'est tout simplement pas adapté à l'usage prévu. Peu importe le nombre ou la façon dont vous suivez les normes, si le produit ne satisfait pas aux exigences de sa destination, il est défectueux.
Lie Ryan