lección 5

Cómo funciona un ordenador por dentro

CPU, RAM, disco, programas, lenguajes y compiladores: entiende la máquina que vas a programar.

45 min

Llevas cuatro lecciones usando tu ordenador como herramienta: has abierto la terminal, has navegado carpetas, has creado archivos y has configurado VS Code. Pero hay una pregunta fundamental que todavía no hemos respondido: ¿qué hay DENTRO de esa caja? ¿Cómo es posible que escribas un comando y el ordenador "sepa" qué hacer? ¿Por qué a veces las cosas van lentas y otras van rápido? Hoy vamos a abrir la caja — metafóricamente — y entender cómo funciona la máquina que vas a programar durante el resto de tu carrera.

Esto no es una clase de electrónica. No vas a aprender a soldar circuitos ni a montar un PC pieza a pieza. Lo que sí vas a entender es la lógica interna: los tres componentes que trabajan juntos en todo lo que haces (CPU, RAM y disco), qué es realmente un programa, por qué existen los lenguajes de programación, y cómo se traduce lo que escribes en algo que la máquina ejecuta. Este conocimiento te va a servir durante TODA tu carrera — cuando un pipeline sea lento, cuando un programa se quede sin memoria, cuando necesites decidir entre velocidad y almacenamiento.

### Los tres protagonistas: CPU, RAM y disco

Dentro de tu ordenador hay tres componentes que trabajan juntos en absolutamente todo lo que haces. Cada vez que abres un programa, escribes un documento, ejecutas un comando en la terminal o ves un vídeo, estos tres están coordinándose a toda velocidad. Vamos a conocerlos con una analogía que funciona perfectamente: la cocina de un restaurante.

Imagina un restaurante con un chef estrella, una mesa de trabajo amplia y un almacén enorme en el sótano. El chef es rapidísimo: puede ejecutar recetas a una velocidad sobrehumana, pero necesita que los ingredientes estén en la mesa de trabajo para usarlos. No puede bajar al sótano cada vez que necesita sal — eso le ralentizaría enormemente. Así que un sistema eficiente funciona así: los ingredientes del plato actual suben del almacén a la mesa, y el chef trabaja con lo que tiene delante.

  • La CPU (procesador) es el chef: ejecuta instrucciones a velocidad increíble (miles de millones por segundo), pero solo puede trabajar con lo que tiene "a mano".
  • La RAM (memoria) es la mesa de trabajo: amplia, rápida de acceder, pero temporal. Cuando apagas el ordenador, la mesa se queda vacía.
  • El disco duro o SSD (almacenamiento) es el almacén del sótano: enorme, permanente (no se borra al apagar), pero mucho más lento de acceder que la mesa.

### La CPU: el chef que ejecuta miles de millones de instrucciones por segundo

La CPU (Central Processing Unit, o Unidad Central de Procesamiento) es el "cerebro" de tu ordenador. Pero cuidado con la metáfora del cerebro — la CPU no "piensa" ni "decide". Es más como un chef autómata extremadamente rápido que sigue recetas al pie de la letra. Le das una instrucción ("suma estos dos números", "compara si A es mayor que B", "copia este dato de aquí a allí") y la ejecuta en nanosegundos. Miles de millones de estas instrucciones simples por segundo.

La velocidad de la CPU se mide en GHz (gigahercios). Un procesador de 3 GHz ejecuta aproximadamente 3.000 millones de ciclos por segundo. Cada ciclo puede ejecutar una o varias instrucciones básicas. Cuando alguien dice "mi procesador es un Intel i7 a 3.5 GHz", está diciendo la velocidad a la que su chef ejecuta instrucciones.

Un detalle importante: las CPUs modernas tienen varios "núcleos" (cores). Es como tener 4, 8 o 16 chefs en la misma cocina, cada uno trabajando en su propio plato simultáneamente. Cuando más adelante uses PySpark para procesar datos en paralelo, lo que estás haciendo es repartir trabajo entre muchos "chefs" — incluso en máquinas diferentes.

Consejo de senior: cuando un programa "tarda mucho", no siempre es culpa de la CPU. La mayoría de las veces el cuello de botella está en la RAM (no cabe todo) o en el disco (es lento leer/escribir). Antes de comprar un procesador más rápido, investiga DÓNDE está el problema real. En ingeniería de datos, el disco y la red son casi siempre los culpables.

### La RAM: la mesa de trabajo que se borra al apagar

La RAM (Random Access Memory, o Memoria de Acceso Aleatorio) es el espacio de trabajo temporal de tu ordenador. Todo lo que estás usando AHORA MISMO está en la RAM: el navegador con sus pestañas, el editor de código, la terminal, los archivos que tienes abiertos. La RAM es rápida — muchísimo más rápida que el disco — pero tiene dos limitaciones importantes: es limitada en tamaño y es volátil (se borra cuando apagas el ordenador).

Un ordenador típico hoy tiene entre 8 GB y 32 GB de RAM. Parece mucho, pero piensa en esto: un navegador con 20 pestañas puede consumir 2-4 GB. VS Code con un proyecto grande consume 500 MB-1 GB. Un archivo CSV de 2 GB que intentas abrir con Pandas... necesita al menos 2 GB de RAM solo para cargarlo (y probablemente el doble para procesarlo). Cuando tu ordenador "se pone lento", muchas veces es porque la RAM está llena y el sistema tiene que usar el disco como sustituto (lo que se llama "swap"), que es 100 veces más lento.

La unidad de medida es el byte, y sus múltiplos: KB (kilobyte, mil bytes), MB (megabyte, un millón), GB (gigabyte, mil millones), TB (terabyte, un billón). Un carácter de texto ocupa 1 byte. Una foto ocupa 3-5 MB. Un CSV de un millón de filas puede ocupar 100-500 MB. Un vídeo de una hora ocupa 1-4 GB.

### El disco: el almacén permanente

El disco duro (HDD) o la unidad de estado sólido (SSD) es donde se guardan las cosas de forma permanente. Tus archivos, tus programas instalados, tu sistema operativo — todo vive en el disco. Cuando apagas el ordenador y lo enciendes al día siguiente, todo sigue ahí porque estaba en el disco.

La diferencia entre HDD y SSD es velocidad: un HDD tiene un disco físico que gira (como un vinilo) y una aguja que lee. Un SSD no tiene partes móviles — usa chips electrónicos, como una memoria USB gigante. Los SSD son entre 5 y 100 veces más rápidos que los HDD. Hoy, la mayoría de los portátiles vienen con SSD. Si tu ordenador tarda mucho en arrancar y todavía tiene un HDD, cambiarlo a SSD es la mejor inversión que puedes hacer.

El tamaño típico de un disco es entre 256 GB y 2 TB. En el mundo de los datos, 2 TB es poco — los data lakes de empresas pueden tener petabytes (1 PB = 1.000 TB). Por eso los datos de verdad no viven en tu disco local, sino en servicios cloud como Amazon S3 donde el almacenamiento es prácticamente infinito.

### El flujo: disco, RAM, CPU, resultado

Ahora que conoces a los tres protagonistas, veamos cómo trabajan juntos. Cuando abres un archivo de datos en Python (por ejemplo, un CSV de ventas), esto es lo que pasa internamente:

  1. 01.El archivo está guardado en el DISCO (permanente, lento).
  2. 02.Python pide al sistema operativo que lo cargue. Los datos se copian del disco a la RAM (rápida, temporal).
  3. 03.Cuando haces una operación (calcular la suma de una columna), la CPU lee los datos de la RAM, ejecuta las instrucciones de suma, y deja el resultado en la RAM.
  4. 04.Si quieres guardar el resultado, se copia de la RAM al DISCO (de nuevo permanente).
El flujo de datos: del almacén permanente a la mesa de trabajo, al chef, y de vuelta.

Este flujo explica muchas cosas que te encontrarás en tu carrera. ¿Por qué Pandas se queda sin memoria con archivos grandes? Porque intenta cargar TODO el CSV en la RAM, y si el archivo pesa más que tu RAM disponible, se ahoga. ¿Por qué PySpark es más rápido para datos enormes? Porque reparte el trabajo entre muchas máquinas — cada una con su propia CPU y RAM. ¿Por qué un SSD hace que tu ordenador "vuele"? Porque el paso más lento (disco → RAM) se acelera enormemente.

Error común de principiante: abrir un archivo de 8 GB con Pandas en un ordenador con 8 GB de RAM. No va a funcionar — necesitas al menos el doble de RAM que el tamaño del archivo (Pandas crea copias internas). La solución: procesarlo en trozos (chunks) o usar herramientas como DuckDB o PySpark que no necesitan cargarlo todo en RAM.

### Software: las instrucciones que dan vida al hardware

El hardware (CPU, RAM, disco) es impresionante, pero sin instrucciones es un ladrillo muy caro. Lo que le da vida es el software — los programas. Y un programa, en su esencia, es algo mucho más simple de lo que parece: una lista de instrucciones que la CPU ejecuta una tras otra.

Cuando haces doble click en VS Code, lo que pasa internamente es: el sistema operativo busca el programa en el disco, lo carga en la RAM, y le dice a la CPU "empieza a ejecutar estas instrucciones desde la primera". Las instrucciones dicen cosas como "dibuja una ventana", "espera a que el usuario pulse una tecla", "cuando pulse Ctrl+S guarda el archivo en disco". Miles de millones de instrucciones simples que, combinadas, crean la experiencia de un editor de código.

Hay dos tipos fundamentales de software:

  • El sistema operativo (Windows, macOS): es el programa que gestiona TODO lo demás. Decide qué programa usa la CPU en cada momento, gestiona la RAM (quién tiene cuánta), controla el acceso al disco, maneja la red. Es el "gerente" del restaurante que coordina a todos los chefs y camareros.
  • Las aplicaciones (VS Code, Chrome, Python, tu terminal): son programas que "piden permiso" al sistema operativo para usar los recursos. Chrome pide RAM para sus pestañas, VS Code pide acceso al disco para guardar archivos, Python pide CPU para ejecutar tu script.

Cuando tu ordenador va lento, muchas veces es porque hay demasiadas aplicaciones pidiendo recursos a la vez. Es como un restaurante con 50 mesas llenas y un solo chef — las cosas empiezan a ir despacio.

### Lenguajes de programación: por qué no hablamos en binario

Aquí es donde la historia se pone interesante. La CPU solo entiende un "idioma": secuencias de 0s y 1s. Instrucciones como 10110000 01100001 significan algo para la CPU — algo como "mueve el valor 97 al registro A". Esto se llama código máquina, y es el único lenguaje que la CPU realmente ejecuta.

En los años 40 y 50, los primeros programadores escribían directamente en binario o en ensamblador (una versión ligeramente más legible del código máquina). Era agotador, propenso a errores, y prácticamente imposible de mantener. Un programa simple de "hola mundo" requería docenas de instrucciones crípticas. Imagina escribir un pipeline de datos así — necesitarías años para algo que hoy se hace en una tarde.

La solución fue inventar lenguajes más cercanos al idioma humano. En lugar de escribir 10110000 01100001, escribes x = 97. En lugar de secuencias de saltos condicionales en binario, escribes if x > 100: hacer_algo(). El lenguaje de programación es un TRADUCTOR entre lo que el humano quiere expresar y lo que la máquina necesita recibir.

Con el tiempo se creó un espectro de lenguajes, desde los más cercanos a la máquina (que te dan control total pero son difíciles de escribir) hasta los más cercanos al humano (que son fáciles de escribir pero te dan menos control):

  1. 01.Código máquina (0s y 1s): lo que la CPU ejecuta directamente. Nadie escribe esto a mano hoy en día.
  2. 02.Ensamblador (assembly): una representación legible del código máquina. Se usa en sistemas embebidos y drivers de hardware.
  3. 03.C (1972): uno de los primeros lenguajes "de alto nivel". Rápido y cercano a la máquina. Linux, Windows y los drivers de tu ordenador están escritos en C.
  4. 04.Java (1995): más seguro y portable que C. Usado en sistemas empresariales y Android.
  5. 05.Python (1991): diseñado para ser legible y fácil de escribir. El favorito de los científicos de datos, ingenieros de datos y desarrolladores web.

La regla general es: cuanto más "alto" es el nivel del lenguaje, más fácil es escribir código pero más lento se ejecuta. C es 10-100 veces más rápido que Python ejecutando la misma tarea, pero un programa en Python se escribe en una fracción del tiempo. En ingeniería de datos usamos Python porque la velocidad de DESARROLLO importa más que la velocidad de ejecución — y cuando necesitamos velocidad bruta, usamos herramientas como PySpark que internamente están escritas en Scala/Java/C.

### Compilador vs intérprete: las dos formas de traducir

Si un lenguaje de programación es un traductor entre humanos y máquinas, hay dos formas de hacer esa traducción. Es como la diferencia entre traducir un libro entero al español y publicarlo (puedes leerlo de corrido, rápido), o tener un traductor simultáneo en una conferencia que traduce frase por frase mientras el ponente habla.

  • Compilador (el libro traducido): traduce TODO el programa de una vez, antes de ejecutarlo. El resultado es un archivo ejecutable que la CPU puede correr directamente. Ejemplos: C, C++, Rust, Go. Ventaja: el programa final es MUY rápido. Desventaja: tienes que esperar a que compile todo antes de probar nada.
  • Intérprete (el traductor simultáneo): traduce y ejecuta el programa línea por línea, en tiempo real. No produce un ejecutable — lee tu código, lo traduce sobre la marcha y lo ejecuta inmediatamente. Ejemplos: Python, JavaScript, Ruby. Ventaja: pruebas al instante, ciclo de desarrollo rapidísimo. Desventaja: más lento en ejecución.

Python es un lenguaje interpretado. Cuando escribes python mi_script.py, el intérprete de Python lee tu archivo línea por línea, traduce cada línea a instrucciones que la CPU entiende, y la ejecuta inmediatamente. Por eso puedes abrir una terminal Python y escribir 2 + 2 y ver el resultado al instante — no necesitas compilar nada.

Compilador = traducir el libro entero antes de leerlo. Intérprete = traductor simultáneo que va línea a línea. Python es interpretado.

En la práctica, la distinción moderna es más borrosa. Python internamente compila tu código a un formato intermedio llamado "bytecode" (esos archivos .pyc que ves a veces) y luego interpreta ese bytecode. Java compila a bytecode y luego usa un JIT (Just-In-Time compiler) que recompila las partes más usadas a código máquina durante la ejecución. Pero para efectos prácticos: Python = interpretado (rápido para desarrollar, más lento para ejecutar), C = compilado (lento para desarrollar, rapidísimo para ejecutar).

Consejo de senior: "Python es lento" es técnicamente cierto pero prácticamente irrelevante en el 90% de los casos de ingeniería de datos. ¿Por qué? Porque las librerías que usas (Pandas, NumPy, PySpark) están escritas en C o Scala por dentro. Cuando haces df.groupby("ciudad").sum(), Python solo es el "jefe" que da la orden — el trabajo pesado lo hace código C ultra-optimizado. El cuello de botella real casi nunca es Python — es el disco, la red o tu diseño del pipeline.

### Por qué importa todo esto: la conexión con ingeniería de datos

Quizá estés pensando: "todo esto está muy bien, pero yo quiero procesar datos, no diseñar procesadores". Y tienes razón — no necesitas ser ingeniero de hardware. Pero necesitas entender estos conceptos por una razón práctica: cuando las cosas van mal (y van a ir mal), este conocimiento te dice DÓNDE buscar el problema.

  • Tu pipeline de Python tarda 30 minutos en procesar un CSV → probablemente el cuello de botella es la RAM (está haciendo swap) o el disco (lectura lenta). Solución: usar un formato columnar como Parquet o procesar en chunks.
  • Pandas se queda colgado con un archivo de 4 GB → tu RAM no es suficiente para cargarlo completo. Solución: usar DuckDB (procesa sin cargar todo en memoria) o PySpark (distribuye entre máquinas).
  • PySpark procesa tus datos 50x más rápido que Pandas → porque usa MUCHAS CPUs en paralelo (múltiples máquinas, cada una con múltiples núcleos). El mismo principio del restaurante: más chefs = más platos por hora.
  • Un SSD mejora dramáticamente el rendimiento de tu ETL → porque la mayor parte del tiempo se gasta leyendo/escribiendo datos del disco. Un disco más rápido = pipeline más rápido.

La diferencia entre un junior que dice "no sé por qué es lento" y un senior que dice "el bottleneck está en I/O de disco, vamos a usar Parquet con particionado" es exactamente este conocimiento. No necesitas ser experto en hardware — necesitas saber lo suficiente para diagnosticar y tomar decisiones informadas.

### Verificar los recursos de tu máquina

Antes de terminar, vamos a ver algo práctico: cómo consultar cuánta CPU, RAM y disco tiene tu ordenador. Esto te será útil cuando necesites decidir si tu máquina puede manejar cierto volumen de datos:

1# 🟦 Windows PowerShell:
2
3# Ver info de la CPU:
4Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed
5
6# Ver RAM total (en GB):
7[math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB, 1)
8
9# Ver espacio en disco:
10Get-PSDrive C | Select-Object @{N="UsadoGB";E={[math]::Round($_.Used/1GB,1)}}, @{N="LibreGB";E={[math]::Round($_.Free/1GB,1)}}

Consultar recursos de hardware en Windows PowerShell.

1# 🍎 Mac Terminal:
2
3# Ver info de la CPU:
4sysctl -n machdep.cpu.brand_string
5sysctl -n hw.ncpu
6
7# Ver RAM total (en GB):
8sysctl -n hw.memsize | awk '{print $1/1073741824 " GB"}'
9
10# Ver espacio en disco:
11df -h / | tail -1

Consultar recursos de hardware en Mac Terminal.

### Resumen: el mapa mental completo

  • Tu ordenador tiene tres componentes clave: CPU (ejecuta instrucciones), RAM (espacio de trabajo temporal) y disco (almacén permanente).
  • El flujo siempre es: disco → RAM → CPU → resultado → disco.
  • Un programa es una lista de instrucciones para la CPU. El sistema operativo gestiona todos los programas.
  • Los lenguajes de programación traducen del idioma humano al idioma de la máquina.
  • Python es interpretado: rápido de escribir, más lento de ejecutar. C es compilado: lento de escribir, rapidísimo de ejecutar.
  • En ingeniería de datos, los cuellos de botella suelen estar en el disco (I/O) o la RAM (memoria insuficiente), no en la CPU.
  • PySpark soluciona el problema repartiendo trabajo entre muchas máquinas (muchas CPUs + muchas RAMs).

## ejercicios

[01]

Identifica el cuello de botella

Tu equipo tiene tres problemas de rendimiento. Para cada uno, identifica si el cuello de botella es la CPU, la RAM o el disco, y propón una solución.

Cargando editor...
[02]

Consulta los recursos de tu máquina

Ejecuta los comandos apropiados para tu sistema operativo y anota cuánta RAM, cuántos núcleos de CPU y cuánto disco libre tienes. Esto te servirá para saber qué tamaño de datos puedes manejar localmente.

Cargando editor...
[03]

Compilado vs interpretado: ventajas y desventajas

Completa la tabla comparativa entre lenguajes compilados e interpretados. Piensa en situaciones reales donde elegirías uno u otro.

Cargando editor...

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...