miércoles, agosto 15, 2007

La paradoja de blub

En un excelente artículo: Beating the Averages Paul Graham introduce la paradoja de Blub, un argumento con el que no puedo estar más de acuerdo.
Ciertamente los casi todos los lenguajes de programación son turing completos, así que son teóricamente equivalentes, sin embargo, intuitivamente hablando, se puede apreciar que un lenguaje como Perl5 que incluye clausuras se percibe como más poderoso que Perl4 que no las tiene.
En efecto, el lenguaje de máquina es tan poderoso como los lenguajes de alto nivel, de otra manera no se podrían hacer compiladores, y aunque se acepta que existen lenguajes de bajo nivel y lenguajes de alto nivel, no parece haber una idea clara de que hay lenguajes de más alto nivel que otros.
Para no herir los sentimientos de nadie, Paul Graham se inventa un lenguaje ficticio llamado Blub para establecer su paradoja:
Mientras el programador mira hacia los lenguajes de menor poder, sabe que está viendo hacia abajo. Los lenguajes de menor poder que Blub son obviamente menos poderosos, porque faltan capacidades a las que nuestro programador está acostumbrado. Sin embargo, cuando mira en la otra dirección, hacia lenguajes más poderosos, ni se imagina lo que está viendo. Él solo ve lenguajes extraños y probablemente los considere equivalentes en poder a Blub, pero mezclado con todas esas cosas peludas. Así que concluye que Blub es suficientemente bueno para él, porque el piensa en Blub.
Si ahora cambiamos el programador por otro que trabaje en un lenguaje más poderoso que Blub, encontraremos que cuando mire hacia abajo a Blub pensará: ¿cómo se puede hacer algo en este lenguaje? que ni siquiera tiene X.
Por inducción, los únicos programadores en capacidad de ver todas las diferencias de poder entre varios lenguajes son los que entiendan el lenguaje más poderoso.

Esta conclusión tiene profundas implicaciones en vista de que los lenguajes más populares de programación de hoy en día, y particularmente Java, son lenguajes poco poderosos, por ello podría ser difícil lograr un cambio importante en los lenguajes de programación en uso.

No hay comentarios.: