Por
Hugo Jara Goldenberg
Hay un término
muy especializado, propio de quienes trabajan en la industria informática que
se ha hecho popular en el gran público: se trata del algoritmo.
Todo el mundo
habla del algoritmo, es el responsable por los videos que se nos ofrecen en
nuestras redes, o de las ofertas comerciales con que nos bombardean a raíz de
nuestro historial de navegación en la web. Si un emprendimiento digital no
funciona o un creador de contenidos pierde visitantes, el culpable es el
omnipresente algoritmo. Ahora, con la popularización de las herramientas de
Inteligencia Artificial, el público identifica al diálogo inteligente que se
produce con esos ambientes, como una interacción con el algoritmo.
Así, para la
mayoría de las personas, el algoritmo es un ente con voluntad propia que nos
ayuda, o a veces perjudica, en la interacción con la tecnología informática.
¿Pero qué es
realmente un Algoritmo?
En términos
simples, un algoritmo es un conjunto de instrucciones paso a paso,
ordenadas y finitas, diseñadas para resolver un problema específico, o realizar
una tarea.
Sin embargo, no
solo los computadores usan algoritmos, también nosotros, los humanos de carne y
hueso, los utilizamos todo el tiempo, y podemos imaginarlo como una
"receta" o procedimiento que indica exactamente qué hacer para llegar
a un resultado deseado.
Aquí hay un
ejemplo sencillo de un procedimiento de cocina, que tiene las mismas
características de un algoritmo, se trata de una receta para preparar un huevo
frito, la que se muestra a continuación estructurada paso a paso, para destacar
sus componentes lógicos y su naturaleza secuencial.
- Paso 1: Colocar la sartén sobre el quemador de la cocina.
- Paso 2: Encender el quemador a fuego medio.
- Paso 3: Verter el aceite en el sartén.
- Paso 4: Evaluar el estado del aceite.
- Si el aceite está caliente y burbujea ligeramente -> Avanzar
al Paso 5.
- Si no -> Esperar 10 segundos y volver a evaluar el Paso 4.
- Paso 5: Romper la cáscara del huevo.
- Paso 6: Verter el contenido (clara y yema) en el centro de la sartén.
- Paso 7: Espolvorear la pizca de sal sobre el huevo.
- Paso 8: Mientras la clara del huevo siga transparente:
- Esperar algunos segundos.
- Seguir en el paso 8,
hasta que la clara se vuelve blanca y firme.
- Paso 9: Apagar el quemador de la cocina.
- Paso 10: Usar la espátula para retirar el huevo de la sartén.
Como vemos,
este es un ejemplo muy didáctico porque, al igual que un algoritmo informático,
muestra que las instrucciones deben estar ordenadas lógicamente y realizarse
respetando estrictamente dicho orden (no se puede romper el huevo antes de
encender el fuego y esperar un buen resultado). También incluye condicionales
(paso 5) que adaptan el proceso a la realidad física (esperar a
que el aceite esté caliente), y utiliza ciclos de comprobación de estado
(Paso 8) , que es revisar la cocción de la clara repetidamente
hasta que se cumpla la condición de salida, que es que la clara se vuelva
blanca y firme.
Es importante
aclarar que cualquier programa informático, debe ser diseñado originalmente
como un algoritmo, y posteriormente podrá ser llevado a un lenguaje de
programación, que es como será presentado al computador para su ejecución.
Cualquier aplicación o función que utilizamos cuando interactuamos con nuestro
computador, el teléfono celular o cualquier dispositivo “smart” (TV, equipos
musicales, relojes, etc), es un programa informático, que se creó a partir de
un algoritmo. Parte importante del trabajo de los profesionales informáticos
consiste en crear algoritmos, que posteriormente se transforman en programas o
funciones de diversa naturaleza, con los que interaccionamos en infinidad de
artefactos y artilugios presentes en la vida cotidiana.
Características
de un Algoritmo
Para que una
serie de pasos o un procedimiento sea considerada un algoritmo, debe cumplir
con las siguientes condiciones:
- Precisión: Cada paso debe estar claramente definido sin ambigüedades.
- Determinismo: Si se repite algoritmo con los mismos datos de entrada,
siempre se debe obtener el mismo resultado.
- Finitud: El algoritmo debe tener un número limitado de pasos y
terminar en algún momento.
- Entrada (Input): Debe existir información inicial necesaria para comenzar.
- Salida (Output): Debe haber un resultado o solución al finalizar el proceso.
Representación
de Algoritmos
En la industria
informática, los algoritmos se representan de dos formas:
Diagrama de
Flujo: Es una
representación gráfica que utiliza figuras geométricas (óvalos, rombos,
rectángulos) conectadas por flechas para mostrar la secuencia lógica.
Pseudocódigo: Es una forma de escribir los pasos
usando un lenguaje más humano, pero con una estructura similar a la de un
lenguaje de programación.
Los
programadores cuando diseñan un algoritmo eligen una de las dos formas para
representarlo. Para entender estas formas de representación vamos a crear un
algoritmo muy sencillo que reciba dos números y muestre el resultado de la suma
de ellos.
Lo primero que
hay que hacer es establecer los pasos lógicos del algoritmo:
Paso 1: Obtener
el primer número a sumar
Paso 2: Obtener
el segundo número a sumar
Paso 3:
Realizar la suma
Paso 4: Mostar
el resultado de la suma
A continuación,
se presenta este algoritmo como como Pseudocódigo y como Diagrama de Flujo.
Para generar estas representaciones se utilizó el software PSeint, muy popular
en las asignaturas en donde los estudiantes de las carreras de informática
aprenden a programar.
Representación del algoritmo SUMAR como
Pseudocódigo
Ahora, El mismo algoritmo representado
como diagrama de flujo
Finalmente,
para transformar este algoritmo en un programa, debemos codificarlo en algún
lenguaje de programación. Existen muchos lenguajes de programación, con
distintas sintaxis, en este ejemplo utilizaremos el lenguaje Visual Basic:
Module SUMAR
Sub Main()
Dim
num1 As String
Dim
num2 As String
Dim
suma As Double
Console.WriteLine("Ingrese
el primer número")
num1
= Console.ReadLine()
Console.WriteLine("Ingrese
el segundo número")
num2
= Console.ReadLine()
suma
= num1+num2
Console.WriteLine("El
resultado de la suma es: ",suma)
End
Sub
End Module
Ahora ya
tenemos nuestro programa en lo que se conoce como código fuente,
el cual a continuación se lleva al computador para que sea traducido al código
de máquina, que es el traspaso del programa a una versión en binario,
es decir escrita solo con unos y ceros, que es lo finalmente entienden los
circuitos del computador. En este momento el programa ya está listo para ser
“ejecutado” o “procesado”, según la jerga informática. Si procesamos este
programa en un computador, aparecerán en la pantalla los mensajes solicitando
los dos números, y a continuación se mostrará en pantalla la suma respectiva.
¿Por qué son
importantes?
En resumen, los
algoritmos son el corazón de la tecnología informática. Todos los programas,
desde los más simples a los más complejos, surgen de un diseño inicial como
algoritmo.
Podemos decir
que un algoritmo es como el plano de un programa, y permite encapsular el
intelecto y la lógica humana en un formato estructurado. Esto garantiza que,
sin importar cuántas veces se ejecute el proceso o en qué hardware lo procesemos,
los pasos seguirán siendo consistentes y el resultado final será siempre el
mismo. Es la base que permite la automatización confiable de procesos a velocidades
de millones de operaciones por segundo.
Historia de
los algoritmos
Aunque, los
algoritmos se asocian con computadoras y la modernidad, en realidad son un constructo
matemático muy antiguo, tanto que podemos decir que son parte de la historia
humana desde hace milenios. En las
civilizaciones antiguas ya existían procedimientos sistemáticos (algoritmos) para
resolver problemas.
En las primeras civilizaciones de Mesopotamia y Egipto ya se empleaban
procedimientos y reglas paso a paso, para realizar cálculos aritméticos para
resolver problemas administrativos asociados a cosechas, cobro de impuestos y
otros.
En la Antigua Gracia, el matemático Euclides describió un procedimiento
para calcular el máximo común divisor entre dos números, uno de los primeros ejemplos
de algoritmo formalmente definidos.
En el mundo islámico encontramos al matemático persa Al-Juarismi
(Al-Khwarizmi), quien escribió tratados sobre aritmética y álgebra en el siglo
IX. Su obra, traducida al latín en Europa, dio origen al término “algorismus”,
que luego evolucionó a “algoritmo”.
En la edad moderna los algoritmos comienzan a vincularse con el cálculo
y las máquinas, y vemos a personajes como Isaac Newton que creó algoritmos iterativos para encontrar raíces de funciones
complejas; o Blaise Pascal y
Gottfried Wilhelm Leibniz quienes desarrollaron calculadoras mecánicas para
ejecutar algoritmos de operaciones aritméticas.
También encontramos a Charles
Babbage quien diseñó la máquina analítica, considerada precursora del
computador, y Ada Lovelace (hija del poeta victoriano Lord Byron) quien diseñó
el primer algoritmo destinado a ser ejecutado por una máquina, y es recordada
como la primera programadora de la historia.
Durante el siglo XX el concepto toma un carácter más riguroso dentro de
la lógica y la computación teórica, principalmente gracias al aporte de Alan
Turing, quien introduce la máquina de Turing, un modelo abstracto que
define qué es computable y de define al algoritmo como un procedimiento finito,
preciso y efectivo para resolver un problema.
Desde la segunda mitad del siglo
XX hasta hoy Los algoritmos se convierten en el núcleo de la informática, el
software y la inteligencia artificial, y su utilización se expande a todos los ámbitos
de la sociedad.
El algoritmo
como mecanismo de traducción ontológica
Sin embargo, el
algoritmo no es solo una "receta" de programación, como la mayoría de
las personas lo entiende; es por sobre todo un mecanismo de traducción
ontológica. Debemos recordar que la ontología es la rama de la filosofía que
estudia el ser, la existencia y la realidad.
Para entender el
verdadero poder y valor de los algoritmos, debemos comprender cómo se conecta
la naturaleza continua y analógica de la realidad, con la tecnología digital.
En nuestra
experiencia cotidiana, aspectos de la realidad como el espacio y el tiempo existen
en un espectro analógico y continuo. Entre dos puntos en el espacio o entre un
instante de tiempo y el siguiente, existe una infinidad de fracciones posibles.
Sin embargo, un algoritmo opera en un universo estrictamente finito, binario y
paso a paso.
Por lo tanto, para
que el mundo físico pueda ser procesado por una máquina, el algoritmo debe
fragmentar ese continuo de la realidad en "paquetes" o
"estados" discretos indivisibles (ceros y unos). Ontológicamente, el
algoritmo obliga a la realidad a cambiar su forma de ser (continua), para poder
existir dentro del sistema computacional (discreto).
Por lo tanto, afirmar
que los algoritmos son un medio para “discretizar el continuo”, es una cuestión
profundamente ontológica porque nos obliga a preguntarnos y cuestionarnos cómo
definimos y entendemos la naturaleza de la realidad y qué consideramos
que "existe" dentro de un sistema lógico o computacional.
Al discretizar
el continuo, los algoritmos construyen un nuevo estrato ontológico: la realidad
virtual o digital. En este nuevo mundo, las leyes de la “física continua” son
reemplazadas por las reglas matemáticas discretas impuestas por el algoritmo.
Pero esta transformación plantea una pregunta ontológica crucial: el modelo
digitalizado que crea el algoritmo, ¿es una réplica fiel de la realidad o es
una realidad completamente nueva?, claramente nadie tiene la respuesta a esta
inquietante pregunta.
En resumen, los
algoritmos actúan como un filtro que traduce la sustancia infinita y fluida del
universo físico al estado finito y estructurado del mundo digital, redefiniendo
en el proceso lo que significa "ser" dentro de la máquina.
Finalmente,
entender un algoritmo como un contructo matemático que discretiza y simplifica
la naturaleza continua e infinita de la realidad física, es aceptar que la
informática - al igual que la física moderna (con el Principio de la
Indeterminación de Heisenberg) o las
matemáticas (con el Principio de Incompletitud de Godel) -, jamás nos podrá
ofrecer una visión exacta de la realidad sino solo un modelo aproximado,
sumamente útil y aparentemente perfecto e infalible, pero ontológicamente
incompleto y acotado. Así, con humildad debemos aceptar que el Universo, en su
totalidad continua y compleja, jamás podrá ser comprendido o representado de
manera perfecta por ningún sistema humano, ya sea matemático, físico o
computacional.
Reflexiones
finales
A lo largo de
estas líneas se ha intentado explicar qué es un algoritmo, analizándolo desde
su utilidad práctica, su historia milenaria, hasta su límite ontológico.
Vivimos inmersos en una era digital donde pareciera que todo el conocimiento
humano está al alcance de la mano. Los sistemas informáticos gobiernan todos
los ámbitos de la vida moderna, asistiéndonos con una precisión matemática que casi
roza lo milagroso y sobrenatural.
Sin embargo, al
apagar el computador y al alejarnos de las interfaces lógicas de la tecnología
digital, regresamos al mundo del continuo. Es en esa realidad analógica donde
reside verdaderamente nuestra naturaleza y experiencia vital. Ningún software,
por perfecto que sea su código o iteración, puede simular la consciencia, las emociones
ni los insondables sentimientos humanos.
Los algoritmos
son, en definitiva, nuestra mejor herramienta para intentar comprender la
realidad y desenvolvernos en la vida moderna, pero no son la realidad en sí. La
vida real, con sus imprevistos, sus emociones y su majestuosidad infinita,
siempre será una experiencia profundamente humana, hermosa y trascendente, pero
definitivamente nunca computable.
Referencias
bibliográficas
La
Información: Historia y Realidad; James Gleick;
Editorial Crítica; 2012
Del ábaco a
la revolución digital; Vicenc Torra; RBA
Coleccionables S.A.; 2012
Historia de
las Matemáticas; Sergio Castro; The Galobart
Books; 2019
Métodos
numéricos; Francis Scheid, Rosa Elena Di
Constanz0; MacGrawHill; 1993
Metodología
de la programación; Osvaldo Cairó; Editorial Alfaomega;
2005


No hay comentarios.:
Publicar un comentario