Este es un proyecto cancelado que no recibe actualizaciones. No obstante, puedes acceder a su archivo como referencia.

Versión Cero

El zoo de nuevos lenguajes

Sergio Montoro

A veces parece que la programación se acaba en C# y Java, pero hay mucha vida en el zoo del desarrollo. Veamos algunos nuevos especímenes.

por Sergio Montoro Ten, 29 agosto 05

Desde que C# y Java coparon la atención en el mercado de lenguajes de programación ha habido una reducción en el grado de interés suscitado por nuevos lenguajes.
No hace mucho tiempo era normal encontrar gente hablando de ADA, Lisp, Smalltalk, Eiffel, Objective-C o tantos otros.
No obstante, sigue habiendo lenguajes experimentales muy interesantes:

Xen: Es una mezcla del Common Language Runtime (CLR) de Microsoft con XML y SQL. La idea principal es empotrar el manejo de datos XML y SQL dentro del lenguaje. En la web de microsoft hay un white paper de Erik Meijer y Wolfram sobre Xen que explica las ideas básicas.
Microsoft aún no ha publicado ningún compilador para el lenguaje. Existe otra iniciativa de Microsoft relacionada con Xen, llamada

Python: Python es un lenguaje creado alrededor de las metodologías de desarrollo Agile.
El objetivo fundamental de Python es incrementar la productividad del desarrollador, aún a costa de eliminar cualidades que algunos puristas de la programación orientada a objetos consideran irrenunciables, como el chequeo estático de tipos.
Python ha ganado rápidamente popularidad entre los hackers porque permite escribir prototipos experimentales rápidamente.
Python incorpora algunos conceptos originales, por ejemplo la indentación de líneas con espacios en blancos se utiliza en si misma para delimitar estructuras de control.
El runtime es bastante lento en comparación con Java lo cual es el precio a pagar por la flexibilidad en la programación.

Fabl: Es un lenguaje para programación de la web semántica. Es necesario que avance esta tecnología porque, básicamente, la web semántica aún no ha terminado de salir del ámbito teórico y académico. El problema básico, a mi juicio, es que se necesita un experto documentalista para crear las ontologías lo cual, es imposible de poner en práctica cuando el conjunto de documentos es muy grande. fabl.net Para manejar ontologías existe también una librería Java de iSOCO llamada KPONTOLOGY

BeanShell: Java BeanShell No es un nuevo lenguaje de programación, sino un runtime de scripting para ejecutar Java interpretado. acaba de proceso de votación como JSR-274
Algo similar es Mozilla Rhino Shell muy útil para interpretar JavaScript dentro de aplicaciones Java.

Ruby: Sería deshonesto dejarlo fuera de este comentario, pero de verdad que no le veo la chicha al invento. El popular Ruby on rails se me antoja como una coctelera de cosas de diferentes lenguajes que le justaban a David Heinemeier. Promete acelerar el desarrollo de aplicaciones web, pero no soluciona ninguno de los problemas clave de los clientes ligeros: validación de datos, peticiones asíncronas, mezcla de lógica de negocio con presentación.

Mono: No me extrañaría que Microsoft abandonase ECMA en la siguiente versión de C#. A fin de cuentas ¿qué interés habrían de tener en fomentar Mono después de la absorción de Ximian por Novell? Sin embargo, Mono tiene su propio espacio, porque, aparte de .NET es la mejor plataforma para desarrollar aplicaciones de escritorio.

Heron: Heron incorpora algunas de las últimas novedades en programación: Aspect Oriented Programming, Interface Oriented Programming, Contracts, etc.

Globus Tookit: Se trata del estándar de facto para Grid Computing. Globus tiene interfaces para Java y C y también Web Services.

MPD: Multithreaded, Parallel, and Distributed Programing Language es un nuevo lenguaje de programación concurrente, basado en el libro Foundations of Multithreaded, Parallel, and Distributed Programming de Gregory R. Andrews.

Tutorial D: Es una propuesta para solucionar algunos de los problemas de diseño inherentes de SQL. Su implementación más avanzada se llama Rel

Web Services: No son obviamente un lenguaje sino más bien una arquitectura y una filosofía de diseño. La verdad es que me producen sensaciones contradictorias. La idea es buena pero la mayor parte de lo que aportan ya existía con RPC, era más rápido y, además, era bastante más fácil leerse un IDL que un WSDL.

Rexx: Rexx es un lenguaje de scripting inventado por Mike Cowlishaw de IBM en 1982 y ahora disponible como software libre. De todos los lenguajes de scripting disponibles puede que mi elección por este resulte extraña, pero existen buenos motivos para prestarle atención a algo tan viejo. Rexx es el lenguaje de scripting dominante en mainframes desde hace más de dos décadas. Lo bueno de Rexx es que es muy fácil y potente para escribir esos pequeños programillas de usar y tirar que todos los programadores necesitan en el día a día. Comparativamente, Perl es un excelente lenguaje para desarrolladores pero no es tan fácil como Rexx. Python es algo más fácil, pero los programas de usar y tirar no suelen estar orientados a objetos. Tcl/Tk es otro gran lenguaje y también es fácil, pero carece del soporte en un abanico tan amplio de plataformas (desde handhelds a mainframes) como Rexx. Ahora existen dos versiones de Rexx Classic Rexx y
Open Object Rexx

Comentarios
1 pmarin
30 agosto 2005, 08:44

Por favor me podriás dar una traducción a nuestro idioma de white paper. Gracias
2 Sergio Montoro Ten
30 agosto 2005, 11:43

¿White Paper?
Humm…
Veamos:
Yo lo traduciría por “Papel Mojado”.
Te dejas los cuernos escribiendo un software macanudo
lo pruebas, lo pules, lo afinas,
luego viene el product manager (mananeador de producto)
y escribe un documento que dice:
“Digital Bits ofrece un nuevo salto cuántico en la gestión integrada de información corporativa. Gracias a nuestra herramienta Open Fist la productividad de aumenta de forma exponencial. Open Fist es un entorno basado en la metodología Potato II etc. etc.”
Y lo llaman White Paper porque en realidad son 4 páginas de marketing con dibujitos que no dicen realmente nada útil del producto :-D
3 Daniel
31 agosto 2005, 11:44

De REXX tambien hay una versión para los PDA Palm OS.

En la URL:
http://www.jaxo.com/rexx/
4 Rastafari
31 agosto 2005, 19:14

De vez en cuando es muy aconsejable aprender algún que otro nuevo lenguaje, aunque no lo vayas a usar para ningún desarrollo serio, te abre un poco las miras y te puede enseñar nuevas formas de plantear los problemas.

Claro que puestos a aprender mejor aprender algo que proporcione enfoques diferentes a los que estamos acostumbrados, sabiendo por ejemplo programar en java yo sólo me pondría con C# por imperativo en algún desarrollo concreto, en otro caso seria mejor aprender algo como python (o jython), algun lenguaje más “puro” OO como smalltalk o eiffel, o incluso sino tenemos miedo a los parentesis algo como lisp.

Por añadir algo más a la lista:

Programación orientada a aspectos: no es un lenguaje sino un paradigma de programación, aunque no sustituye a la OO sino que simplemente se introduce el nuevo concepto de aspecto, un tema muy interesante y que parece que poco a poco esta siendo considerado por la industria.

Lenguaje D: se planteo este lenguaje como una evolución de C++, tenia muy buena pinta y mejoraba bastante aspectos de C++: incluia recolector de basura, delegados, diseño por contrato, eliminación del preprocesador y alguna cosilla más. Lo que no se es como andara la situación actual de este lenguaje ya que lo mire hace ya unos añitos.
5 Pau Garcia i Quiles
31 agosto 2005, 22:38

¿Ruby algo “sin chicha”? Sólo con esa frase ya queda claro que el autor no tiene ni idea de Ruby.

Ayer mismo estuve en una conferencia de Richard Dale en el aKademy 2005 sobre los bindings de Ruby y Java para KDE y nos demostró en vivo y en directo cómo lo que en C++ hubiera supuesto unas 300 líneas de código, en Ruby eran 15 (sí, quince) líneas de código, y además te olvidabas de gestión de memoria y otras complicaciones.

En cuanto a Python, más de lo mismo.

Y de “nuevos lenguajes”, poquito. REXX, Python y Ruby tienen más de diez años ya.

Es buena idea documentarse antes de escribir un artículo y hacer el ridículo…
6 Rastafari
1 septiembre 2005, 00:12

¿No tendras por ahí ese ejemplo de las 300 lineas en C++ 15 en ruby o python?

No puedo evitar mi total escepticismo ante ese tipo de afirmaciones tan exageradas. Teniendo en cuenta que tanto ruby, como python como C++ son lenguajes OO las diferencias por mucho que la sintaxis de ruby o python sea más “ligera” y no se haga por ejemplo comprobación estatica de tipado no pueden ser tan brutales.

Otra cosa es que se utilizen ciertas caracteristicas “built-in” de estos lenguajes o bien alguna libería o componente externo y el ejemplo C++ se construya a pelo mañanero. Claro que el valor de una comparación realizada de este modo es bastante discutible y un poco (o un mucho) aprovechada.

Es indudable por ejemplo que en python (ruby sólo conozco superficialmente) se escriben menos lineas que en C++ (a cambio de perder ciertas cosas, que nada es gratis), pero desde luego no es una relación 1:20 ni de lejos. Personalmente no me gustan nada este tipo de ejemplos normalmente sacados de contexto y “trucadillos” para exagerar las virtudes de algún lenguaje.
7 Hatxe
1 septiembre 2005, 10:05

Un poco indocumentado si que es el autor.
Al menos en el área que conozco.
Xen y C-omega no son lenguajes diferentes. C-Omega se llamaba al principio XEN o X#.
Y no va de meter XML y SQL mezclado con el CLR sino de la unión de dos lineas de investigación con C#.
La primera, C# Polifónico una extensión de C# para el manejo de la concurrencia asíncrona; y la segunda, el propio XEN o X#, una extensión para el manejo de datos y tablas relacionales.
8 Sergio Montoro Ten
1 septiembre 2005, 11:47

Cada uno tiene sus preferencias de programación. No pretendía deificar o demonizar ningún lenguaje.

Reducir el nº de líneas de código es un factor para aumentar la productividad, pero no el único.
En sus tiempos mucha gente prefería RPG/400 a COBOL porque COBOL es muy verborreico, RPG es corto pero terriblemente críptico.

He visto concursos de “plegar” código C a ver quién escribía lo mismo en menos espacio.

Convertir 300 líneas en 15 o en 3 no tiene ningún misterio ¿Cuanto costaba hacerse una lista de punteros enlazados en C? En Java tienes una clase ya hecha de modo que bien se podría afirmar que para algunas cosas el ratio de líneas de código Java a C es de 100 a 1.
9 Sergio Montoro Ten
1 septiembre 2005, 11:48

Sobre Xen, C# Polifónico y Cω, la información oficial sobre estos lenguajes está en los enlaces del artículo, no creo que valga la pena parafrasearla aquí.
10 Rastafari
1 septiembre 2005, 13:42

Convertir 300 líneas en 15 o en 3 no tiene ningún misterio ¿Cuanto costaba hacerse una lista de punteros enlazados en C? En Java tienes una clase ya hecha de modo que bien se podría afirmar que para algunas cosas el ratio de líneas de código Java a C es de 100 a 1.

Por supuesto, y si en C utilizo que se yo las librerías LEDA para hacer alguna operación matematica compleja y en Java implemento esto sin usar ninguna lbrería a lo mejor resulta que para algunos casos el ratio de lineas de código es 1000:1 a favor de C.

Lo que yo decia es en que terminos sintacticos y comparando lenguajes, (sin comparar las liberías de clases,funciones estándar o de terceros de cada uno de ellos, que seria otra comparación), no me puedo creer que en dos lenguajes que pertenecen al mismo paradigma exista un ratio de 20:1 a favor de ninguno por motivos repito meramente sintacticos.

Por eso para algunos casos muy especificos puede resultar que un lenguaje cuente con alguna librería , caracteristica del compilador o entorno de ejecución que proporcione realmente una diferencia muy grande en lineas de código frente a otro lenguaje que no cuente con estas caracteristicas. El problema es que esto es precisamente para un caso “muy concreto” y es un error demasiado habitual el intentar extrapolar una comparación de este tipo para decir “en X se escriben 20 veces menos lineas que en Y”.

PD: RPG es el lenguaje más desagradable que he tenido “el placer” de usar en toda mi vida, madre que mielda…
11 gHiRo
8 septiembre 2005, 03:29

Quisiera saber, si me puede recomendar un lenguaje para desarrollar mi propio lenhguaje de programacion, tiene que ser interprete y orientado a objetos…
se q son pocas especificaciones pero es lo que me han dicho a mi…

GRACIAS!!!!!
12 Sergio Montoro Ten
8 septiembre 2005, 12:25

Bueno, tienes el Lex y Yacc de toda la vida
Y yo he trabajado bastante con Visual Parse las licencias son un poco caras pero ahorra mucho trabajo
13 Juanjo Navarro
8 septiembre 2005, 13:10

No me ha quedado claro si lo que tiene que ser orientado a objetos es el lenguaje a desarrollar o el lenguaje con el que desarrolles.

En cualquier caso, también puedes utilidar el JavaCC (Java Compiler Compiler) que viene a ser un Yacc que genera código Java.
Acerca - Contacto - Información legal y técnica - Condiciones de uso - Noticias sobre el mundo del Desarrollo de Software.