Eligiendo un lenguaje

Domingo 18 de Marzo de 2007

Ya dije que no me gusta Ruby, ni Java, ni ASP, ni C#, ni VB.net. Más que nada (al menos Java y C#, de los demás no vi más que un par de líneas) porque son innecesariamente complejos para hacer las tareas más simples (aunque para las más complejas pueden simplificar el trabajo); no por esto son malos, simplemente me parecen incómodos cuando todo lo que quiero es abrirlo, escribir unas lineas, ver el resultado, y salir.

Lisp y Python son lenguajes interpretados (aunque Lisp permite compilar sus funciones), así que en lugar de trabajar con archivos de texto que desupués compilamos, tenemos un entorno —una línea de comandos— donde inmediatamente de escribir el código, éste se ejecuta y devuelve un resultado.

Hay tantas formas de programar como programadores multiplicados por lenguajes… yo no soy quien para decir “Nunca uses el lenguaje X porque no te va a gustar“.

Además de los lenguajes “normales” hay otros llamados esotéricos: lenguajes que, aunque (a veces) Turing completo (una definición completa que mejor dejamos para otro día, pero basta decir que en cualquier lenguaje Turing completo se puede hacer cualquier cosa que se pueda computar) tienen una sintaxis —una forma de escribir— que hacen de escribir cualquier proyecto mediano (incluso un “¡Hola, Mundo!” en algunos) algo casi imposible. Por ejemplo, Brainfuck, uno de los más famosos, consiste de sólo 8 comandos de un caracter (<, >, +, -, ., ,, [, y ]) que operan sobre un arreglo de celdas de memoria (la “cinta”). Como es Turing completo, cualquier programa que se pueda hacer en cualquier otro lenguaje, se puede hacer en Brainfuck (y viceversa)… aunque no es necesariamente práctico (o sabio).

En la programación existe un triángulo1, que tiene en sus tres vértices la Velocidad (o tiempo de procesador), el Espacio (o memoria), y el Tiempo de Programador (inverso al precio del programa). Todo programa, forma de programar, y lenguaje cae en algún lugar del triángulo, y de cada programador depende encontrar el lugar donde está más cómodo.

Mi recomendación: empiecen con algo “fácil”, como Python (que es fácil, pero no simple), y cuando se sientan cómodos prueben otros paradigmas (orientación a objetos, a aspectos, programación funcional…) y lenguajes. Nunca digan “Ya sé suficientes lenguajes”; aprender un lenguaje nuevo que tenga alguna limitación sirve para aprender a pensar diferente.

Si todo lo que tenés es un goto, un for parece innecesario.

1.— Bueno, en realidad dos.. el otro es Rápido, Bien y Barato; elegí 2.

Si te interesa lo que tengo para decir, seguime en Twitter.

Dejá tu comentario, o un trackback desde tu sitio. Podés seguir la conversación con el Feed de comentarios de este post.

Comentá:

Entrá con tu cuenta, registrate, o escribí tus datos:

XHTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">