2009-10-08 15 views
10

Me encontré con esta "lista de lenguajes de programación" y encontré que los lenguajes populares como Python no están estandarizados. ¿Por qué es eso y qué quiere decir "estandarizado"?Python no es un lenguaje estandarizado?

Respuesta

29

"estandarizada" significa que el lenguaje tiene una, las normas aprobadas formal, generalmente escrito por ISO o ANSI o ECMA. Muchos lenguajes de código abierto modernos, como Python, Perl y Ruby, no están formalmente estandarizados por un organismo externo, y en su lugar tienen un estándar de facto: cualquiera que sea la implementación de trabajo original.

Las ventajas de estandarizar un idioma son a) usted sabe que el idioma no cambiará aleatoriamente en usted, b) si desea escribir su propio compilador/intérprete para el idioma, tiene un documento muy claro que le dice qué comportamiento debería hacer todo, en lugar de tener que probar ese comportamiento usted mismo en la implementación original. Debido a esto, los lenguajes estandarizados cambian lentamente, y a menudo tienen múltiples implementaciones principales.

Un lenguaje en realidad no tiene que ser estandarizado para ser útil. La mayoría de los lenguajes no estándar no solo harán cambios al azar incompactables sin razón alguna (y si lo hacen, demoran diez años para decidir cómo * toser * Perl6 * tos *), y los idiomas no estándar pueden agregar nuevas características experimentales mucho más rápidas (y más portátil) que los lenguajes estandarizados.

Unos lenguajes estandarizados:

  • C
  • C++
  • Common Lisp
  • Esquema
  • JavaScript (ECMAScript)
  • C#
  • Rubí
(?)

idiomas no estandarizados:

  • Perl
  • Python
  • PHP
  • Objective-C

Una lista completa está en Wikipedia.

+4

Una gran respuesta, mi único argumento sería que si un estándar es ligeramente impreciso en cierta función, puede garantizar que la versión de Microsoft utilizará la interpretación más oscura e inusual de dicha ambigüedad, mientras que cualquier otro producto hace algo sensato. –

+0

Ruby ahora es un lenguaje estandarizado según ISO/IEC 30170 – harsha

2

Normalizado significa que existe una especificación para el idioma (un "estándar"). Java, por ejemplo, tiene una especificación. Perl 5 no (el código fuente es el "estándar") pero Perl 6 lo hará.

Ver Is there a Python language specification?

3

Hay "estándares" y hay "estándares".

La mayoría de las personas en su mayoría quiere decir que un estándar es aprobado por una organización de redacción de normas: ISO, ECMA, EIA, etc. Los abogados llaman a estos Estándares De Jure. Existe la fuerza de la ley.

Además, existen "Estándares de facto".

Algunas personas también corrompen la palabra agregando "Industry Standard", o "vendorname Standard".Esto es solo ruido de marketing sin sentido.

Un estándar De Facto es algo que está estandarizado en la práctica (porque todos lo hacen y acepta que lo hacen de esa manera) pero es no respaldado por alguna organización de estándares.

Python tiene un estándar De Facto, no es un estándar De Jure.

Cuestiones relacionadas