Principios de programación: la idea (1)
Supongo que tenía veinticinco años cuando tuve la idea de escribir un libro que cubriera en gran parte las áreas de la programación. Pero en ese tiempo yo tenía más ganas que conocimiento, más entusiasmo que disciplina. Adquiría conocimientos dispersos desde lecturas de áreas tan diversas como los lenguajes de programación, los sistemas operativos, las bases de datos, los sistemas distribuidos, la inteligencia artificial… que, aunque beneficioso, puede hacer que pierdas mucho tiempo si no sigues un orden. A pesar de ello, produjo en mí una concepción general de la computación —si pienso en una herramienta, pienso en herramientas similares de otras áreas, o sea, la noción de red: existe una conexión entre todas las partes—, esto, evidentemente, aleja a uno de la especialización, pero, sin perder, las ganas de construir cosas. Pero eso… no es suficiente: es necesario un sistema.
Ganar conocimiento disperso sin un orden, esto es, carecer de un sistema del cual dar sentido a lo que aprendes, no funciona, al menos, no funciona para crear nada novedoso, solo sirve para recitar lo ya dicho.
Algo curioso pasa cuando se analiza un área desde varios ángulos es que uno llega irremediablemente a la filosofía. Pues la filosofía yo la entiendo como la capacidad de abordar cualquier tema desde un punto de vista general, mediante la incorporación de conceptos que respalden esta claridad.
De ahí llegué a la idea-concepto de principios de programación. Un principio es algo que da comienzo a otra cosa más compleja, la raíz en donde algo germina; que, si no lo conociéramos, sería complicado adquirir y dar orden al conocimiento.
Entender la programación en términos de principios da la ventaja de abstraerse de las herramientas de turno. Pero debe ser una abstracción medida. Ejemplo: un principio no puede ser «Abstracción» porque todo en computación trata con la abstracción: se vuelve tan abstracto que pierde el sentido, no dice ni nos ayuda en nada.
El gran problema de la programación es hasta qué punto debemos añadir abstracciones para controlar la complejidad sin que esta se vuelva en contra de nosotros. Es decir, encontrar el punto medio.
En estos momentos estoy en fase de revisión de mi libro Principios de programación.1 Una aventura que comencé a escribir hace un año y medio. Aunque —como dije al inicio de esta entrada— esta empezó hace varios años.
Hay un libro que me permitió dar con la llave para comenzar este proyecto. Este fue Great Principles of Computing de Peter J. Denning y Craig H. Martell, este libro se centra en principios técnicos-históricos de la computación. Un trabajo de erudición extraordinario condensado en trescientas veinte páginas (que recomiendo).
Por otro lado, en mi libro, los principios —aunque parezca paradójico— son al mismo tiempo más generales y particulares con respecto al de Denning y Martell. Más generales porque abarcan principios que no omiten la parte conductual de la programación, no son meramente técnicos. Y más particulares porque se centra en la programación, no en la computación.
Centrarse en la programación y no en la computación, me entrega la capacidad de no escapar de la parte aplicada: el código. En un libro de computación podría prescindir de todo ello.
Así, mi libro se centra en ocho principios de la programación, agrupados en principios técnicos y de conducta. Como se puede ver en la siguiente imagen:
En las próximas entradas iré ahondando en cada uno de los principios, y en los otros temas presentes en el libro que sirven de soporte a estos principios, hasta que el libro esté publicado.
No me canso de agradecer a la editorial Marcombo por confiar en mí. Pues yo sé que un libro estas características sería fácilmente rechazado por otra editorial, por no estar dentro del panorama de libros técnicos comerciales, a saber: «Introducción a Python: nada nuevo» o «Inteligencia Artificial para ambiciosos».