Nos complace presentar un nuevo proyecto en colaboración con IbolCode.net al que hemos bautizado: El solucionario del Programador GNU/Linux. Se trata de un libro sobre programación básica usando los lenguajes más útiles hoy en día, el cual publicaremos como capítulos semanales.
La idea surgió hace ya un par de años. En mi trabajo la mayoría del tiempo utilizo un único lenguaje de programación pero, de vez en cuando, que escribir pequeños programas en distintos lenguajes de programación por distintas razones: necesito un script para automatizar algo, o las librerías para acceder a un cierto servicio solo están disponibles para ciertos lenguajes, o simplemente es más fácil usar ese otro lenguaje.
Lo que me sucedía, al menos a mi, es que cada vez que tenía que hacer
uno de esos programas, me llevaba un buen rato volver a recordar la
sintaxis del lenguaje. ¿Cómo se escribía un if? ¿Cómo se
declaraba una función?… No es que fuera un gran problema, pero
básicamente tenía que buscar la misma cosa una y otra vez en Internet,
así que decidí poner todo eso junto en un único lugar que pueda
consultar rápidamente y con un simple vistazo refrescar como se
utilizaba ese lenguaje de programación.
Algo más que sintaxis
Si bien, el proyecto comenzó como acabo de describir, una vez que tenía el primer borrador, el cual simplemente contenía un pedazo de código por capítulo y por lenguaje (lo suficiente para refrescar la sintaxis), pensé que estaría bien añadir una breve explicación de algunas cosillas y que el libro fuera útil también para aquellos que están aprendiendo a programar.
Así que me puse a ello y la verdad es que aún estoy en ello. El borrador actual tiene unas 250 páginas y todavía estoy revistando y ampliando el capítulo dos, pero como cada capítulo lo programamos usando 18 lenguajes de programación… a sección por semana, tenemos contenido ya para 18 semanas, así que es buena idea empezar a liberarlo ya y obtener comentarios lo antes posible.
18 Lenguajes
Como os acabamos de comentar, el libro consiste en 7 capítulos (al menos por el momento). En cada capítulo se propone un programa de ejemplo y se implementa en 18 lenguajes de programación, aprovechando el código de ese programa para ir introduciendo los elementos básicos de cada lenguaje. Quizás os estaréis preguntando que lenguajes os vais a encontrar, en seguida os lo contamos.
Vamos a dividir la lista en dos bloques. Los clásicos y los jóvenes.
Los clásicos
Incluimos unos cuantos lenguajes que tienen unos añitos ya, pero que, por una cosa o por otra, siguen siendo utilizados y conocerlos, aunque solo sea un poquito es una ventaja interesante. Esta es nuestra lista:
- C. C se puede considerar el padre de todos los lenguajes. Es el lenguaje de alto nivel de más bajo nivel y aún a día de hoy, cuando se trata de conectar con otros elementos, ya sean hardware o software, la forma principal de hacerlo es usando el lenguaje C
- C++. Junto con C sigue siendo la opción preferida para aplicaciones que tienen que funcionar muy rápido
- Objective-C: Al tratarse de un super-conjunto de C, todo el código C es compatible con Objective-C si bien, incorpora sus propias popularidades. Es uno de los lenguajes oficiales para plataformas Apple.
- Perl: Se trata de uno de los lenguajes de script más veteranos que ha ido perdiendo tirón en los últimos años. Sin embargo, el intérprete de Perl está todavía disponible por defecto en la mayoría de sistemas UNIX ya que existen utilidades programas en este lenguaje que siguen en uso. Es raro que alguien use este lenguaje para un nuevo desarrollo, pero no es nada raro que tengáis que lidiar con alguna aplicación existente que lo use. Además, es uno de los lenguajes más molones que existen.
- Python : Quizás es el lenguaje de script más popular a día de hoy, especialmente por haber sido elegido por la mayoría de plataformas de Inteligencia Artificial desde hace algunos años. Se trata de un lenguaje muy potente y que ofrece una amplia variedad de librerías que nos permiten hacer casi cualquier cosa de forma muy sencilla.
- Ruby: Ruby nunca fue un lenguaje super popular pero su elegancia merece nuestra atención. Además Ruby es el lenguaje seleccionado por el framework Metasploit que tanto le gusta a los aprendices de hackers, lo cual le asegura un pequeño e interesante nichho.
- Bash: Que podemos decir?. Tarde o temprano tendréis que escribir un script en bash para automatizar algo en vuestro sistema, por no hablar de todos los que están ya instalados en él. Completamente imprescindible
- TCL. TCL es quizás el más veterano de todos los lenguajes que vamos a utilizar. Fué muy popular hace años, especialmente cuando se usaba en combinación con TK, un toolkit gráfico que hacía la programación de GUIs muy sencilla. TK todavía pervive en librerías como Tinker para Perl o Python.
- Ada. Algunos quizás no lo conozcáis, pero se trata de un lenguaje extremadamente potente y elegante el cual todavía se utiliza hoy en día en aplicaciones críticas, especialmente en los sectores espaciales y de defensa. Merece la pena tener una idea de que pinta tiene.
- Ensamblador. Al final decidimos incluir ensamblador en la lista simplemente para mostrar la complejidad que esconden programas relativamente sencillos en ciertos lenguajes de programación. Algo tan sencillo como comparar una cadena de caracteres puede ser un simple operador en un lenguaje, una función en otro, o todo un pequeño programa en ensamblador.
Los Jóvenes
Si bien, algunos de los lenguajes en este bloque tiene algunos años, la mayoría se han desarrollado, o popularizado en los últimos 20 años, más o menos.
- Java. Java es quizás el más veteranos de los lenguajes de esta lista, pero aún así, la primera versión beta es de 1995, unos cuantos años más tarde que la primera versión de Python que es quizás el más joven de los clásicos. Java se utiliza extensivamente sobre todo en el entorno corporativo y es el lenguaje original de las plataformas Android.
- C#. Unos años más tarde apareció C#, el cual se puede ver como la respuesta de Microsoft a Java, si bien, el lenguaje y el entorno en general (.Net) ha evolucionado mucho desde aquellos días. Aún compartiendo muchas características con Java, C# ha encontrado un nicho especial en el mundo de los video juegos puesto que es el lenguaje soportado por Unity.
- Lua. Lua es un sencillo lenguaje de script potente y fácil de aprender. Es un poco más antiguo que Java, pero se popularizó más o menos al mismo tiempo. Lua es interesante puesto que ha sido elegido como lenguaje de extensión por muchas aplicaciones como wireshark, nmap y varios juegos muy populares como WoW por ejemplo.
- Go. Es un lenguaje muy reciente que mantiene cierto parecido con C a la vez que intenta simplificar la sintaxis y hacerla más intuitiva. Una de las características más interesantes de Go es su soporte nativo para concurrencia y se ha popularizado para la programación de herramientas en el ámbito de la ciberseguridad.
- Rust. Otro lenguaje muy nuevo que pretende ofrecer el rendimiento de C/C++ pero de una forma mucho más segura. La curva de aprendizaje de este lenguaje es bastante empinada lo cual lo hace un poco duro como primera elección. Rust, junto con C y ensamblador son los tres únicos lenguajes soportados oficialmente por el kernel Linux. Microsoft también está apostando fuerte por el.
- Kotlin. Kotlin es un lenguaje muy reciente que hace uso de la máquina virtual Java y que ha sido seleccionado junto con Java como lenguaje de desarrollo para plataformas Android.
- PHP. También un lenguaje bastante veterano, pero que sigue todavía en uso como la principal plataforma de desarrollo web en la parte servidor. PHP se utiliza casi exclusivamente en entorno Web y junto con nuestro siguiente lenguaje es todo lo que necesitas para poder introducirte en el mundo de la programación web.
- JavaScript/ECMAScript. Las primeras versiones de JS aparecen más o menos que al mismo tiempo que Java a mediados de los 90. Javascript sigue siendo el principal lenguaje utilizado para la parte cliente de las aplicaciones web. Hay muchas variaciones en la actualidad e infinidad de frameworks que usan el lenguaje de diferentes formas, pero conocer los fundamentos del lenguaje original hace que asimilar todo eso resulte más sencillo.
Origen del Nombre
Quizás os preguntéis de donde viene el nombre del proyecto. Es un tanto peculiar no?. Bueno, el nombre viene de un libro muy antiguo que se titulaba “El solucionario del Programador para IBM PC/XT/AT y Compatibles”. Se trata de un libro de 1988 que todavía conservo y con el que aprendí muchísimo sobre los ordenadores de la época.
La particularidad de este libro era que te enseñaba como resolver distintos problemas a varios niveles. Primero usando BASIC (si era posible), luego usando ensamblador y la BIOS/DOS y finalmente accediendo directamente al HW. Era una fuente incalculable de conocimiento y es un libro que adoro, así que, a modo de homenaje y por cierto paralelismo, elegí el nombre: “El Solucionario del Programador para GNU/Linux”.
Periodicidad
Esperamos publicar cada uno de los capítulos los viernes para que lo podáis leer tranquilamente el finde y así tener tiempo para enviarnos vuestros comentarios y correcciones con el fin de mejorar la calidad del resultado final.
El contenido de este proyecto, como siempre será totalmente libre y estará a la disposición de todos nuestros lectores!.
Esperamos que os guste!!
■
