#12 Sobre Lisp...
Tenemos nil, el hecho de poder usar HOF y una implementación lambda con una sintaxis rarísima. Al margen de eso, nada más. No es homoicónico, la sintaxis no es regular y por lo tanto careces de macros.
Es más, diría que Perl es más parecido a Lisp que Ruby. En Ruby tienes bloques, lambda, procs... En Perl únicamente SUB a lo Scheme. No hace falta más. Ah, y Perl tiene listas, de las de verdad.
Sobre Smalltalk...
El envío de mensajes está roto.
No puedes recibir todos los mensajes que se le envía a un objeto.
Dice que todo es un objeto, pero no es cierto. ¿Un bloque es un objeto?
Sobre Perl...
No dispone de tantas variables especiales globales.
El "do what I mean" está roto. No puedes hacer "2" + 2, o al menos no cuando lo usaba.
El stack se consume a una velocidad de vértigo, sólo lo supera Oz.
No tiene TCO, en Perl se puede simular con GOTO modificando el stack @_;
¿Librerías? CPAN se ríe en Rubygems o como se llame, no sólo en cuanto a la implementación en sí, sino en la calidad y cantidad de librerías disponibles.
Su sistema de objetos queda a la altura del betún si lo comparamos con Moose (Perl) o CLOS (Common Lisp). No tiene multimétodos y es únicamente single-dispatch.
Una nueva línea equivale a una nueva entrada. Esto es horrible a la hora de parsear. ¿Tanto cuesta escribir ";"?
DO END en lugar de { }. ¡Qué gran innovación!
Ruby: [1, 2, 3].inject(0) {|acc, n| sum + n} vs Perl: reduce { $a + $b }. Nada más que decir.
La documentación de Ruby está a años luz de perldoc.
No tiene POD. RDoc es una mierda.
Perl tiene mejor soporte UNICODE.
Perl tiene mejor soporte para hilos, concurrencia y co-rutinas (Coro).
En cuanto a one-liners desde la terminal, Perl > bash + sed + awk >> Ruby.
Existen más formas de manipular un iterador FOR en Perl que en Ruby.
Perl soporta más paradigmas porque no tiene ningún petardo detrás dirigiendo todo, como es el caso de Python y Ruby.
Más cosas...
Su implementación es una basura, hay fragmentación y las versiones posteriores no son compatibles con otras. 1.9.2, 1.9.1, 1.8.7... Nadie sabe qué usar y para colmo esta actitud se contagia al resto de librerías y módulos, donde generalmente a cada nueva versión la lían parda en temas de compatibilidad hacia atrás. Especialmente sangrante es el caso de Rails. Luego si quieres (tienes) tener en una misma máquina varias versiones de Ruby tienes que utilizar RVM que es una castaña.
Perl y Java, en cambio, en este aspecto son ejemplos a seguir.
Resumiendo, es un sumatorio de Perl--, Lisp-- y Smalltalk--. No ha traido al mundo absolutamente nada nuevo. Habrá a quien le guste y se sienta agusto utilizándolo haciendo sus webs de mierda desde su Mac Book Air en el Starbucks de la esquina, pero a mi personalmente me parece un simple juguete.
Hay más cosas en un lenguaje a parte de la sintaxis, aunque no lo parezca. Python y Ruby han hecho un buen trabajo ganando adeptos insultado a Perl y su sintaxis, pero existe una razón por la cual en casi ningún banco o empresa donde la seguridad sea vital te van a dejar utilizar en producción ninguno de estos lenguajes de hippies, pero sí verás Perl, Java, C++ y poco más.
Pero claro, queda muy guay hacer coñas sobre Perl... Claro que no es un lenguaje perfecto, su diseño es una aberración a la altura de C++, pero que sean precisamente los niñatos de Python y Ruby los que más arremeten contra él es cuanto menos irrisorio.