#166 pfff, buena pregunta xD
¿Cuando sacas estos lenguajes, es porque los dominas de antemano, o simplemente por mostrar nuevas cosas al mundo?
J lo acabo de aprender sólo para la kata, pero tiene bastante buena pinta... no como lenguaje de programación (el lenguaje es de los 90 y se nota añejo, no lo recomendaría) sino como "calculadora programable". Una vez te haces a la sintaxis es cómodo y potente...
media =: +/ % #
media 20 30 40
30
¿Cuánto tardarías en definir esa misma función en Java?
El resto de lenguajes sí que los he usado (por ejemplo, GLSL se usa para shaders en videojuegos).
Vi que otra kata se basaba en el brainfuck, y me extraña mucho que alguien programe en eso.
Me imagino que sean lenguajes como mera "curiosidad". Aunque en este caso ya dices para qué se creó.
Brainfuck desde luego que no se usa profesionalmente. Es un lenguaje esotérico y como tú mismo dices es mera curiosidad. Fue pensado, como su nombre indica, por joder Busca lenguajes esotéricos en Google, hay cientos.
J sin embargo no se pensó para eso. J se pensó para ser útil y créeme que tiene su hueco (luego profundizo en esto).
Matlab apareció en los 70, ¿eso quiere decir que no era suficientemente potente para el tema matemático/estadístico (o R), que se tuvo que crear un lenguaje enfocado a ésto?
Define potente: si potente es que se pueden hacer cosas a secas, pues ahora mismo estaríamos programando en ensamblador. Si potente es que se puede expresar mucho en poco espacio, gana J. Si potente es que el paralelismo es fácil de manejar gana Erlang. Si potente es que es fácilmente mantenible, gana Java. Si potente es que se puede ejecutar en miles de dispositivos, gana JavaScript. Si potente es que es fácil componer, gana Lisp...
Haces bien en nombrar MATLAB y R, son lenguajes que van un poco en la misma linea (en concreto J comparte con MATLAB el concepto de matrices, boxing para meter no-escalares, etc.) De hecho el IDE de J también tiene plot, visor de matrices, etc. Pero el enfoque es diferente (solo tienes que ver la sintaxis).
¿Que por qué surgió? Cubre otras necesidades. El mismo código en MATLAB lo hubiera tardado en escribir mucho más. Para tratar arrays/matrices J gana por goleada a MATLAB y a R. El manejo de matrices es sencillísimo y los bucles son implícitos... tiene cientos de operadores sólo para matrices (y todos están generalizados), así que modificar arrays es un placer.
¿Te has fijado en que el game of life no tenía una sola variable? Eso significa que se podría distribuir el cómputo en cien, mil, o un millón de ordenadores sin siquiera tener que tocar el código. Intenta hacer eso con MATLAB
Tampoco podemos comparar el MATLAB del 2012 con el MATLAB de los 70, ¿no? A saber cómo era MATLAB en aquella época.
No llego a entender por qué existen mil lenguajes, cuando normalmente no creo que se trabaje "profesionalmente" con más de 20.
Mal creído. No sabría decirte cuantos lenguajes se usarán profesionalmente pero apostaría a que se cuentan con tres cifras. Existen mil lenguajes porque cada uno tiene su hueco. Esto es algo difícil de ver cuando no has trabajado con el lenguaje, porque no sabes qué te ofrece. Sólo ves el resultado, que es el mismo que en cualquier otro lenguaje.
J no tengo ni idea de si se usa profesionalmente (en su día supongo que sí) pero familiares suyos sí que se usan. CoffeeScript también se usa profesionalmente, y mucho. Es la nueva moda en el mundo web para huir de JS. GLSL como te comento es el lenguaje estándar para programar shaders en videojuegos (que a su vez da lugar a CUDA, un lenguaje pensado para GPGPU). El F# que usó ItNaS en #142 también está pegando fuerte (y Microsoft está haciendo auténticos esfuerzos por publicitarlo para .NET). No sé, hay miles, si sigo no paro.
Por otro lado muchos otros lenguajes están pensados por pura experimentación, para probar alguna nueva funcionalidad, para obtener un nuevo enfoque. No habría Java sin C++, ni C++ sin C, ni C sin B, ni B sin BPL, ni...
Si nos quedamos con lo que tenemos... ¿cómo avanzamos? ¿Qué hubiera pasado si todos los creadores de lenguajes hubieran pensado "para qué tanto lenguaje"? Estaríamos programando en tarjetas perforadas.
Además, créeme que aprender lenguajes nuevos te abre otros puntos de vista. El que sólo ha programado Java no puede ver el mundo si no es con clases. Para el que sólo ha programado en C el mundo son punteros. Echa un vistazo al hilo de programación funcional sobre qué te pueden ofrecer nuevos lenguajes.