Programación para telemáticos
Introducción
En muchos posts se ha hablado de temas de hardware, e incluso de algún que otro tema más relacionado a la virtualización o al software, pero creemos que es muy importante destacar que existen muchos lenguajes de programación hoy en día, y que cada uno es bueno en determinados aspectos. Así pues, en este post se comentaran algunos de los lenguajes de programación más usados hoy en día y se ofrecerá una opinión fundamentada sobre cuáles de estos son los mejores para un ingeniero telemático por norma general.
Bash
En muchos casos, un ingeniero telemático va a estar trabajando en entornos linux, ya sea para administrador el dispositivo o para usar este para automatizar procesos. Así pues, Bash es un lenguaje que viene con todos los sistemas basados en Unix. Es un lenguaje de secuencias de comandos excelente para automatizar tareas. Los scripts bash permiten crear herramientas muy poderosas con solo aprender unos pocos comandos.
Bash es genial si necesitas automatizar cosas, pero no quieres aprender un lenguaje de programación completo. No obstante, su sintaxis es mucho más compleja que otros lenguajes con niveles de abstracción mayores, como Python.
Perl
Perl solía ser el favorito de los ingenieros de sistemas y redes anteriormente. Este es un lenguaje poderoso que permite escribir scripts para automatizar tareas de forma similar (y con sintaxis similar) a Bash.
Así pues, para un ingeniero telemático puede ser muy útil tener conicimientos de Perl por dos motivos. El primero es que, aunque puede que no lo use en su día a día, se pueden encontrar scripts programados en Perl en muchos sistemas actuales, ya que, como antes se usaba mucho, los antiguos administradores del sistema es posible que lo usaran para algunas tareas. El segundo motivo es que puede ser muy útil conocer el lenguaje para poder automatizar procesos en un futuro en caso de no querer/poder hacerlo con Bash u otros lenguajes de mayor nivel.
TCL
TCL es un lenguaje de programación usado en menos de un 0.1% de todas las webs de Internet. Así pues, uno se preguntaría que qué sentido tiene aprender este lenguaje. Para un ingeniero telemático (y más uno que ha cursado CCNA e incluso CCNP), puede existir la posibilidad de trabajar en CISCO. En ese caso puede resultar muy útil tener conocimientos sobre TCL, ya que CISCO ha incorporado TCL y lo utiliza para programar y automatizar cambios en sus equipo en masa. De hecho, CISCO proporciona guías de configuración extensas que documentan el proceso de administración de sus productos a través de TCL.
Python
Python es un lenguaje de propósito general. Esto significa que no está diseñado para un campo específico. Así pues, es un lenguaje general que se usa para muchas cosas diferentes. Esto incluye, entre otros, la automatización de redes, desarrollo frontend, testing, desarrollo backend, scripting, exploits, ciberseguridad, etc.
Una de las principales características de Python es que es un idioma perfecto para principiantes, ya que es muy fácil de leer (y de escribir). Eso es un punto positivo para los ingenieros telemáticos que, a diferencia de los ingenieros de software, suelen estar menos familiarizados con la programación en general y tener una sintaxis fácil de leer les puede ahorrar tiempo y dolores de cabeza.
Además, poco a poco Python se está convirtiendo en el lenguaje por defecto para SDN en la indústria.
Go
Go es un lenguaje desarrollado por Google que fue creado para ser lo suficientemente intuitivo como para que los nuevos ingenieros de Google pudieran aprenderlo con relativa rapidez.
Go es un lenguaje fuertemente tipado, lo que lo hace muy diferente de Python, aunque tiene una sintaxis muy similar a este y es muy legible. Esto lo hace similar a lenguajes como C++. De hecho, Go presume de tener una sintaxis legible (como Python) pero ser muy eficiente (como C++), ofreciendo las mejores características de ambos lenguajes.
Go es especialmente poderoso cuando se trata de crear software de red. Es un gran lenguaje para desarrollar sistemas distribuidos, APIs y otro software relacionado con la red.
Roles de cada lenguaje
Cada uno de los lenguajes que se han expuesto más arriba es mejor para unas funciones u otras y, en función de esto, hace que un lenguaje sea más adecuado para unas posiciones determinadas. Así pues, estas son las posiciones dónde se suelen usar más los lenguajes ya mencionados:
- Bash:
- Administradores de sistemas basados en Linux y macOS.
- Automatización y desarrollo de aplicaciones.
- Perl:
- Administradores de Unix y Linux.
- Administradores de bases de datos.
- Administradores web.
- Desarrolladores.
- TCL:
- Ingeniero de software.
- Desarrollador.
- Desarrollador de automatización.
- Integración de sistemas.
- Arquitecto de prototipos/hardware.
- Python:
- Auditores de seguridad.
- Administradores de seguridad.
- Desarrolladores web.
- Equipos de DevOps.
- Desarrolladores de automatización.
- Go:
- Administradores de sistemas.
- Equipos de DevOps.
- Ingenieros de software.
- Ingenieros de centro de datos.
Autores
Joan Farràs
Ferran Montoliu