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 .
coding-standards
standards
Djole Pi
la source
la source
Réponses:
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.
la source
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" :
c'est-à-dire la chose à laquelle vous comparez vos trucs pour vous assurer d'obtenir ce que vous attendez.
la source
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)
la source
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 standards
sont 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.
(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.
la source
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 ...
la source