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.
Dynamic (Python, JS) vs Static (Go, Rust, Java, C#). Structural (TS, Go) vs Nominal (Java, C#). Sound (Rust) vs Unsound (TS). Inference (Kotlin, Scala) vs Verbose (Java 7-). Trade-offs reais.
Threads (Java, C#, C++) — OS threads, complex. Async (JS, C#, Python) — single-threaded event loop. CSP (Go channels, Clojure core.async) — communicate via messages. Actor (Erlang, Akka) — isolated state + message passing. Virtual threads (Java 21) — mix.
Manual (C, C++): control total, bugs fáceis. GC (Java, C#, Go, JS): zero worry, pause time. Borrow checker (Rust): compile-time safety sem GC. Reference counting (Swift, ObjC). Trade-offs runtime vs compile-time.
Benchmarks (techempower, benchmarksgame) vs realidade. C/C++/Rust ~same (systems level). Go/Java ~2-3x Rust em hot path, <1.5x em I/O. JS/Python 10-50x slower CPU-bound. Concurrency overhead difere por linguagem.
npm (JS, 2.5M packages), PyPI (500k), Maven (Java, 500k), NuGet (C#, 400k), crates.io (Rust, 150k), Go modules. Tooling quality (TS tsc vs Go go), IDE support, hiring pool, long-term stability.
Matriz práctica: web backend (Go/Node/C# são excelentes, Rust OK se perf crítica), mobile (Swift/Kotlin nativo, TS/RN cross), systems (Rust hoje, C em legacy), data/ML (Python), scripting (Python/Bash), UI (JS), game dev (C++/C#/Rust).