juan reyero

Aprender a programar

p1040094

Mencionaba el otro día un curso del MIT para aprender a programar usando Python. El curso está muy bien —algunos de los ingenieros de mi equipo lo están disfrutando— pero para realmente aprender a programar hace falta algo más.

Programar tiene algo de arte, y como arte tiene un componente estético. Un buen programa, una buena implementación, un algoritmo bonito, puede emocionar.

Aún cuando pocos llegan a dominar el arte, y la creatividad es elusiva, apreciarlo y disfrutarlo está al alcance de muchos. Un libro clásico para aprender a programar es Structure and Interpretation of Computer Programs, de Abelson y Sussman, conocido normalmente por las iniciales SICP. Este libro extraordinario, lleno de auténticas perlas y accesible <em>on-line</em>, es el texto de un curso que Abelson y Sussman ofrecen en el MIT, y que puedes bajarte en vídeo. Pero no a todo el mundo le gusta: el análisis que hace Peter Norvig de los posibles motivos resulta revelador, y puede ayudarte a decidir cómo invertir tu tiempo.

Peter Norvig: programador mítico, autor, entre otros, de Artificial Intelligence: A Modern Approach (otro gran libro sobre programación, y un clásico en su campo), director de investigación y desarrollo en Google, y el autor de Teach Yourself Programming in 10 Years, un ensayo que hay que leer si tienes interés en aprender a programar (o en aprender cualquier otra cosa).

Más libros que vale la pena leer:

  1. Programming Pearls, de Jon Bentley, es un compendio de ejemplos de código bonito e ideas brillantes. Por lo visto ha sido "reinventado" en la segunda edición. No sé cómo será la reinvención: el original era brillante.
  2. On Lisp es un tour de force por algunos de los conceptos más bonitos —y más poderosos— con que se puede encontrar un programador, por Paul Graham (otro gran programador y ensayista extraordinario). Son ideas muy poco conocidas, porque muchas de ellas sólo se pueden expresar el Lisp y relativamente poca gente sabe Lisp (lamentablemente). Por cierto, y sobre el Lisp:

Lisp has jokingly been called ‘the most intelligent way to misuse a computer’. I think that description is a great compliment because it transmits the full flavor of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts.

  • Edsger Dijkstra, CACM, 15:10
  1. Por último, si te interesa la gestión de programadores (y de equipos en general) un clásico que hay que leer es The Mythical Man-Month, de Fred Brooks.

Hay mucho más: ANSI Common Lisp, de Paul Graham, y sus muchos ensayos; Practical Common Lisp, de Peter Seibel; casi todo lo que publica O'Reilly; y The Art of Computer Programming, de Donald Knuth, para entender los fundamentos matemáticos de la programación.

Los libros te darán pistas y te mostrarán el camino, pero si realmente quieres aprender tienes que practicar. Cuando lleves diez años haciéndolo te saldrá bien a menudo.

Juan Reyero Barcelona, 2009-02-12
 

blog comments powered by Disqus