Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

viernes, 25 de febrero de 2011

Políglotas

En la anterior entrada del blog mencionaba lo interesante que resulta –a mi parecer– poseer un perfil profesional en el que, aunque nos hayamos especializado en una determinada materia o tecnología, dominemos un amplio espectro de conocimientos. A lo largo de los años las distintas batallas diarias nos hacen ver cómo hasta lo que menos podríamos imaginarnos nos ayuda a resolver un determinado problema. En muchas ocasiones son, en efecto, estos conocimientos que podríamos denominar periféricos los que nos ayudan a dar con la solución que andamos buscando.

Mientras escribía sobre la especialización y la diversificación recordaba un artículo escrito hace unos años por Paul Graham en su blog, “Beating the Averages”, en el que hacía referencia a “La paradoja de Blub”. Si no la conocéis, os invito a leer el artículo completo de Graham y, de cualquier modo, aquí presento un escueto resumen de la mencionada paradoja.

La Torre de Babel

Supongamos que Blub es un hipotético lenguaje de programación de propósito general que nos permite resolver diversos tipos de problemas y para el que existen, al menos, un lenguaje menos potente que él y otro que lo es más. Imaginemos a un programador de Blub que, por ejemplo, conoce la existencia del ensamblador y del lenguaje Pascal. Para nuestro desarrollador está claro que el ensamblador no es lo suyo (para eso están los compiladores) y, desde la perspectiva de Blub, Pascal no aporta mucho más que una sintaxis desconocida para él y, aunque desconoce a qué corresponde tal o cual función de Blub, intuye que Pascal no le aporta demasiado. También ha visto algo de Java, un lenguaje que, en este caso, es más potente que Blub, pero dado que “piensa en Blub”, no es capaz de apreciar la potencia de Java como lenguaje. Es decir, que si bien nuestro programador es capaz de, mirando “hacia abajo”, darse cuenta de esos lenguajes son inferiores a Blub, su desconocimiento hace que sea incapaz de mirar “hacia arriba” y apreciar las ventajas de otros lenguajes más potentes.

Esta paradoja fue usada por Graham para ilustrar la relación existente entre diversos lenguajes de programación y la completitud de Turing y, en particular, para hacer ver lo difícil que resulta comparar dos de ellos entre sí cuando no se conoce alguno de ellos en profundidad.

Volviendo al tema de la anterior entrada, cuanto más amplio y diverso sea nuestro perfil, mejor preparados estaremos para solucionar los problemas que se nos presenten por delante y más acertadas serán nuestras decisiones sobre qué tecnología o qué herramientas usar para construir la solución pensada. E incluso para elaborarla, por qué no. Quienes dominan varios idiomas y mejoran sus conocimientos filológicos son capaces de inferir el significado de un mensaje emitido en un idioma extraño para ellos si es afín a alguno de los que conocen, e incluso afirmar si uno de ellos ha más evolucionado que el otro desde una raíz común o si deriva de aquel. Con los lenguajes informáticos ocurre otro tanto: aunque la mayoría de ellos permite ofrecer soluciones teóricas a los problemas con que nos encontremos, algunos permitirán ponerlas en práctica de un modo más eficiente, ya sea por la plataforma sobre la que se sustentan o por el enfoque que posee el propio lenguaje.

Lo anterior, que parece de Perogrullo, no debe de serlo tanto cuando a lo largo de los años me he encontrado con gente tan acérrima seguidora de un determinado lenguaje o familia de tecnologías (“Jafa forever”, “Microsoft a muerte”, …) que era incapaz de admitir que montar un CMS para gestionar un blog era más rápido y eficiente usando PHP que Java sobre un Apache Tomcat o que, a largo plazo, un ERP en .NET Framework sería probablemente más fácil de mantener y extender que de hacerlo en Python, por ejemplo. Aunque a priori un desarrollador de Bulb tendrá listo su programa en menos tiempo si lo hace en “su” lenguaje antes que en otro que no domine, a largo plazo sus decisiones y forma de programar estarán supeditadas a aquello que le es familiar, y cuanto más estrecho sea su campo de visión más limitadas estarán sus propuestas.

Lo expuesto, por supuesto, sería extensible a multitud de aspectos de nuestra profesión, y no solamente a la programación. Y, “aunque los experimentos haya que hacerlos con gaseosa”, no es menos cierto que de vez en cuando no está de más ser un poco innovador y abrirse a nuevas experiencias. Además, resulta divertido.

Propongo así ser políglotas tecnológicos.

2 comentarios:

  1. Hacía tiempo que pensaba como tú, me alegro de encontrar a alguien más que acepta que en la informática, ser programador significa saber que debes programar en CUALQUIER lenguaje, me encanta la palabra "políglota", yo me empezaba a llamar a mí mismo multiprogramador viendo que los programadores comunes se aferran a un único lenguaje defendiéndolo a toda costa como si su vida dependiera de ello xD
    Con lo bonito que es coger un nuevo lenguaje y mirar las 4 cosas básicas para empezar a programar...ahora mismo estoy decompilando una aplicación de iOs para saber como asocia datos de dos tipos de fuentes de datos distintas, en ASM las etiquetas que el compilador XCode intenta ofuscar son recuperadas por un programa como IDA por lo que tanto secretismo es desvelado, bueno te dejo, que tengo que aprender Objective C :)
    un saludo y gracias por compartir tus pensamientos con nosotros

    ResponderEliminar
  2. Bienvenido al blog, Juaxix, y gracias por tu comentario.

    Estoy completamente contigo en lo interesante e instructivo que resulta aprender nuevos lenguajes, descubrir nuevos puntos de vista. A mí, encima, me da por las "lenguas muertas" de la programación (aunque algunas no lo son tanto) como Forth.

    He visto en tus blogs que compartimos ciudad (aunque ahora resida en Málaga soy de Granada) además del gusto por la informática. Los sigo.

    Saludos.

    ResponderEliminar