¿Cómo nos comunicamos con las máquinas?

Paulina Tejada Tirado
@PauliTejadaT
https://paulitejadat.wixsite.com/sinpapelnilapiz

Basta con deslizar nuestros dedos por la pantalla bloqueada de un teléfono móvil para que de inmediato nos solicite un código y así acceder a las aplicaciones e información dentro de él. ¿Cómo pasa todo esto? ¿Por qué el celular entiende que queremos desbloquearlo y nos pide, en cuestión de microsegundos, una contraseña que anteriormente le hemos indicado?

Este y todos los procesos tecnológicos, desde los cotidianos hasta los más complejos, implican cientos de instrucciones que les permiten ejecutar autónomamente el conjunto de acciones para las cuales fueron asignados. Esto es posible gracias a los lenguajes de programación, los cuales, a diferencia de los lenguajes naturales –entre los animales, incluyendo a los seres humanos– y los protocolos de comunicación –entre máquinas–, son los intermediarios entre el hombre y su tecnología. De esta manera, dichos comandos pueden ser a la vez comprensibles para el ser humano y procesables para la máquina.

Miguel Baquero Álvarez, Ingeniero de Sistemas de EAFIT, Especialista en Infraestructura de Tecnologías de la Información y Coordinador de Tecnología de Proyecto 50 -un laboratorio para la innovación y el desarrollo de competencias digitales de dicha universidad-, define esta herramienta como “un lenguaje abstracto que permite que un programador pueda comunicarse con un computador e indicarle cómo hacer determinadas tareas y procesos”. Según Baquero, entre los lenguajes más utilizados actualmente están Java, C++, HTML, Ruby, Python, R, C, coincidiendo con los mencionados por el Índice TIOBE en su última actualización de febrero 2016, elaborado por una empresa de software holandesa enfocada en el seguimiento de la calidad de los programas informáticos.

Para Camilo Hoyos, estudiante de Ingeniería en Diseño de Entretenimiento Digital e Ingeniería de Sistemas de la Universidad Pontificia Bolivariana, “cada lenguaje fue creado para ciertos problemas que se presentan y cada uno puede tener sus ventajas y desventajas a la hora de buscar una solución”. Óscar Eduardo Sánchez, docente e investigador de la Facultad de Ingeniería en TIC de la U.P.B., concuerda con que “cada lenguaje esta hecho para un propósito específico, por ejemplo, el manejo de datos, procesamiento de información, transmisión de datos, etc”. Es por esto que existen tantos lenguajes como instrucciones; sin embargo, se puede diferenciar a grandes rasgos entre dos tipos: “los interpretados, que son ‘traducidos’ por la máquina paso a paso cada vez que se ejecutan, y los compilados, que tienen una plataforma que los traduce y guarda un archivo para poderlos ejecutar fácilmente en el futuro”, asegura Hoyos.

Gracias a los lenguajes de programación es posible la comunicación entre humanos y máquinas.

Gracias a los lenguajes de programación es posible la comunicación entre humanos y máquinas.

Miguel Baquero aprendió a programar por la razón más práctica: no querían repetir las tareas cada vez que debía ejecutarlas, así que las automatizó. Sin embargo, todo comenzó con un mismo interés compartido con Camilo: ambos se enamoraron del mundo informático debido a su afición por los videojuegos. Es por esto que, para Camilo, los lenguajes más interesantes son C# y C++, porque son los que más se utilizan en dicha industria, mientras que para Baquero, sin dudarlo, son los de tipo funcional y lógicos, porque “permiten crear programas en menos líneas para determinados tipos de problemas que con el paradigma orientado a objetos es mucho más complicado”.

Entonces, ¿qué se necesita para aprender a programar? Es simple: interés, paciencia y ¡mucha práctica! Camilo insiste en que “la mayor habilidad que debería de tener un programador es una lógica para resolver problemas, que tiene que implicar varios factores para la solución: que sea factible, que sea rápida y que sea de la manera más eficaz”. Por ejemplo, como él mismo lo indica, para un computador es mucho más fácil resolver potencias que una raíz cuadrada, así que una raíz cuadrada tomaría su representación de potencia para acelerar la velocidad de la operación. De esta manera, se haría de una forma más simple y eficiente.

Para Baquero y Sánchez, un programador debe tener capacidad de abstracción, es decir, “pensamiento computacional, que permite modelar problemas para ser atacados de manera computacional” -comenta el primero-, “e indiscutiblemente la recursividad, aunque últimamente viene tomando fuerza la resiliencia como capacidad para adaptarse a entornos altamente cambiantes como las TIC”, asegura el segundo.

Entonces, en este entorno tan mutante, ¿hacia dónde se dirigen los lenguajes de programación? La tendencia hoy consiste, según Miguel, en “tener la posibilidad de tener una caja de herramientas con lenguajes de programación pertenecientes a los distintos paradigmas, como orientado a objetos, funcionales y lógicos, de manera que se ataquen los problemas de la manera más óptima”, mientras que para el docente Óscar Eduardo, “la principal tendencia es programar para la computación en la Nube o Cloud”.

Hoy es cada vez más accesible y posible entrar al mundo de la programación, pues día a día surgen herramientas que facilitan la comunicación con las máquinas, como la auto-completación, los desarrolladores de software 100% asistidos, el aviso de errores, los patrones de diseño y la disponibilidad de información práctica en Internet. Estas hacen que ahora “se tienga mucha más estabilidad, confiabilidad y tranquilidad a la hora de escribir un código y poder reutilizarlo, porque, como dicen, no hay que volver a inventar la rueda, ya hay mucho inventado y conocimientos solventados que se puede reutilizar”, afirma Miguel. Sin embargo, aunque se han automátizado la mayoría de las tareas de programación, según el profesor Sánchez, “sigue siendo necesario tener fundamentos en teoría de conjuntos y lógica matemática”.

Si es tan sencillo, ¿por qué no todos nos animamos a programar? Mark Zuckerberg, fundador de Facebook, Drew Houston, creador de Dropbox, Jack Dorsey, desarrollador de Twitter, lo hicieron. En el siguiente video, hablan sobre sus motivaciones y narran las enseñanzas que tienen para esta actividad creativa y técnica que es la programación.