¿Qué encontrarás en este post?
ToggleEl lenguaje de programación AWK de Brian Kernighan
Uno de los lenguajes de programación más interesantes que existen tiene el extraño nombre de AWK. Son las siglas de los apellidos de sus tres creadores: Aho (pobre hombre…), Weinberger y Brian Kernighan.
AWK es solo una de las muchas aportaciones de Brian Kernighan a la informática y, tal vez, la menos conocida e insuficientemente apreciada.
AWK es muy distinto a la mayoría de los lenguajes de programación que se usan hoy en día y estaba muy adelantado a su tiempo. ¡Se creó allá por 1977! Es una herramienta magnífica para tratar y transformar datos que están en formato tabular, ya sean listas o tablas. Tal vez la mejor forma de describírselo a un neófito es como una hoja de cálculo sin interfaz gráfica.
Si Excel se te queda corto, prueba AWK
Estoy convencido de que si usas mucho Excel y se te está quedando corto, en vez de aprender Python, tal vez antes deberías echarle un vistazo a AWK. Seguramente te resulte más fácil adaptar tu mente exceliana a AWK que a un lenguaje más genérico, como es Python. Estoy tan convencido de ello que voy a escribir un tutorial precisamente para eso: pasa del nocode de Excel al lowcode de AWK.
Pero no divaguemos y volvamos a Brian Kernighan y AWK.
AWK tiene un problema: UNICODE
Solo hay un problema. AWK se creó pensando en manejar sobre todo datos de texto, no tanto números. Sin embargo, hay algo más grave: AWK no estaba capacitado para manejar texto en lenguajes que no usaran el alfabeto latino (es una simplificación enorme; si sabes de lo que estoy hablando, no te cabrees).
La forma estándar de representar texto ha cambiado desde 1977. Ahora se utiliza un estándar llamado UNICODE, que es lo que permite tener símbolos no latinos como los del japonés, chino, hebreo y los omnipresentes emojis.
El que AWK no supiese manejar UNICODE introduce una serie de complicaciones nada triviales y que sería demasiado rollo explicar aquí.
La solución parece evidente: ¡añadámosle soporte UNICODE a AWK! Hay un inconveniente: UNICODE es muy complejo y es un coñazo supino manejar sus tripas, así que lógicamente no aparecía ningún voluntario para acometer una tarea capaz de inducir el sueño cataléptico en la mente más despierta y motivada.
Brian Kernighan has entered the chat
Este verano, se nota que nuestro héroe (¡que es un octogenario y debería llevar más tiempo jubilado que tú programando!) debía de aburrirse, ya que publicó un pull request que ¡añade soporte UNICODE a AWK!
Recordemos que se trata de un señor de 80 años, que en su carrera nos ha brindado:
- Unix.
- El lenguaje de programación C.
- Los algoritmos Lin-Kernighan y Kernighan-Lin (sí, son dos distintos y sé que es confuso).
- El lenguaje de programación AWK.
- El lenguaje de programación Go.
No sé por qué razón cree que aún nos debe algo más…
Según Mr Kernighan, el código funciona perfectamente, aunque no le vendría mal algunos tests más. ¡Ah! De paso, añadió soporte para ficheros CSV.
Después de que tantos dioses de la informática nos hayan dejado en estos últimos años, como Dennis Ritchie, Brad Cox y otros, es todo un privilegio poder ver trabajar a gente así.
Quiero ser como Brian Kernighan
Dado el currículum del amigo Brian, veo difícil que a los 80 logre parecerme a él. Al menos en algo sí puedo decir que estoy a la altura y que tengo en común: a mi código también le vendría bien algo más de tests. Algo es algo.