¿Qué hay de malo en esta infografía?

Vean esta infografía y continuen leyendo abajo de ésta.

Which programming language to choose

Ahora, díganme, ¿qué hay de malo en ella? Claro, podemos diferir en opiniones. Esta es la mía.

Primero, hay que tener en consideración el título del poster: “Your First Programming Language.” Alguno lo entenderán como el lenguaje de programación por el cual iniciar el aprendizaje de la programación, otros por el que debe uno dominar y enfocarse en él para hacer carrera. Para mi, por lo que el resto de la infografía contiene es el segundo pero no debe descartarse el primero.

Tengo casi 30 años de experiencia profesional y más desde que aprendí a programar. En mi afición y formación por esta actividad he llegado a usar más de 30 lenguajes, algunos muy raros y pocos conocidos, otros ya olvidados, otros más en boga aún y otros que son la moda hoy en día (incluidos en la infografía). Por 14 años (casi) ininterrumpidos fui responsable de la cátedra de diseño de compiladores y por unos 7 sobre lenguajes de programación en el programa de maestría en ciencias de la informática de la Sección de Estudios de Posgrado e Investigación de la UPIICSA del IPN (donde sigo pero con otras materias). Así que denme el beneficio de la duda sobre lo que expondré y que lo hago con bases.

Los lenguajes de programación mostrados en la infografía  (fuente indicada en ella) son los 10 más usados. No quiere decir los únicos. Antes del cambio de milenio se sabía de la existencia de unos 2000 lenguajes de programación. La cifra debe llegar hoy en día a los 5000. La Wikipedia cita algunos de ellos (y no veo varios de los que he tenido que usar). El título de esta lista dice que son de programación, pero incluye algunos (como el TeX y el PostScript que son de propósito especial y algunas personas pueden no considerarlos como de “programación” del todo) y hay además para muchos otros propósitos (como el HTML) y modelos de programación (muchos se sorprenden que el concepto de las hojas de cálculo pueda ser considerado un modelo de programación y negarlo, pero generalmente se quedan callados al ver que  algoritmos de ordenamiento, por ejemplo, pueden ser implementados empleando el “lenguaje de fórmulas” de la hoja, aquí puede leerse de esto).

El primer punto que debe considerarse es el que no existe (y por mucho tiempo no existirá) un lenguaje de programación (mucho menos un lenguaje en computación e informática) único (y ya se ha intentado, el primer esfuerzo fue el PL/1 y data de 1964). Todos tienen su época y llegarán otros a substituirlos. Así, creer que elegir el lenguaje de programación más popular para especializarse en él y ser el único en manejar podrá funcionar por un tiempo pero a la larga es seguro que se requerirá aprender otro u otros más. Profesionalmente hablando sólo conocer un lenguaje de programación es cerrarse las puertas también.

Un segundo punto es sobre el primer lenguaje de programación a aprender. Aunque no conozco PHP, Ruby y C#, de la lista mostrada en la infografía JavaScript y C serían las mejores opciones, aunque soy de la idea que lenguajes como Pascal o Basic (el tradicional de línea) son aún buenas y válidas opciones. Tratándose de aprender a programar lo que cuenta (y debe buscarse) es el desarrollar el “pensamiento algorítmico” y entender cómo se hace uso de los recursos del computador, no las complejidades del desarrollo de sistemas actuales. Ya una vez que se ha entendido el asunto podemos pasar a lenguajes como los de la lista y otros que no son listados (como del caso de Clojure, que es un Lisp tipo 1 del que escribía hace poco, que corre en la JVM, que puede llegar a convertirse en el lenguaje de facto para el cloud computing, y que se pronuncia como la palabra anglosajona closure) que están ganando terreno rápidamente. Pero al final, este aprendizaje nunca terminará, por lo que ya he mencionado en párrafos anteriores, por lo que un profesional del desarrollo de sistemas debería invertir su tiempo en aprender modelos de programación y no lenguajes. Si aprendes lo que hay detrás de un modelo, casi en automático aprendes a programar en cualquier lenguaje de esa familia, sólo debes familiarizarte con los detalles y el valor agregado del implementador. En otros casos, lo que debe dominarse es una ciencia más que un modelo o lenguaje. Tal es el caso de R, en donde primero uno debe aprender y conocer probabilidad y estadística o, matemáticas en general, como es el caso de Matlab. Realmente en estos la programación es secundario.

 Muchos de mis alumnos en las materias de diseño de compiladores y lenguajes de programación llegaban con la idea de que los “lenguajes modernos” ya estaban aquí y en ellos debían enfocarse. Muchos se preguntaban si realmente debían aprender sobre como diseñar un lenguaje para computación o informática, o si había proyectos de crear nuevos lenguajes y esto valía la pena o era lucrativo. Creo que a la gran mayoría logré darles una perspectiva más amplia de cómo entender esta industria y ciencia, respondiendo afirmativamente y con ejemplos a ambas preguntas.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s