Por Andrés Lacayo – Estudiante de la carrera de Ingeniería Informática
¿No le ha pasado alguna vez que ve un programa o aplicación y se pregunta cómo funciona internamente para realizar todas sus operaciones? Esto es algo común para quienes trabajamos en el área de Desarrollo de Software, puesto que nuestra profesión se basa en responder esa misma pregunta cada vez que deseamos incluirle una característica nueva a los sistemas que desarrollamos. En el mejor de los casos, desde fuera parece que nos sentamos en frente de una computadora a teclear para crear o actualizar programas y aplicaciones, o piensan que pasamos hackeando perfiles de Facebook o consiguiendo información de alguna base de datos misteriosa. No obstante, desde adentro sabemos que nuestro trabajo consiste en mucho más que eso: desde la creación de un editor de texto como el usado para redactar este escrito hasta el diseño del programa que llevó al hombre a la Luna a bordo del Apolo 11 son labores realizadas por un programador con dos conceptos importantes usados como pico y pala: estructuras de datos y algoritmos.
De manera muy resumida, el trabajo de un desarrollador de software consiste en darle instrucciones a una computadora, hablando en un idioma entendible por ella, para que realice las tareas que necesitamos. Para lograr este cometido utilizamos nuestra herramienta principal: los algoritmos, que, según Robledano (2019), son “un grupo de órdenes consecutivas que presentan una solución a un problema o tarea”. Cada una de estas instrucciones, en lenguaje de computadoras, se llama línea de código y son los pasos que siguen los dispositivos tecnológicos para comunicarnos con personas alrededor del mundo, almacenar nuestros estados de cuenta bancarios, hacer búsquedas en internet, entre muchas otras tareas.
Pero nada de esto sería posible sin las estructuras de datos, las cuales Garcia (2018) define como “formas de organizar información dentro de una aplicación, para manipular, buscar e insertar estos datos de manera eficiente”; algunas de ellas son los arreglos, listas, colas, pilas y árboles binarios. Estos conceptos del manejo de datos son fundamentales para el funcionamiento de la gran mayoría de aplicaciones que usamos diariamente, ya que permiten almacenar y procesar información homogénea en una sola estructura común de gran tamaño, en lugar de tener muchas unidades pequeñas de datos.
Además, estas cuentan con su comportamiento dinámico específico; por ejemplo, en el caso de las colas, el primer dato en ingresar también será el primero en salir cuando sea procesado (Garcia, 2018), lo cual es útil en situaciones como colas de solicitudes en las que se atienden por turnos. En el caso de las pilas, de acuerdo con Sena (2019), el último dato en entrar es el primero en salir, comportamiento que es muy útil para cadenas de ventas en las que el inventario más reciente es el que suele agotarse primero. Según Sena (2019), los arreglos son las únicas estructuras con tamaño definido y, por lo tanto, sus elementos no pueden eliminarse ni agregarse, sino que están vacíos o no, y se ubican por su índice (empezando desde cero); estos pueden ser unidimensionales, bidimensionales (matrices) y hasta tridimensionales, lo cual los hace muy útiles para casos en los que los datos tienen un límite y posición definida, como los asientos en una sala de cine, por ejemplo. Finalmente, las listas y los árboles permiten almacenar una cantidad indefinida de datos de manera ordenada o no, con las que se puede acceder, agregar y eliminar nodos sin importar el orden de inserción.
Todas y cada una de las estructuras mencionadas anteriormente requieren de algoritmos para funcionar, así como existen algoritmos que son inconcebibles sin alguno de estos conceptos, por lo cual son dos pilares interdependientes en los que descansa casi toda la tecnología informática existente. Sobra decir que las posibilidades de aplicación de los algoritmos y las estructuras de datos son innumerables y su presencia en nuestras vidas ha llegado hasta a manejar las puertas, los termómetros y las luces de nuestros hogares. Definitivamente, después de conocer estas definiciones, es mucho más fácil preguntarse o adivinar cómo funcionan esas herramientas virtuales que no pasamos un día sin utilizar.