Esta es, por
supuesto, la habilidad fundamental del hacker. Si no conoces ningún
lenguaje de programación, recomiendo empezar con Python. Es limpio, bien
documentado, y relativamente fácil para novatos. A pesar de ser un buen
primer lenguaje, no es un juguete; es muy poderoso, flexible y se adapta
bien a grandes proyectos. He escrito un detallado análisis de Python. Hay disponibles buenos tutoriales en el sitio
web de Python.
Java es tambien un buen lenguaje para iniciarse en la programación.
Es más difícil que Python, pero produce código más rápido que Python. Creo
que es un buen segundo lenguaje para aprender.
Pero no creas que podrás ser un hacker, siquiera un programador, si
solo conoces un único lenguaje —debes aprender cómo pensar en los
problemas de programación de una manera general, independiente de
cualquier lenguaje. Para ser un hacker de verdad, precisas llegar al punto
en el cual aprendas un lenguaje nuevo en días, relacionando lo que está en
el manual con lo que ya sabe de antes. Esto significa que debes aprender
varios lenguajes muy diferentes entre sí.
Si deseas meterte seriamente en programación, tendrás que aprender
C, la base de Unix. C++ es muy parecido a C; si conoces uno, aprender el
otro no te resultará difícil. Sin embargo, ninguno de ellos es bueno para
aprender a programar. Y hoy día, cuanto más puedas evitar programar en C,
mas productivo serás.
C es muy eficiente, y trabaja bien con los recursos de las
maquinas. Desafortunadamente, C obtiene su eficiencia a base de mucho
manejo a bajo nivel de los recursos (como la memoria) a mano. Todo esa
programación a bajo nivel es muy compleja y propensa a errores, y tendrás
que dedicar gran cantidad de tiempo a la depuración de los programas. Con
las máquinas de hoy, tan poderosas, esto ya no es tan necesario —es más
inteligente usar un lenguaje que use el tiempo de máquina menos
eficientemente, pero en cambio use tu tiempo más eficientemente. O sea,
Python.
Otros lenguajes de particular importancia para los hackers son Perl y
LISP.
Perl vale la pena aprenderlo por razones prácticas: es amplísimamente
usado por páginas web dinámicas y por sistemas de administración, así que
incluso si nunca has escrito en Perl, deberías aprender a leerlo. Mucha
gente usa Perl en la forma que yo sugiero usar Python, para evitar la
programacion en C en trabajos que no requieran la eficiencia de C.
Necesitarás ser capaz de entenderlo.
Vale la pena aprender LISP por una razón diferente — La profunda e
iluminadora experiencia que obtendrás cuando finalmente lo logres te hará
ser mejor programador el resto de tus días, incluso si no usas LISP mucho.
(Puedes obtener fácilmente algo de primera experiencia con LISP
escribiendo y modificando los modos de edición del editor
Emacs.)
Lo mejor hoy día es aprender estos cinco (Python, Java, C/C++, Perl
y LISP). Además de ser estos lenguajes los mas importantes en el hacking,
representan muy diversas formas de aproximarse a la programación, y cada
uno te educará de diferentes maneras.
No puedo dar instrucciones completas en este documento de cómo
puedes aprender a programar —es una habilidad compleja. Pero puedo
adelantarte que los libros y los cursos no servirán (muchos, tal vez la mayoría de los mejores
hackers, son autodidactas). Puedes aprender las características de los
lenguajes —partes de conocimiento— de libros, pero el verdadero
conocimiento lo adquieres en la vida real aplicando lo que ya sabes. Lo
que sí servirá es a) leer código y b) escribir
código.
El aprendizaje de la programación es como aprender a escribir bien
en lenguaje natural. La mejor manera de aprender es leer algo de las cosas
escritas por los maestros del estilo, luego escribir algunas cosas tú
mismo, leer mucho más, escribir un poco más... y repetir esto hasta que lo
que escribes empieza a mostrar la clase de fuerza y economía que aprecias
en tus modelos.
Antes era difícil encontrar código de buena calidad para leer,
porque había pocos programas de cierta magnitud disponibles en código
fuente de tal manera que los hackers noveles pudieran meterles mano. Esta
situación ha cambiado drásticamente: software de fuente abierta,
herramientas de programación libres y sistemas operativos libres (todo
ello hecho por hackers) están ampliamente disponibles en la actualidad. Lo
que me lleva elegantemente a nuestro siguiente tema...