¿Qué carajo son lenguajes Dinámicos…?

Comenté en un post anterior que explicaría sobre los lenguajes dinámicos.  Asi que el concepto lo sabía hasta un grado, pero me puse a investigar un poco mas sobre estos lenguajes y su uso futuro, auqneu los lenguajes dinamicos son tan antiguos, pues su uso en entornos de aplicaciones web, es de importancia.

Un lenguaje dinamico, son aquellos que, entre otras cosas, no controlan fuertemente el tipo de sus variables y permiten la creación (fácil) dinámica de código. Estas y otras características permiten:

  • Escribir código muy concreto.
  • Se escribe menos líneas de código.
  • Mejor performance de compilación o interpretación con respecto a los recursos.
  • Escribir programas desechables o probar funciones durante el desarrollo del programa.
  • Hacer que variables tengan muchos formas de typados durante el programa.
  • Crear prototipos con rapidez.
  • Como no hay tipado (entiendan como definicion de tipos) de variables, a veces no se puede detectar el error especificamente, lo que lenguajes estaticos si, mediante las excepciones, esto si es algo en contra.

Es por eso que sale el concepto de lenguajes de programación dinámicos; "que es un término usado ampliamente en informática para describir a una clase de lenguajes de programación de alto nivel que comparte muchos comportamientos en tiempo de ejecución que otros lenguajes y que solo se realizan durante la compilación, si es que los realizan del todo. Estos comportamientos pueden incluir extender el programa durante la ejecución agregando código adicional, extender sus objetos y sus definiciones, o modificar el sistema de tipos. Estos comportamientos pueden ser emulados por casi cualquier lenguaje de cierta complejidad, sin embargo los lenguajes dinámicos proveen herramientas directas para usarlos", concepto que saque de Wikipedia y que me ha costado tanto esfuerzo  en  traducirlo…

Los lenguajes dinámicos nos han acompañado por varios años ya y hay algunos que han alcanzado notoriedad como lo son Python, Ruby, Lisp, Prolog, Eiffel, Visual FoxPro, Visual Basic 1-5, VBScript, Objective-C, Perl, PHP, SmallTalk, y los que conforman el ECMAScript como Action Script, Jscript, Javascript  que tienen algunas de las características de los lenguajes dinámicos. Las características de prototipado rápido han atraído a los über-geeks super-programadores y alguna de la gente más talentosa, que han abandonado los ambientes orientados a objetos en favor de la programación dinámica. Es curioso que esto ha sido un problema más en el campo Java, donde varios de los super-gurús han abandonado la tienda y se han ido, principalmente, a Ruby. Por eso se habla mucho de que Ruby, es un lenguaje dinámico moderno. Aunque tampoco hay que desmerecer a javascript por su lado…

En el lado del mundo Microsoft, hay que decir que proyectos como IronPython o Gardens Point Ruby.NET demuestran que el CLR 2.0 permite implementar lenguajes dinámicos. Sin embargo, el CLR fue pensado sobretodo para lenguajes de tipos fuertes (como C# o Java) y hay espacio para servir mejor a los lenguajes dinámicos, así que Microsoft ha estado buscando retroalimentación de los implementadores de dichos lenguajes para ver como el CLR les puede atender mejor, el resultado de este trabajo es el Dynamic Language Runtime, una extensión del CLR que ofrece servicios específicos para los lenguajes dinámicos, aunque el DLR está en etapas tempranas parece ser del agrado de los super-programadores y hay dos implementaciones en desarrollo: IronPython 2.0 y IronRuby (cuyos primeros bits salio hace unos diás como release oficial). 

Esta claro que Microsoft no quiere que a C# le pase lo que le pasó a Java con Ruby y está preparando a .NET para que hospede con comodidad a los lenguajes dinámicos. Este anuncio lo hizo en el 2006…

Espero les haya aclarado el panorama del concepto…

Leave a Reply

Powered by WP Hashcash

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)

Debes leer y teclear los 5 caracteres entre 0..9 y A..F, y enviar la respuesta.

  

No puedo leer esto. Por favor, generar un