El Futuro de los Lenguajes de Programación (Capítulo 1): Control, poder y confianza

Entre un anuncio y otro del PDC, comenzaré con la “Serie Filosófica” que os prometí llevar a cabo durante esta semana. Puesto que lo prometido es deuda, ahí va la primera entrega…

Seguro que muchos de vosotros habréis pensado en numerosas ocasiones acerca de estos tres términos: “control”, “poder” y “confianza”. Al igual que vosotros, yo también he pensado, luego existo (probablemente en un lugar cercano a 0xFF4A7C dentro del LR, aka, Life Runtime)

Preguntad a cualquier desarrollador con bastantes años de experiencia (o a vosotros mismos) y seguramente será capaz de recordar el momento exacto en que tuvo que renunciar a cierto nivel de control a cambio de adoptar un lenguaje de programación de más alto nivel. Si alguno de vosotros comenzó a escribir sus programas en lenguaje ensamblador, en algún momento tomaría la decisión de dejar de ser Todopoderoso y darle a algún compilador como el de C la oportunidad de tomar el control sobre ciertas secuencias de instrucciones del lenguaje máquina generado. Si por el contrario comenzaste directamente escribiendo código en C, en algún momento darías el brazo a torcer y asumirías que conocerlo todo, todo y todo acerca de cada puntero resulta interesante en muchos aspectos pero a pesar de ello no es una de las pautas más recomendables para llevar un ritmo de vida sano, feliz y socialmente aceptable. Fue en ese momento cuando decidiste aportarle un “plus” a tu vida como desarrollador, o más bien dos, y comenzar a sacar partido de las ventajas del lenguaje C++. Finalmente, decidiste dejar las cuestiones relativas a la gestión de memoria en manos de tu compilador, de igual modo que cuando te marchas de vacaciones le dejas las llaves de casa al vecino para que riegue tus plantas, y en función de donde vivas tu vecino se llamará Visual Basic, C# o Java, por citar algunos.

Aquellos programadores capaces de llevar a cabo esta transición de manera satisfactoria son los que antes o después tuvieron que abordar una cuestión existencial en la vida del Ser Humano, y los lenguajes de programación como conjunto de reglas y modelos para la representación de una realidad no han sido ajenos a este fenómeno: En muchas áreas del conocimiento humano, la pérdida de control sobre los hechos se traduce irremediablemente en una pérdida de poder sobre las decisiones que los guían.

Afortunadamente en la materia de estudio que nos ocupa en esta serie, esta ecuación no se cumple. Por varios motivos: el primero de ellos, sacrificar cierto nivel de control sobre nuestros programas es siempre una elección nuestra; y en segundo lugar, dicho sacrificio se ve compensado por un incremento en potencia expresiva y productividad. Expresándolo en términos más cotidianos, diremos que tras cada una de las transiciones de un lenguaje a su inmediato superior en nivel de abstracción, comentadas en el segundo párrafo, éramos capaces de alcanzar los mismos objetivos, con menor cantidad de código. De este modo, las eventuales pérdidas de rendimiento que se puedan producir, entre la optimización realizada ad-hoc por el programador ante cada fragmento de código y las optimizaciones genéricas automatizadas por parte del compilador, se veían compensadas con una considerable mejora en los niveles de fiabilidad y mantenibilidad (expresándolo en términos puristas diremos que la gráfica evolutiva que representa esta ecuación se aproxima a la universalmente conocida Ley de Moore)

La cuestión clave que estamos asumiendo aquí nos lleva al tercer término de los citados en el título del post: confianza. Deberemos depositar nuestra confianza en el compilador de turno, de la plataforma de turno, que nos ofrezca esta simplificación. Es decir, garantizaremos los niveles de fiabilidad y rendimiento de nuestras aplicaciones basándonos en dichos compiladores, en su fiabilidad y en su rendimiento a la hora de llevar a cabo la tarea para la cual fueron designados (simplificar la nuestra!).

En el fondo, lo que estaremos haciendo es depositar nuestra confianza en los desarrolladores de dichos compiladores, en su integridad, profesionalidad y habilidades como Ingenieros. Afortunadamente, podemos presumir de una buena salud en este punto, de profesionales altamente cualificados desarrollando compiladores y herramientas al servicio del resto de profesionales… y, en última instancia, ante eventuales fallos deberemos empujar en la misma dirección que ellos. ¿Cuál es esta dirección? Vertical. ¿En qué sentido vectorial? Hacia arriba… ¿Respecto a qué magnitud? Nivel de abstracción. ¿Y qué es la abstracción? Como he tratado de dejar patente a lo largo de este post, la abstracción, amigos míos, es ignorancia selectiva.

3 comentarios en “El Futuro de los Lenguajes de Programación (Capítulo 1): Control, poder y confianza”

  1. Yo soy de aquellos que pasaron del C a VB y me siento muy pero que muy satisfexcho, adios a los punteros y a las sesiones de debug por 1 misdero byte mal dimensionado!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *