Blog de Anthony Buitrago


Las bases fundamentales

13 de septiembre, 2026

Las computadoras siempre habían sido una caja negra para mí. Sabía que se trataba de un objeto terrenal pues se enchufaban a la corriente, tenían botones y podía escuchar los ventiladores dentro de ellas. Caso contrario habría imaginado que estaba frente a un artefacto celestial. Escribes algunas palabras con signos extraños como https:// y .com, y luego, simplemente carga frente a ti un montón de información: letras, colores, imágenes, animaciones… ideas. Seleccionas un ícono divertido en la pantalla e inicia un mundo de otra realidad en el que tienes control sobre una fábrica, un automóvil o un militar.

Detrás de estos procesos tan sencillos (fáciles de ejecutar por el usuario), existe un mar de complejidad, y siempre pensé que todo eso que hay allí, atrás de bambalinas, era algo reservado para personas muy inteligentes, personas dotadas que podían acceder y entender aquella caja negra. Hasta que un día me di cuenta que tan solo hay que estudiar y practicar, estudiar y practicar mucho. De la misma manera que se debe hacer con cualquier otra cosa –que se quiera hacer bien–.

Hay muchas maneras de abordar el aprendizaje de la informática, enfoques que empiezan desde la aplicación, hasta otros que comienzan por las bases académicas. Creo que ninguno es correcto o incorrecto, tan solo diferentes, con sus propias ventajas y desventajas. Y quizá la mejor manera de hacerlo –si somos autodidactas– es empezar a eliminar esas cajas negras. Cada vez que no sepamos responder en un nivel aceptable (este nivel será determinado por cada uno de nosotros) la pregunta: ¿cómo funciona esto?, entonces tendremos trabajo que hacer.

Hablar con electricidad

En mi caso particular siempre he tenido un gran interés en conocer cómo funciona todo en sus bloques más fundamentales, los átomos de un elemento, las ondas del campo electromagnético, los términos de una función, pero, especialmente, los códigos de los programas digitales (software). Este interés me llevó directo al sistema numérico binario, cuando me di cuenta de que toda la información que se transmite en la infraestructura digital global, lo hace mediante dos grandes estados que representan ceros y unos, me explotó la cabeza. Todo, desde un videojuego como Pac-Man, pasando por el dispositivo desde el que estás leyendo esto, hasta los programas que controlan el descenso de los cohetes Falcon 9 son posibles gracias a este sistema.

0 y 1, si y no, encendido y apagado. Pero, ¿cómo es posible comunicarse con tan solo dos opciones?. Mientras el sistema numérico decimal cuenta con diez glifos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9), el sistema binario tan solo tiene dos (0 y 1), sin embargo, dos dígitos son suficientes para contar, y del conteo nacen las matemáticas. ¿Qué sucede cuando llegamos al número 9 en el sistema decimal?, simplemente iniciamos desde 0, y le agregamos un 1 a la izquierda. Y es exactamente lo que ocurre con los números binarios.

Empezamos por el 1, este representa un uno igual que el sistema decimal, entonces si queremos seguir contando hacia el dos, vemos que nos hemos quedado sin glifos, así que al igual que sucede cuando llegamos a 9 en el sistema decimal y queremos seguir contando, comenzamos desde 0 y agregamos un 1 a la izquierda. Ya tenemos un valor diferente: el 10 –que hablando en decimal, no significa diez, sino dos–. Luego ese nuevo glifo en la derecha aumenta de 0 a 1, ya es el tres y se escribe así: 11. Para subir al cuatro debemos hacerlo de nuevo, agregar un 1 a la izquierda y reducir a 0 todos los valores que no sean el primer número, obteniendo 100, entonces contar es tan sencillo como lo es en el sistema decimal:

1=12=103=114=1005=1016=1107=1118=10009=100110=1010 \begin{aligned} 1 &= 1 \\ 2 &= 10 \\ 3 &= 11 \\ 4 &= 100 \\ 5 &= 101 \\ 6 &= 110 \\ 7 &= 111 \\ 8 &= 1000 \\ 9 &= 1001 \\ 10 &= 1010 \\ \end{aligned}

Así podemos ver de manera clara que los números tienen múltiples representaciones, el sistema decimal es tan solo uno entre muchos que usamos para diferentes tareas. Y los más relevantes en la informática moderna son tres, el binario –que ya lo conocemos–, el sistema octal que cuenta con ocho glifos (0, 1, 2, 3, 4, 5, 6, y 7) y el sistema hexadecimal que tiene dieciséis (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F).

Entonces si queremos escribir el número 12 en el sistema hexadecimal, no necesitamos dos glifos, tan solo uno: C. La cantidad de glifos que usa un sistema es llamada base, y algo interesante de estos tres sistemas es que tanto el octal, como el hexadecimal, usan bases que son potencias de 2. Por ello la conversión entre un sistema y otro es mucho más sencilla –en cuanto a recursos– que entre el sistema decimal y cualquiera de estos tres. Por esto se emplean con frecuencia.

En la informática se denomina a cada dígito de un número binario como “bit”, que viene del inglés binary digit. Y cada set de ocho dígitos binarios se denomina un “byte”. A partir de aquí nace una escala de magnitud en donde cada una tiene un número de bytes igual a una potencia de 10: kilobyte = 10310^3, megabyte = 10610^6, gigabyte = 10910^9, terabyte = 101210^{12}… Es de aquí que nacen las magnitudes con las que estamos más acostumbrados hoy, como cuando una fotografía pesa 2 MB (megabytes), un video pesa 3.5 GB (gigabytes) o un disco duro tiene una capacidad de 2 TB (terabytes).

Pensamiento digital

Una vez que puedes contar, ya puedes hacer lo que necesites, si además nos apoyamos en las puertas lógicas (AND, OR, NOT…) no solo podremos contar, además tenemos la capacidad de realizar instrucciones. Una puerta lógica es un dispositivo que recibe entradas –normalmente dos– y devuelve una salida, las puertas lógicas se basan en la Lógica proposicional, y de hecho, toda la informática está fundamentada sobre las matemáticas.

El conector de conjunción (\land) determina que ambas proposiciones deben ser verdaderas para que el resultado lo sea. Funciona como la letra “y” en el español, o la palabra “and” en el inglés, son conjunciones entre dos palabras o frases. Puedo decir: “Quiero que el helado tenga chocolate y vainilla”, entonces tan solo obtendré lo que quiero, si el helado tiene ambos sabores, si tiene solo uno de los dos, no obtendré lo que había pedido.

De la misma manera funciona la puerta lógica AND, recibe dos entradas, pero ambas deben ser verdaderas para que la salida que entregue sea verdadera. Se puede escribir como: verdadero \land verdadero = verdadero. En cambio verdadero \land falso = falso, ya que si por lo menos una entrada es falsa, la puerta devuelve falso.

Luego está la puerta lógica OR, que viene del conector de disyunción (\lor). Cumple la función de “o” en español y “or” en inglés. Hace verdadera una afirmación si alguna de las dos variables es verdadera. Entonces: verdadero \lor verdadero = verdadero, pero además, verdadero \lor falso = verdadero, el resultado solo sería falso si ambas proposiciones lo son: falso \lor falso = falso.

La última puerta lógica es NOT, y simplemente cambia el estado de una afirmación, recibe una proposición de entrada y la invierte, entonces verdadero = falso. Con la combinación de estas puertas, y algunas más como XOR –que es un OR en el que solo una de las dos debe ser verdadera para que el resultado lo sea– se crean los procesadores con una serie de instrucciones escritas en el hardware. Los chips actuales tienen miles de millones de transistores (que construyen estas puertas lógicas) incrustados de manera física en ellos, más precisamente esculpidas en el silicio del que están hechos.

Esto además se complementa con los bits, los dígitos de un número binario, pues un procesador lee una cantidad nn de bits al mismo tiempo, no una única señal. Por ejemplo, en los computadores domésticos más estandarizados se usan procesadores que pueden trabajar con 16 registros (áreas físicas que almacenan datos para trabajar) de 64 bits. Así que en realidad se usan conjuntos de instrucciones que a su vez utilizan varias puertas lógicas y bits al mismo tiempo.

Hay dos grandes enfoques en el diseño de arquitecturas en uso actualmente –en nuestra infraestructura digital–. Las basadas en RISC (Reduced Instruction Set Computing) como ARM, usada principalmente en dispositivos cuya eficiencia energética es crítica: smartphones, laptops y aparatos portátiles. Y aquellas basadas en CISC (Complex Instruction Set Computing) que es la principal para ordenadores de escritorio y servidores, siendo la más usada x86. De forma general RISC intenta que las instrucciones sean simples y CISC entrega instrucciones más específicas.

Cerebro de silicio

Estas arquitecturas dictan cómo deberían estar organizados los sets de instrucciones en un procesador, no obstante, ¿cómo se construye físicamente estos procesadores?. Los sets de instrucciones necesitan puertas lógicas, y para crear una puerta lógica, a su vez, se necesitan sistemas que permitan o no, el paso de señales –de bits–. Desde hace siglos hemos usado sistemas para transmitir una señal binaria, el flujo de agua por un canal activando una rueda y transformando su momento, el vapor que sube abriendo una válvula, son formas de encender o apagar algo.

Al inicio de la informática se usaron varios métodos diferentes que fueron avanzando hasta llegar a la actualidad: sistemas esculpidos en una oblea de silicio que trabajan mediante la modificación de campos eléctricos a travez del voltaje aplicado. Si el voltaje se encuentra por debajo de un determinado umbral, el transistor bloqueará el paso de energía y esta no podrá continuar el camino. En el momento que el voltaje supera otro umbral establecido, el transistor permitirá el paso de la energía en cierto voltaje controlado.

Si bien el nivel de complejidad de un transistor moderno es avanzado, un punto de apoyo lo suficientemente sólido es comprender su función: este debe bloquear (apagado) o permitir (encendido) el paso de una señal. Y nos debe permitir modificar a voluntad entre estos dos estado de –encendido y apagado– porque como bien hemos visto, esto es suficiente para escribir en binario, y entonces, operar con las matemáticas.

La lengua común

En este punto ya entendemos cómo las computadoras pueden enviar y recibir señales a partir de la electricidad modificando el voltaje de los transistores, cómo podemos usar esas señales para representar números, cómo podemos crear puertas lógicas para construir operaciones y cómo estas puertas permiten crear el CPU (Central Processing Unit). Ya tenemos un aparato que puede hacer lo que le ordenemos, pero lo que puede hacer es muy abstracto. Son una serie de instrucciones, pero esas instrucciones, ni siquiera en una arquitectura CISC son tan completas como para entender una frase natural escrita en una lengua humana.

Una máquina no puede enviar un mensaje diciendo “Hola, ¿cómo estás?” a otra en español y esperar que la otra lo entienda. Las máquinas solamente saben hablar binario, cero y uno. Entonces ¿cómo se transforman esos estados de bajo y alto voltaje en una frase escrita en perfecto español?. Para eso las máquinas usan una serie de tecnologías y convenciones, entre ellas: los protocolos, que no son más que una lengua común para que se puedan entender entre sí. Existen muchos y trabajan en muchas capas de abstracción diferentes, pero es importante saber que existen normas y procesos estandarizados para transmitir la información mediante ceros y unos.

Además de los protocolos, existen los formatos de archivo. Cuando abres ensayo.pdf y la computadora te muestra las páginas del archivo, se está usando un formato estandarizado. Tu computador debe tener el set de reglas e instrucciones a seguir para interpretar el archivo que estás intentando abrir. Por esta razón un archivo con extensión .apk puede ser abierto en un dispositivo con el sistema operativo Android, pero no en uno con Windows, porque este último no conoce esas instrucciones (de forma nativa). Algunos formatos de archivo son abiertos, en los que estas instrucciones son información pública y gratuita, mientras que otros son propietarios, en los que le pertenecen a una empresa u organización y no pueden usarse sin autorización en otros programas o tecnologías.

En este punto me maravillé al conocer que todo esto no deja de ser más que pactos, convenciones que la humanidad ha decidido seguir por una u otra causa. Los protocolos, o los formatos de archivos, podrían ser completamente diferentes pero se ha llegado al acuerdo de que tengan la manera que tienen, bien sea por eficiencia, velocidad o simplemente por razones mundanas. Entonces cuando como usuarios, escribimos google.com en la barra del navegador, entran en juego HTTP, TLS, IP, DNS y muchos otros protocolos que hacen posible junto con lenguajes como HTML, CSS y JavaScript que aparezca esa minimalista página web con una barra de búsqueda en el centro.

Razón de ser

He querido comenzar hablando sobre el sistema binario, las puertas lógicas, los transistores y las convenciones en este primer artículo, porque no solo son las bases fundamentales de la informática moderna, sino también el punto en el que me sentí conforme luego de bajar entre todos los niveles de abstracción que posee el mundo digital. Me siento incómodo con la existencia de cajas negras en mi conocimiento, y bajar hasta aquí me permitió mantener mayor confianza cuando aprendía sobre conceptos que están más arriba en las capas de abstracción.

Mi idea con estos artículos es documentar mi proceso de aprendizaje y la creación de mis proyectos informáticos. Redactaré el paso a paso para crear cada uno de ellos y realizaré explicaciones detalladas. Intentaré que estos escritos gocen de fuentes suficientes, de valor y gratuitas, no daré mi opinión simplemente, más bien, transmitiré un discurso sólido y claro sobre lo que esté hablando. Con esto en mente, empecemos.


Fuentes