lunes, septiembre 18, 2006

los lenguajes pasan, la lógica se mantiene

Robo un tiempo a la escritura de la segunda parte de serviciosy compresión para comentar en los lenguajes de programación. Esto surge porque el día de hoy recibi uchos mensajes relacionados con lenguajes, primero el anuncio de que las presentaciones de Lang.NET estan disponibles. Luego me envían el link de un artículo en el que se recomiendan los lenguajes de programación que uno debe aprender para estar a la par del mercado (el orden sigue sin convencerme pero los lenguajes me parece que son los encaminados) y finalmente leo varios comentarios respecto a IronPython.

En fin si analizo cada tema por separado cada uno me trae muchas ideas y en este momento solo comentare algunas:

  1. Lang.NET: Cuando uno lee el temario de este simposio queda claro que hay mucho trabajo alrededor de los lenguajes dinámicos, Aún recuerdo que en mis primeras interacciones con JavaScript lo que más me atrajo del lenguaje fueron las características que lo hacen dinámico y con el tiempo descubrí muchas ventajas y llegué a establecer cariño con algunos lenguajes dinámicos. La principal ventaja de este tipo de lenguajes radica en la extensibilidad y capacidad de adaptación que brindan estos lenguajes a sus soluciones. Por ejemplo permiten que interfaces gráficas sean fáciles de crear y embeber en soluciones empaquetadas, otro ejemplo es la generación de objetos totalmente consistentes sobre la marcha (para ejemplo basta un botón TurboGears o Ruby on Rails.
    Sin embargo también hay que recordar que los lenguajes adolecen de una gran contra que es el impacto en rendimiento tipicamente los lenguajes dinámicos son interpretados y debido a que son dinámicos se hace un manejo muy complejo de las declaraciones y tipos.
    Bueno creo que hablaré más de esto en el punto 3, pero sigo con el simposio. Más allá de los lenguajes dinámicos es interesante ver como el CLI se vuelve objeto de todos tipo de lenguajes funcionales, dinámicos, etc. y ver que los distintos esfuerzos alrededor están demostrando que es una plataforma viable para realizar implementaciones optimizadas.
    Creo que es importante que los equipos de desarrollo involucrados con el CLI (en Microsoft y en Mono) empiecen a considerar algunas mejoras que surjan como recomendación de estas iniciativas y aseguren que la implementación de estas esten disponibles para todos los lenguajes generando una plataforma común y evitando que se dupliquen esfuerzos. Y si se puede finalmente incluirlo en el CLI. Hay que entender que muchos requerimientos de otros lenguajes pueden afectarse entre sí y allí es donde nosotros los mortales confiaremos en la sapiencia de los gurús.
  2. Los lengaujes a aprender: Hace unos 8 años cualquiera que salía de la universidad había escuchado al menos una vez de Delphi y lo importante que era aprenderlo, es más yo era uno de sus defensores (lo que no quita que también usara Visual Basic). Y hoy no existe ninguna variante o descendiente que haya logrado ingresar en el top ten de e-Week. Personalmente creo que un programador debe poder adecuarse a cualquier sintaxis, pero también creo que no cualquier sintaxis se adecúa a cualquier problema. Por ello es muy importante que un buen programador conozca al menos 3 lenguajes de desarrollo, y en el caso de un arquitecto ... bueno un arquitecto tiene tiempo para leer mucho, ¿verdad?.
    Así que empecemos a hacer una revisión de como estoy yo con respecto a la lista:
    Lenguaje Lectura Escritura
    PHP Media Básica, ha pasado mucho tiempo
    C# OK OK
    AJAX OK OK
    JavaScript/ECMAScript OK OK
    Perl Básica casi :S :S
    C OK Basica - Media
    Ruby Básica Básica, muy básica
    Java Media :S
    Python OK Media - OK
    VB.Net OK Media -OK
    Primero tengo que aclarar mi escala: OK significa que siento que puedo leer/escribir una aplicación completa sin mayores sobresaltos, Media significa que podría leer/escribir una aplicación con algunas consultas a fuentes de documentación del lenguaje, Básica es mi entendido de que puedo darme una idea pero requiero de actualizar mis conocimientos o de tener la referencia del lenguaje a mi lado y finalmente :S significa que tendría que pedir ayuda a alguien que si sepa.
    No esta mal, solo tengo dos en los que no podría escribir código y en ambos casos es un tema de afinidad con el lenguaje, en este punto tengo que aclarar que nunca me han gustado ni Perl, ni Java ni su sintaxis. Es cierto que he escrito código en Java pero no fue una sensación agradable.
    Si ya se que me dirán si escribo ECMAScript y C# no debería tener problema con Java, pero esa no es la verdad.
    En fin, creo que es importante revisar al menos 5 de estos lenguajes y tenerlos en un nivel medio o superior para lectura y al menos 3 en medio o superior para escritura. Para cerrar quiero decir que en la lista falta una variante de lenguaje que para mi esta dando y dará mucho que hablar y que toca varios puntos importantes de la lista: IronPython y con esto paso al punto 3.
  3. IronPython Como habrán visto de mi lista anterior Python es un lenguaje con el que me siente comodo, esto viene de hace unos años cuando necesitando una aplicación que permitiera que una aplicación cualquiera se coenctara a un sitio que autenticaba con NTLM y encontré NTLMAPS viendo la aplicación encontré muchas cosas de Python que nunca habia visto así que me involucre y estuve mucho tiempo jugando con Python y llegó a posicionarse como uno de mis lenguajes favoritos.
    Luego por razones de falta de tiempo deje de verlo y hace dos años o poco más vi en listas que había algo llamado IronPython que era un compilador de Python para .Net al ver el sitio de proyecto quede encantado porque Jim no solo estaba portando Python, sino creando un derivado que le permitiera utilizar las ventajas de Python y las ventajas de .Net.
    Durante mucho tiempo seguí el proyecto, me alegré cuando me enteré que Jim ingresaa a Microsoft y mucho más cuando supe que IronPython contaría con el apoyo de Microsoft. Bueno con esos antecedentes les contaré que hace un par de semanas Jim Hugunin anunció en su blog la liberación de la versión 1.0 de IronPython y no tarde en descargarlo. La verdad me parece un gran trabajo y el hecho de que pueda pasar  un 90% de las pruebas de la libreria estándar de Python es áun más sorprendente (el 10% que falta utiliza extensiones compiladas en C so..).
    Bueno desde la liberación estuve haciendo un par de cosas y la verdad me encanta IronPython. Me queda pendiente probar el add-in para visual studio pero Python es un lenguaje para trabajar en archivos y consola :)

Para finalizar este post que se extendió un poco solo quiero recalcar que si bien como desarrolladores podemos comulgar con un lenguaje u otro y que gracias a los servicios podemos comunicarnos facilmente con soluciones en otros lenguajes, no debemos olvidar que en un mundo de desarrolladores libres siempre habrán otros lenguajes y que cada uno tendrá un lugar para ser y crecer (yo creo que ya veremos algún lenguaje tipo pascal darnos una sorpresa).
Los lenguajes van y vienen pero mientras tu lógica, deseos de aprender y capacidad de análisis se desarrollen puedes estar seguro que siempre habrá uno que te satisfaga.

No hay comentarios.: