Blog
Para quem já sabe o básico e quer ir fundo. Aqui o assunto é como os modelos funcionam em produção: memória, roteamento, ferramentas, agentes. O lado técnico que pouca gente explica direito.
C nasceu em 1972 nos Bell Labs (Dennis Ritchie) para escrever Unix. Padronizado em ANSI C (1989), C99, C11, C17, C23 (2024). Pipeline: source → pré-processamento (cpp) → compilação (gcc/clang gera asm) → assembly → linking. Diferencial: mapeia 1:1 para o hardware, zero runtime, portabilidade do Linux kernel ao microcontrolador. Em 2026 ainda é padrão em kernel (Linux, BSD), embedded, drivers, runtimes de linguagens (Python CPython, Postgres, Redis, SQLite). Compiladores: GCC 14, Clang 18, MSVC. C99 é padrão de facto; C23 ainda em adoção.
Pointer é endereço de memória, array decai pra pointer, string é char* terminated \0. Arithmetic, dereferencing, pointer to pointer, const correctness. Mental model sólido destrava tudo.
Stack (automatic, fast, limited) vs heap (dynamic, manual). malloc/calloc/realloc/free. Common bugs: leak, double-free, use-after-free, buffer overflow. Valgrind + ASan pra detectar.
Signed integer overflow, null pointer deref, use-after-free, strict aliasing violation, uninitialized memory. Compiler optimizes assuming UB impossible — bugs viram catastróficos. UBSan pra flag.
Make (primeiro, ubíquo, syntax rigid), CMake (meta-build generator, cross-platform standard), Ninja (fast backend), Meson (Python-ish config). Compiler flags sanity: -Wall -Wextra -Werror -O2 -g.
gdb/lldb basics (break, next, print, bt), Valgrind memcheck (memory bugs), ASan (Address Sanitizer), TSan (Thread), UBSan, core dump analysis. printf debugging quando alternative.
pthreads (POSIX, universal), C11 <threads.h> (standard, less universal). Mutex, condition variables, atomics (C11 _Atomic), data races. Thread-local storage. Lock-free primitives básicos.
C11 (2011): _Generic, _Atomic, anonymous structs, VLA optional. C17 bug fixes. C23 (2024): bool nativo, constexpr, nullptr, attributes [[...]], embed, decimal floats. Compilers: GCC, Clang, MSVC suporte varia.
Build real: HTTP server minimalista (epoll Linux), ou allocator custom (como jemalloc simplificado), ou shell ultra-minimal. Zero memory leaks (Valgrind clean), UBSan clean, < 2000 LOC. Man page.