wandres.dev
ONTOLOGÍA · El mapa de C y la programación de sistemas

La ontología de C y la programación de sistemas

El mapa mental completo del territorio antes de recorrerlo: qué es C, cómo se relacionan el lenguaje, el toolchain, el runtime y el sistema, y cómo lo conquistarás nivel a nivel.

⏱ 12 min

Antes de dar el primer paso, mira el mapa completo. La programación de sistemas en C no es una lista de temas sueltos: es un territorio con una estructura clara, donde cada pieza sostiene a la siguiente. Esta lección es la ontología — la visión aérea de todo lo que vas a dominar.

🎯 Al terminar esta lección sabrás
  • Ver el mapa mental completo del dominio.
  • Entender las grandes áreas y cómo se relacionan.
  • Situar cada uno de los 30 niveles en el territorio.
  • Empezar con un modelo mental correcto, no con piezas aisladas.

El territorio, de un vistazo

mindmap
root((C y Sistemas))
  Lenguaje
    Tipos y C23
    Punteros
    Memoria
    Structs y enums
    Preprocesador
  Toolchain
    Compilacion
    Meson y Make
    Linker y ELF
    ABI
  Runtime
    libc glibc musl
    Freestanding
    Syscalls y POSIX
  Calidad
    Sanitizers
    Fuzzing
    Hardening
  Dominio
    Concurrencia
    Bajo nivel
    Undefined Behavior
    Nivel PhD

Las cinco grandes áreas

Todo lo que aprenderás encaja en cinco capas que se apoyan una en otra:

🔤

El lenguaje

La sintaxis y la semántica de C23: tipos, punteros, memoria, structs, el preprocesador. El “qué escribes”.

🔧

El toolchain

Cómo tu código se convierte en un binario: compilación, build systems (Meson, Make), el linker, ELF y la ABI.

📚

El runtime

Sobre qué corre tu programa: la libc (glibc, musl), el entorno freestanding, las syscalls. La frontera con el sistema operativo.

🛡️

La calidad

Cómo garantizas que es correcto y seguro: sanitizers, fuzzing, análisis estático, hardening.

El dominio

Lo que separa a un experto de un dios: concurrencia, optimización de bajo nivel, el Undefined Behavior y el estándar mismo.

Cómo se sostienen entre sí

No son cinco temas paralelos: forman una pila donde cada nivel necesita al de abajo. No puedes entender el linker sin entender la compilación; no dominas la concurrencia sin dominar la memoria; no escribes código freestanding sin saber qué te da la libc.

flowchart TD
L[Lenguaje C23] --> T[Toolchain: compilar y enlazar]
T --> R[Runtime: libc y sistema]
R --> Q[Calidad: sanitizers y seguridad]
Q --> D[Dominio: concurrencia, bajo nivel, UB]
D --> G[Nivel Dios: tu propia libc, allocator, internals]
style L fill:#89b4fa,color:#11111b
style T fill:#94e2d5,color:#11111b
style R fill:#f9e2af,color:#11111b
style Q fill:#fab387,color:#11111b
style D fill:#f38ba8,color:#11111b
style G fill:#cba6f7,color:#11111b

Por qué esta estructura importa

Aprende el mapa, no solo las calles

La mayoría de la gente aprende C como una colección de trucos: “así se hace un malloc”, “así se compila”. Funciona hasta que algo se rompe fuera de la receta — y entonces están perdidos, porque no tienen un modelo del terreno. Tú vas a hacer lo contrario: primero el mapa, luego el detalle. Cuando entiendas que un puntero es una dirección, que compilar son cuatro fases, que la libc es una capa opcional sobre las syscalls, cada tema nuevo tendrá un sitio donde encajar. Ese modelo mental es lo que te dejará razonar sobre problemas que nunca viste. Es la diferencia entre saber C y entender los sistemas.

El camino: 30 niveles

Este track recorre el mapa de abajo arriba, un nivel por cada pieza, sin sobrecargar ninguno:

  • Niveles 1–13 · El lenguaje — de por qué C hoy hasta la gestión de memoria avanzada y el preprocesador.
  • Niveles 14–21 · El toolchain — modularidad, Meson, Make, bibliotecas, el linker, ELF y la ABI.
  • Niveles 22–23 · El runtime — glibc vs musl, freestanding y el mundo sin libc.
  • Niveles 24–26 · La calidad — sanitizers, fuzzing, análisis estático y hardening.
  • Niveles 27–30 · El dominio — concurrencia, bajo nivel, Undefined Behavior y el nivel PhD.
ℹ️
Cómo usar este track

No tienes que ir en orden estricto si ya dominas una parte, pero el camino está diseñado para que cada nivel se apoye en los anteriores. Si algo no encaja, casi siempre es porque falta una pieza de un nivel previo. Vuelve al mapa cuando te pierdas: siempre hay un sitio para lo que estás aprendiendo.

⚔️ Sitúate en el mapa
  1. Mira el mapa mental de arriba y localiza qué te suena y qué no.
  2. Identifica en qué de las cinco áreas te sientes más flojo hoy.
  3. Anota una pregunta que tengas sobre sistemas (p. ej. “¿qué pasa exactamente al compilar?”). La responderás en su nivel.
  4. Cuando termines el track, vuelve aquí: el mapa se verá completamente distinto.