Llegamos a ustedes gracias a:



Reportajes y análisis

9 lenguajes de programación

Que valen la pena aprender

Lenguajes de programación

[28/11/2014] Las lenguas grandes son populares por una razón: Ofrecen una gran base de código abierto, bibliotecas, y los marcos de acabado que hacen el trabajo más fácil. Este es el resultado de años de impulso en los que se eligen una y otra vez para los nuevos proyectos, y la experiencia en sus matices crece de forma abundante.

A veces los vastos recursos de los principales lenguajes de programación no son suficientes para resolver su problema en particular. A veces hay que mirar más allá de lo obvio para encontrar el lenguaje adecuado, donde la estructura correcta marca la diferencia al tiempo que ofrece esa característica extra para ayudar a que su código se ejecute mucho más rápido, sin retoques sin fin, ni optimización. Este lenguaje produce mucho código más estable y preciso, ya que no le permite programar código descuidado o deficiente.

El mundo está lleno de miles de lenguas que no son inteligentes C #, Java o JavaScript. Algunas son atesoradas por solo unos pocos, pero muchos tienen comunidades florecientes conectadas por un amor común por las instalaciones del lenguaje en la solución de ciertos problemas. Puede que no haya decenas de millones de programadores que conozcan la sintaxis, pero a veces hay un valor en hacer las cosas un poco diferentes, como la experimentación con cualquier nuevo idioma, lo cual puede pagar dividendos significativos sobre proyectos futuros.

Los siguientes nueve idiomas deben estar en el radar de cada programador. Puede que no sean los mejores para cada puesto de trabajo -muchos se dirigen a tareas especializadas. Pero todos ofrecen ventajas sobre las que vale la pena investigar e invertir. Puede haber un día en que una de estas lenguas resulte ser exactamente lo que su proyecto -o su jefe- necesita.

Erlang: Programación funcional de sistemas de tiempo real

Erlang empezó en el interior de los reinos espeluznantes de los conmutadores telefónicos de Ericsson, la compañía sueca de telecomunicaciones. Cuando los programadores de Ericsson comenzaron a jactarse de su rendimiento de sus "nueve 9s", mediante la entrega de 99,9999999% de los datos con Erlang, los desarrolladores externos de Ericsson comenzaron a prestarle atención.

El secreto de Earlang es el paradigma funcional. La mayor parte del código se ve obligado a operar en su propio pequeño mundo en el que no puede corromper el resto del sistema a través de efectos secundarios. Las funciones hacen todo su trabajo internamente, ejecutando pequeños "procesos" que actúan como cajas de arena, y solo se comunican entre sí a través de mensajes de correo. No se puede simplemente tomar un puntero y hacer un cambio rápido al estado en cualquier lugar de la pila. Tiene que permanecer dentro de la jerarquía de llamado. Puede requerir un poco más de pensamiento, pero los errores son menos propensos a propagarse.

El modelo también hace que el código ejecutado determine con mayor sencillez qué se puede ejecutar al mismo tiempo. Con una concurrencia tan fácil de detectar, el programador de tiempo de ejecución puede tomar ventaja de la muy baja sobrecarga en la creación y bajar un proceso. Los aficionados a Erlang gustan de alardear acerca de la ejecución de 20 millones de "procesos", al mismo tiempo en un servidor Web.

Si está construyendo un sistema en tiempo real, sin espacio para datos abandonados, como un sistema de facturación para un interruptor de teléfono móvil, entonces, dele un vistazo a Erlang.

Go: Simple y dinámico

Google no fue la primera organización en examinar la colección de idiomas, solo para encontrarlos desordenados, complejos, y con frecuencia, lentos. En el año 2009, la compañía dio a conocer su solución: un lenguaje de tipos estáticos que se parece a C, pero que incluye inteligencia de fondo para salvar a los programadores de tener que especificar los tipos y hacer malabares con las llamadas malloc. Con Go, los programadores pueden tener la concisión y la estructura de un compilado C, junto con la facilidad de uso de un lenguaje dinámico de script.

Mientras Sun y Apple siguieron un camino similar en la creación de Java y Swift, respectivamente, Google hizo una decisión significativamente diferente con Go: los creadores del lenguaje querían mantener a Go "lo suficientemente simple para que se quede en la cabeza de un programador". Rob Pike, uno de los creadores de Go le dijo a Ars Technica que "a veces se puede obtener más en el largo plazo mediante la adopción de las cosas". Por lo tanto, hay algunos extras como tablas genéricas, tipos o afirmaciones heredadas, bloques simples de código que podría manipularse por otros y matrices.

El lenguaje está bien establecido dentro del vasto imperio de Google y está ganando aceptación en otros lugares donde los amantes del lenguaje dinámico de Python y Ruby pueden ser inducidos a aceptar algo del rigor que viene con un lenguaje compilado.

Si es un emprendimiento tratando de llamar la atención de Google y necesita construir una cierta lógica de negocio del lado del servidor, Go es un gran lugar para comenzar.

Groovy: Bondad en scripting para Java

El mundo Java es sorprendentemente flexible. Diga lo que quiera acerca de su enfoque de cinturones y tirantes, cómo especificar el tipo para cada variable, terminar cada línea con un punto y coma, y métodos de acceso escritos para las clases que simplemente devuelven el valor. Pero vio que los lenguajes dinámicos ganaron terreno, y construyó su propia versión que está estrechamente integrada con Java.

Groovy ofrece a los programadores la capacidad de echar a un lado todas las convenciones monótonas de soportes y puntos y comas, para escribir programas más simples que pueden aprovechar todo el código Java existente. Todo se ejecuta en la JVM. No solo eso, todo se enlaza a JAR de Java, así que puede disfrutar de su código existente. El código Groovy se ejecuta como un lenguaje de scripting de tipos dinámicos con acceso completo a los datos en objetos Java estáticos.

Los programadores de Groovy piensan que tienen lo mejor de ambos mundos. Está todo el inmenso poder de la base de código Java con toda la diversión de utilizar dispositivos de cierre, la sobrecarga de operadores, y la iteración polimorfa -por no hablar de la sencillez de uso del signo de interrogación para indicar los punteros nulos. Es mucho más sencillo que escribir otra declaración con el fin de probar la nulidad. Naturalmente, toda esta flexibilidad tiende a crear mucha lógica con una pequeña fracción de las pulsaciones de teclado. ¿Quién no puede amar eso?

Por último, todos los programadores de Java que envidiaban la simplicidad de los lenguajes dinámicos, pueden unirse a la fiesta sin salir del ámbito de Java.

OCaml: Complejo malabarista de jerarquía de datos

Algunos programadores no quieren especificar los tipos de sus variables y para ellos hemos construido los lenguajes dinámicos. Otros disfrutan de la certeza de especificar si una variable contiene un número entero, cadena, o tal vez un objeto. Para ellos, muchos de los lenguajes compilados ofrecen todo el apoyo que quieren.

Luego están aquellos que sueñan con jerarquías elaboradas e incluso hablan de la creación de "álgebra" de tipos. Imaginan listas y tablas de tipos heterogéneos que se reúnen para expresar extravagancias de datos complejos, de múltiples niveles. Hablan de polimorfismo, primitivas comparaciones de patrones, y la encapsulación de datos. Esto es solo el comienzo del complejo mundo, altamente estructurado de los tipos, metatipos, y metametatipos que desean.

Para ellos, está OCaml, un esfuerzo serio de la comunidad del lenguaje de programación para popularizar muchas de las ideas antes mencionadas. Hay soporte del objeto, gestión automática de la memoria, y la portabilidad del dispositivo. Incluso hay aplicaciones OCaml disponibles desde la Apple App Store.

Un proyecto ideal para OCaml podría ser la construcción de un sitio Web simbólico de matemáticas para enseñar álgebra.

CoffeeScript: JavaScript lo hace limpio y sencillo

Técnicamente, CoffeeScript no es un lenguaje. Es un preprocesador que convierte lo que escribe en JavaScript. Pero parece diferente porque se está perdiendo mucha de la puntuación. Podría pensar que es de Ruby o Python, aunque en el fondo se comporta como JavaScript.

CoffeeScript comenzó cuando los detractores del punto y coma se vieron obligados a programar en Javascript, porque eso era lo que hablaban los navegadores Web. Cambiar la forma en que funciona la Web habría sido una tarea insuperable, por lo que escribieron su propio preprocesador. ¿El resultado? Los programadores pueden escribir código más limpio y dejar que CoffeeScript lo convierta en el código JavaScript de puntuación pesada que demandan los navegadores Web.

Perder puntos y comas es solo el comienzo. Con CoffeeScript, puede crear una variable sin tener que escribir var. Se puede definir una función sin escribir función o colocarla entre llaves. De hecho, las llaves son prácticamente inexistentes en CoffeeScript. El código es mucho más conciso que se ve como un edificio modernista frente a una catedral gótica. Por ello, muchos de los nuevos marcos de JavaScript se escriben a menudo en CoffeeScript y compilados.

Scala: La programación funcional en la JVM

Si necesita la simplicidad del código de jerarquías orientadas a objetos para su proyecto, pero ama el paradigma funcional, tiene varias opciones. Si Java es su reino, Scala es la opción para usted.

Scala se ejecuta en la JVM, trayendo todas las restricciones de diseño limpio de la programación funcional al mundo Java mediante la entrega de código que se ajusta a las especificaciones de clase Java y enlaza con otros archivos JAR. Si esos otros archivos JAR tienen efectos secundarios y otros dolores de cabeza desagradables imperativos, que así sea. Su código será limpio.

El mecanismo de tipo es muy estático y el compilador hace todo el trabajo para inferir los tipos. No hay distinción entre tipos primitivos y tipos de objeto porque Scala quiere que todo descienda de un todo. La sintaxis es mucho más simple y más limpia que Java; Los aficionados a Scala la llaman "ceremonia de baja". Puede dejar sus nombres largos de variables CamelCase en Java Land.

Scala ofrece muchas de las características que se esperan de los lenguajes funcionales, tales como la evaluación perezosa, la recursión de cola, y las variables inmutables, pero que se han modificado para que funcione con la JVM. Los metatipos básicos o variables de colección, como listas enlazadas o tablas hash, pueden ser mutables o inmutables. La recursión de cola trabaja con ejemplos más simples, pero no con ejemplos elaborados mutuamente recursivos. Las ideas están ahí, incluso si la aplicación puede verse limitada por la JVM. Por otra parte, también viene con toda la ubicuidad de la plataforma Java, y la profunda colección de código Java existente escrita por la comunidad de código abierto. Eso no es una mala compensación para muchos problemas prácticos.

Si tiene que hacer malabares con los datos en un clúster de mil procesadores y tienen mucho código Java legado, Scala es una gran solución.

Dart: JavaScript sin JavaScript

Ser popular no es tan bueno como parece ser. JavaScript se puede utilizar en más pilas que nunca, pero la familiaridad conduce al desprecio -y el desprecio lleva a que la gente busque reemplazos. Dart es un nuevo lenguaje de programación para los navegadores Web de Google.

Dart no es más que una desviación de la idea básica de JavaScript. Funciona en segundo plano para animar a todos los DIVs y objetos de formulario Web que vemos. Los diseñadores simplemente querían limpiar las partes más desagradables, molestas de JavaScript mientras que lo hacían más simple. No podían ir demasiado lejos de la arquitectura subyacente porque querían compilar Dart a Javascript para ayudar a acelerar la adopción.

Lo más destacado puede ser las funciones adicionales que se pliegan en muchas bibliotecas de facto de JavaScript. No necesita jQuery o cualquiera de las otras bibliotecas comunes para modificar alguna parte de la página HTML. Es todo lo que hay con una sintaxis bastante limpia. Además, los tipos de datos más sofisticados y trucos de abreviatura sintáctica ahorrarán unas cuantas teclas. Google está presionando al ofrecer herramientas de desarrollo de código abierto para todas las principales plataformas.

Si está construyendo una aplicación Web dinámica y está cansado de JavaScript, Dart ofrece una sintaxis limpia para la creación de múltiples DIVsllenos de datos de diversas fuentes Web.

Haskell: Programación funcional, pura y simple

Durante más de 20 años, los académicos que trabajan en la programación funcional han estado desarrollando activamente Haskell, un lenguaje diseñado para encapsular sus ideas acerca de los males de los efectos secundarios. Es una de las expresiones más puras de la programación funcional ideal, con un mecanismo de cuidado para la manipulación de canales de I/O y otros efectos secundarios inevitables. El resto del código, sin embargo, debe ser perfectamente funcional.

La comunidad es muy activa, con más de una docena de variantes de Haskell en espera para que usted pueda explorar. Algunas son independientes, y otras se integran con más esfuerzos populares como Java (Jaskell, Frege) o Python (Scotch). La mayoría de los nombres parecen ser referencias a Escocia, un semillero de investigación Haskell, o filósofos/lógicos que forman la procedencia intelectual de muchas de las ideas expresadas en Haskell. Si cree que sus estructuras de datos serán complejas y llenas de muchos tipos, Haskell le ayudará a mantenerlas en orden.

Julia: Lleva la velocidad a la tierra Python

El mundo de la programación científica está lleno de amantes de Python que disfrutan de la sencilla sintaxis y la libertad de no pensar en los detalles retorcidos como punteros y bytes. A pesar de sus puntos fuertes, Python es a menudo exasperantemente lento, lo cual puede ser un problema si está crujiendo grandes conjuntos de datos como es común en el mundo de la computación científica. Para acelerar las cosas, muchos científicos vuelven a escribir las rutinas más importantes en el núcleo en C, el cual es mucho más rápido. Pero eso los deja con software escrito en dos idiomas, y por lo tanto mucho más difíciles de revisar, corregir, o ampliar.

Julia es una solución a esta complejidad. Sus creadores tomaron la sintaxis limpia adorada por los programadores de Python y la ajustaron de tal manera que el código puede ser compilado en el fondo. De esa manera, puede configurar una computadora portátil o una sesión interactiva como con Python, pero cualquier código que cree será compilado inmediatamente.

Las entrañas de Julia son fascinantes. Ellos proporcionan un poderoso motor de inferencia de tipo que puede ayudar a asegurar código más rápido. Si le gusta la meta programación, el lenguaje es lo suficientemente flexible como para extenderse. Las adiciones más valiosas, sin embargo, pueden ser mecanismos simples de Julia para la distribución de algoritmos paralelos en un clúster. Un número de bibliotecas graves ya abordan muchos de los algoritmos numéricos más comunes para el análisis de datos.

La mejor noticia, sin embargo, puede ser las altas velocidades. Muchos puntos de referencia básicos corren 30 veces más rápido que Python y muchas veces un poco más rápido que el código C. Si tiene demasiados datos pero disfruta la sintaxis de Python, Julia es el siguiente idioma a aprender.

Peter Wayner, InfoWorld (EE.UU.)

También puede interesarle: