¿Qué significa cuando alguna tecnología es un "estándar"?

16

Empecé a aprender Java EE 7 y con frecuencia me encuentro con este término "estándar", y no entiendo lo que significa.

Entonces, por ejemplo, aquí hay una cita de este libro:

Al contrario que SOAP y la pila WS- *, que se basan en los estándares W3C, REST no tiene un estándar y es solo un estilo de arquitectura con principios de diseño. Las aplicaciones REST dependen en gran medida de muchos otros estándares: HTTP, URI, URL ...

Tengo una idea de lo que eso podría significar, pero no estoy seguro.

La mejor explicación que he encontrado es la definición de aquí .

Djole Pi
fuente
77
Lea wikipage en estándar técnico . Pero en realidad podría ser una palabra de moda . Los estándares son generalmente especificaciones: entonces C ++ 11 y Posix son estándares.
Basile Starynkevitch
Significa que quien lo está presionando está tratando de convencerlo de que lo compre.
bmargulies

Respuestas:

21

El término "estándares" en la programación a menudo se refiere a una tecnología / documento que se rige por un grupo o comunidad. Los miembros de ese grupo a menudo comparten objetivos comunes de inversión, son usuarios activos de esa tecnología y desean garantizar que la tecnología continúe.

Hay muchas "cosas" en la programación que tienen una comunidad que las gobierna. Estos miembros pueden variar desde programadores hasta representación corporativa (es decir, Apple, Microsoft, IBM, etc., etc.)

W3C es un grupo muy grande que trabaja en conjunto para definir muchos estándares.

Aquí hay una lista de miembros.

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

REST es un ejemplo de una tecnología, por su popularidad es utilizada por muchas personas, pero no existe ningún grupo o comunidad que la gobierne. Por lo tanto, no hay un solo lugar para señalar con el dedo y decir "así es como los estándares dicen que se debe hacer" .

Empresas como IBM, Microsoft y otras han publicado documentación sobre cómo implementar REST. Se podría decir que hay una "forma común" de implementar REST. Puede elegir una fuente autorizada que describa una implementación de REST y afirmar que sigue esa referencia. El uso de fuentes autorizadas es una forma en que hemos estado lidiando con los problemas de compatibilidad en los navegadores web.

Reactgular
fuente
44
También agregaría RFC a la lista de lugares para encontrar estándares, ya que, por ejemplo, HTTP que el autor de la pregunta mencionada está definido por RFC 2616
2
@Snowman Tenga en cuenta que no todas las RFC son estándar ; Creo que la mayoría no lo son . Además, como puede ver en la parte superior de su página vinculada, RFC 2616 está obsoleto por RFC 7230-7235, al que debería referirse en su lugar. Por cierto, ese es solo un "Estándar propuesto", no un "Estándar de Internet" (ambos son estándares, pero el último se considera mucho más maduro y es poco probable que cambie).
Bob
@Snowman: Su comentario en realidad ilustra lo más importante: un estándar es cuando la gente está de acuerdo en que es un estándar. Si realmente mira la página RRF, verá que hay cientos de RFC, pero en realidad solo 78 estándares. ¡Y HTTP, que mencionaste, en realidad no es un estándar! Es "solo" una Solicitud de comentarios, es decir, alguna idea de que alguien tenía lo que quiere discutir. Lo que hace que HTTP sea un estándar no es que algún órgano rector lo publique (porque el órgano rector en cuestión, en realidad no lo llama "estándar") sino porque la gente lo trata como uno.
Jörg W Mittag
@ JörgWMittag Siempre he considerado que un estándar es un documento publicado de una fuente autorizada que indica cómo debería ser algo . El problema es que las personas pueden estar en desacuerdo sobre una fuente autorizada, mientras que otros abusan de sus poderes autoritarios (es decir, Microsoft y Apple son buenos ejemplos). Ambos a menudo ignoran o intentan forzar los estándares. Los estándares a menudo pueden ser algo que una gran corporación poderosa siente que no se aplica a ellos.
Reactgular
1
@Mathew "Siempre he considerado que un estándar es un documento publicado de una fuente autorizada que indica cómo debería ser algo". - Estoy de acuerdo con esta oración en su comentario, pero su respuesta actualmente dice que el término 'estándar' se refiere a la tecnología en sí misma. (Por ejemplo, según eso, Java es un estándar, la especificación Java EE 7 no es un estándar). La versión anterior decía que las organizaciones , como Oracle o W3C, eran lo que significaba 'estándar'. Su respuesta debe actualizarse para decir lo que quiere decir aquí. Escrito como está, su respuesta contiene información errónea. :(
doppelgreener
10

Un estándar es un documento técnico que especifica cómo se comporta una tecnología. (Para algunas tecnologías, puede ser algún otro tipo de estándar técnico ). Eso es todo lo que son y por qué existen: son documentos y describen la tecnología.

Estos documentos son creados por un órgano rector que tiene la autoridad y la confianza necesarias para que puedan decidir cómo funciona esa tecnología y para que las personas se preocupen cuando publican un documento de especificación como estándar. Un organismo rector podría producir muchos estándares, para diferentes tecnologías o diferentes versiones de una tecnología. El órgano rector también podría ser conocido como mantenedores, autores, custodios, etc. de las normas.

(En contraste con lo que describe Mathew, un estándar no es el órgano de gobierno ni la tecnología en sí. Es un documento que describe la tecnología o una versión particular de la misma).

Algunos estándares de ejemplo para las tecnologías que ha mencionado (y otros):

HTML es un buen ejemplo del hecho de que las diferentes versiones de un lenguaje a menudo tendrán diferentes estándares. Las diversas versiones tienen diferentes documentos que describen cómo se deben manejar las distintas versiones del lenguaje.

Mientras tanto, HTTP es uno de los muchos ejemplos de un movimiento estándar entre grupos: primero por el Grupo de trabajo de red, luego al Grupo de trabajo de HTTP, aunque ambos grupos formaban parte del IETF. Otras tecnologías se han movido entre compañías, como HTML (nuevamente), cuya versión 2 fue creada por el IETF en RFC1866 .

¿Por qué existen los estándares?

Existen para darnos una garantía de cómo funcionarán las cosas.

La especificación HTML5 me dice cómo los diferentes navegadores manejarán y mostrarán el marcado HTML5 que escribo, suponiendo que implementen el estándar correctamente (lo que históricamente ha sido un problema). El estándar C ++ 11 me dirá cosas sobre lo que varios códigos C ++ 11 que escribo harán o no.

Del mismo modo, si estoy escribiendo un navegador, el estándar HTML5 me dirá cómo necesito manejar varias piezas de marcado HTML5 para que las personas obtengan lo que esperan. Si estoy escribiendo un compilador de C ++ 11, el estándar C ++ 11 me dirá lo que necesito hacer para implementar el lenguaje correctamente y hacer que el código de las personas funcione de la manera que esperan que funcione.

Por ejemplo, los autores de Microsoft C #. Puede descargar la especificación de lenguaje C # 5.0 por sí mismo. Este documento es una promesa de que el código C # que escriba debe comportarse como se describe en la especificación, en cualquier compilador que realmente implemente la especificación correctamente.

( Si hace cosas fuera de las especificaciones , se encuentra en un territorio indefinido y no hay ninguna garantía sobre lo que sucederá o no).

Históricamente, los estándares se remontan a cosas como roscas de tornillo , de modo que puedo tener alguna garantía de que si solicito un tornillo de tipo X, se ajustará en el orificio que he perforado y será intercambiable con otros tornillos de tipo X.

Lo que nos lleva de vuelta a la definición de la palabra "estándar" :

un ejemplo aceptado o aprobado de algo contra lo que otros son juzgados o medidos - Diccionario Collins

Una medida reconocida de comparación para el valor cuantitativo o cualitativo; Un criterio. - Diccionario médico de American Heritage® Stedman

es decir, con lo que compara sus cosas para asegurarse de que obtendrá lo que espera.

doppelgreener
fuente
1
También hay un estándar para C #, .NET, CLR y C ++ / CLR publicado por ECMA, que luego fue acelerado a ISO. ISO también tiene un estándar para HTML, ISO HTML 1.0 es un subconjunto de W3C HTML 4.01 Strict.
Jörg W Mittag
4

Un estándar de tecnología es una especificación tal que se espera que dos implementaciones del mismo estándar sean interoperables o intercambiables. Ejemplos: USB, Bluetooth, Java EE7, HTTP.

Luego están los estándares "de facto": convenciones que permiten la interoperabilidad, pero sin una especificación explícita acordada. Ejemplo: el formato DOC de Microsoft ha sido históricamente un estándar de facto, ya que muchos productos podían leer y escribir DOC, pero las especificaciones canónicas no estaban disponibles (hasta mucho más tarde). Los documentos todavía se distribuían comúnmente en el formato DOC, con la expectativa de que cualquier receptor pudiera leerlo, por lo que se había convertido en un estándar de facto.

Para abordar su ejemplo específico, REST no tiene una especificación explícitamente acordada y, por lo tanto, no es un estándar verdadero y apenas un estándar de facto, ya que tiene una ambigüedad considerable en cómo debe hacerse correctamente, y no existen implementaciones dominantes que resuelve estas ambigüedades. (No estoy en contra de REST. Es una muy buena manera de construir servicios web)

Gudmundur Orn
fuente
1

Un estándar es una convención estandarizada, ya sea por una especificación formal o simplemente porque una convención común ha ganado suficiente popularidad como para ser dominante.

A de jure standardes una especificación publicada por un comité estándar. Algunos comités estándar son ISO, ECMA, DIN, ANSI y W3C.

Algunos ejemplos de jure standardsson el tamaño de papel A4 (estándar ISO 219), el lenguaje c # (ECMA-334), etc.

El término 'de jure' rara vez se usa, y un 'estándar de jure' a menudo se llama simplemente estándar.

Un estándar de facto es una costumbre, convención, producto o sistema que ha logrado una posición dominante por la aceptación pública o las fuerzas del mercado "

(fuente: wikipedia - No podría escribirlo mejor yo mismo)

Un estándar de facto no necesariamente sigue ninguna especificación formal.

Como Gudmundur Orn escribió en esta respuesta , el formato DOC de Microsoft Office era un estándar de facto. Tenía una posición dominante, y normalmente se suponía que las personas podían leer documentos de MS Word.

JSON es una bestia divertida, ya que comenzó como un estándar de facto. Sin embargo, desde entonces se ha formalizado como ECMA-404 , por lo que ahora es un 'estándar de jure'.

Sin embargo, también es el formato predominante para el intercambio de datos con API basadas en HTTP (que yo sepa), por lo que también es el 'estándar de facto' para este propósito.

Pete
fuente
-4

Por responsabilidad legal del producto, el defecto se clasifica como diseño, fabricación o documentación. Un diseño no es defectuoso si se basa en un estándar, ya sea que ese estándar sea o no defectuoso. El estándar que se aplica es el vigente cuando se creó el producto. Un estándar puede ser un estándar publicado (ISO) o un estándar aceptado de la industria que no está publicado por la asociación de estándares. Por lo tanto, TCP / IP con todos sus defectos inherentes, como la suplantación de identidad, es un estándar y si crea una nueva tecnología como VOIP y no hace nada para proteger al usuario de problemas conocidos con la tecnología subyacente, entonces está seguro de continuar con el caos. O puedo estar equivocado y tener un defecto de documentación aquí ...

Jason Agronaut
fuente
3
Por definición, un estándar no puede ser defectuoso. Sin embargo, un producto que implementa un estándar correctamente puede ser defectuoso, simplemente no es adecuado para su propósito. No importa cuántos o cuán bien cumpla con los estándares, si el producto no cumple con los requisitos de su propósito, es defectuoso.
Lie Ryan