¿Qué es C?
C es un lenguaje de programación de propósito general, de tipado estático y compilado, creado por Dennis Ritchie en los laboratorios Bell de AT&T entre 1969 y 1973. Es el lenguaje sobre el que se fundó gran parte del software moderno: el kernel de Linux, el intérprete de Python, Node.js y decenas de sistemas operativos están escritos en C.
Historia
C evolucionó del lenguaje B (Ken Thompson, 1969), que a su vez venía de BCPL. Se estandarizó por primera vez como ANSI C (C89/C90), y desde entonces ha tenido revisiones: C99 (bucles con declaración en for, tipos bool, _Bool), C11 (threads básicos, generics) y C17 (correcciones menores). El estándar en uso hoy en día es mayoritariamente C11 o C17.
Usos reales
Sistemas operativos
Linux, macOS XNU, Windows NT (partes)
Compiladores e intérpretes
GCC, Clang, CPython, Ruby MRI
Sistemas embebidos
Firmware de microcontroladores (Arduino, STM32)
Bases de datos
SQLite, partes de PostgreSQL y Redis
Redes
OpenSSL, libcurl, protocolo TCP/IP (kernel)
Videojuegos
Motores de juego, emuladores de consola
Flujo de compilación
Un programa en C pasa por cuatro fases antes de ejecutarse:
# Compilar con GCC (todo en uno)
gcc -std=c11 -Wall -Wextra -o programa main.c
# Flags útiles:
# -Wall activa las advertencias principales
# -Wextra advertencias adicionales
# -std=c11 estándar C11
# -O2 optimización nivel 2
# -g símbolos de depuración (para gdb)
# -fsanitize=address detecta errores de memoria (AddressSanitizer)
# Ejecutar
./programaHola, mundo
#include <stdio.h> /* Librería estándar de E/S (printf, scanf...) */
int main(void) {
printf("Hola, mundo\n");
return 0; /* 0 = éxito; cualquier otro valor = error */
}-Wall -Wextra al compilar. Las advertencias del compilador te salvarán de muchos bugs.Diferencias clave con otros lenguajes
| C | Python / JS |
|---|---|
Compilado a código nativo | Interpretado / JIT |
Gestión manual de memoria | Garbage collector |
Tipado estático estricto | Tipado dinámico |
Sin OOP nativa | OOP integrada |
Acceso directo a memoria | Abstracción de memoria |
~100x más rápido (en operaciones de bajo nivel) | Mayor productividad de desarrollo |