martes, 20 de septiembre de 2011

Noticias desde la normalización de lenguajes de programación

Hoy ha terminado la asamblea plenaria anual del subcomité ISO/IEC JTC1/SC22. Los se. En el mundo de la normalización se utilizan acrónimos insoportables. Probablemente resultará más inteligible si lo reformulo: Hoy a terminado la asamblea plenaria anual de subcomité de normalización de lenguajes de programación, sus entornos e interfaces de sistema.

Hay una larga lista de resoluciones tomadas por el subcomité. Algunas son meramente burocráticas y me las saltaré. Vayamos a la que pueden tener cierrto interés.

  • Se va a iniciar el estudio de una posible propuesta para normalizar la firma digital de código fuente.
  • Se ha disuelto el grupo de trabajo WG11 (binding techniques). Este grupo ha sido responsable de trabajos en especificación de aritmética independiente del lenguaje. No obstante, el interés directo de la industria en las actividades del grupo parece bajo y no se consigue tener una masa crítica en el grupo de trabajo. Este grupo de trabajo no desaparecerá realmente, sino que sus actividades se transfieren a otro subcomité (gestión e intercambio de datos / metadatos).
  • Se ha disuelto el grupo de trabajo WG16 (lenguaje Lisp). Este grupo ha dejado de tener actividad y no parece que haya sufiente interés industrial en el lenguaje.
  • Se ha aprobado la posibilidad de que la especificación del lenguaje ECMAScript (norma ISO/IEC 16262:2011) se pueda obtener gratuitamente a través de ISO. Esta norma ya se puede obtener de forma gratuita a través de ECMA.
  • Se ha confirmado la confirmación de las siguientes normas:
    • ISO/IEC/IEEE 9945:2009 Portable Operating Systems Interface (POSIX) Issue 7.
    • ISO/IEC/IEEE 11404:2007 General Purpose Datatypes.
    • ISO/IEC TR 19768:2007 Technical Report on C++ Library Extensions.
    • ISO/IEC 24716:2007 Native COBOL Syntax for XML support.
    • ISO/IEC 24731:2007 Extensions to the C Library - Part 1: Bounds checking interfaces.
  • Se ha decidido pasar a estado estabilizado (lo que hace hace que las normas dejen de estar activas) las siguientes normas:
    • ISO/IEC 13568:2002 Z formal specification notation - Syntax, type system and semantics.
    • ISO/IEC 15145:1997 Programming Languages - FORTH.
    • ISO/IEC 20970:2002 JEFF File Format.
Además, se ha revisado el estado en el que se encuentra la normalización del lenguaje Ruby que ya es una norma nacional en Japón y que previsiblemente se convertirá pronto en una norma internacional.

Tras esto, merece la pena fijarse en cual es el panorama en la normalización de lenguajes de programación en los distintos foros internacionales.

La estructura de grupos de trabajo de normalización dentro del ISO/IEC JTC1/SC22 queda de la siguiente forma:
  • WG4: COBOL.
  • WG5: Fortran.
  • WG9: Ada.
  • WG14: C.
  • WG17: Prolog.
  • WG19: Lenguajes de especificación formal.
  • WG23: Vulnerabilidades de los lenguajes de programación.
Otra organización internacional que trabaja en la normalización de lenguajes de programación es ECMA que mantiene los siguientes grupos de trabajo:
  • TC49-TG2: C#.
  • TC49-TG3: CLI.
  • TC49-TG4: Eiffel.
  • TC49-TG5: C++ para CLI.
  • TC39: ECMAScript.
Por último, en Japón, IPA mantiene la normalización del estándar sobre el lenguaje Ruby.

Tanto Ruby, como las normas desarrolladas por ECMA pueden pasar por un proceso especial para convertirse en normas ISO. De hecho esto constituye una práctica habitual de la que Ruby y ECMAScript son dos ejemplos actuales.

Y ¿adonde nos lleva esto? Pues a una lista bastante pequeña de lenguajes. Es lo que yo llamaría los lenguajes portables de interés. ¿Qué quiero decir con esto?

Veamos para estar en mi lista un lenguaje de programación debe tener una especificación mediante una norma internacional, porque esto garantiza que:
  1. Existe un interés por parte de varios actores de la industria del software en que exista una norma internacional sobre el lenguaje.
  2. Existe una norma internacional que especifica claramente el lenguaje y su entorno de forma que distintos fabricantes compitan ofreciendo productos que cumplen con la norma.
  3. El software desarrollado usando un lenguaje normalizado puede portarse con cierta facilidad de una plataforma a otra.
Como veréis mi lista no es muy larga. Por orden alfabético: Ada, C, C++, C#, COBOL, ECMAScript, Eiffel, Fortran, Prolog. A esta lista podremos añadir en breve Ruby.

De todas formas, debemos tener cuidado con las interpretaciones de mi lista. Esto no quiere decir que estos lenguajes sean los mejores, ni los más usados, ni nada por el estilo. No trato de generar una versión n+1 de la gran batalla de los lenguajes de programación.

Si un lenguaje está fuera de mi lista es porque:
a) No hay suficiente interés en la industria en el uso del lenguaje o en la existencia de una norma independiente.
b) El lenguaje está sujeto a algún tipo de propiedad intelectual que impide la competición entre distintos fabricantes o la existencia del mismo en determinado tipo de plataformas.
Sin embargo no me gustaría que este post empiece a generar comentarios masivos de fanáticos de ningún lenguaje.

2 comentarios:

  1. No soy un fanático ni mucho menos, pero me resulta curioso que Python no aparezca mencionado, sobre todo teniendo en cuenta que está en el top ten de los lenguajes más populares del momento.

    ResponderEliminar
  2. Si consultas la página http://www.python.org/ los descubrirás rápidamente:

    "The Python Software Foundation holds the intellectual property rights behind Python,..."

    Incumple la condición b) para estar en mi lista.

    Como decía, mi lista no quiere decir que tu lenguaje preferido no sea bueno, bonito, barato o el adjetivo que quieras ponerle.

    Pero cuidado, el día que la Python Foundation quiera hacer cambios en el lenguaje los hará unilateralmente y tendrás que aceptarlo.

    ResponderEliminar