Soy Pablo, ingeniero de telecomunicaciones con un doctorado en simulación electromagnética. Actualmente trabajo en ingeniería de sistemas en el sector de defensa y espacio (infraestructura de satélites y sistemas de misión).
Empecé con la programación de bajo nivel porque quería entender qué estaba pasando
de verdad. No la abstracción, no la API, la cosa en sí. Cómo se reparte la
memoria. Cómo decide un array dinámico cuándo crecer. Qué hace free() realmente
con esos bytes. Este blog es donde resuelvo esas preguntas construyendo las
respuestas desde cero, en C.
Sobre qué escribo
Allocators, estructuras de datos, patrones OOP en C, y un lenguaje pequeño llamado Zinc que estoy construyendo desde cero (intérprete, máquina virtual de bytecode, y eventualmente un compilador) todo en C99. Ahora mismo hay dos series activas: una construyendo un allocator de memoria y garbage collector, otra implementando arrays dinámicos con todos los edge cases que la mayoría de tutoriales se saltan.
Proyectos
- Zinc: un lenguaje minimal con tipado estático, orientado a un subconjunto seguro de la semántica de C. Ownership explícito, sin GC en runtime, salida en C legible como target de compilación.
- bitstream.h: librería C de un solo header para leer y escribir bitstreams empaquetados. Útil para parsers de protocolos y codecs de compresión.
- dynamic-arrays-c: repo companion de la serie de Arrays Dinámicos. Cada post compila y ejecuta.
El código
Todo lo que aparece en este blog compila y está testeado. Si no compila, es un bug, abre un issue en GitHub.
En otro sitio
Cuando no estoy escribiendo C suelo estar encima de una bici de carretera, en un rocódromo, o en algún sitio en la montaña con una cámara.
GitHub: @ansuzgs LinkedIn: pablogonzalez21191