Categoria

Linguagens de Programação e Runtimes

Como usar o módulo threading e multiprocessing em Python com segurança
Linguagens de Programação e Runtimes

Como usar o módulo threading e multiprocessing em Python com segurança

O Global Interpreter Lock (GIL) é um mutex que protege o interpretador Python, garantindo que apenas uma thread execute bytecode por vez. Isso significa que threads em Python não executam código em paralelo real para operações CPU-bound. Para operações I/O-bound (como leitura de arquivos, requisições HTTP), o GIL é liberado durante operações de I/O, permitindo concorrência eficiente.

05/05/2026
Como usar o protocolo em Elixir para polimorfismo sem herança
Linguagens de Programação e Runtimes 05/05/2026

Como usar o protocolo em Elixir para polimorfismo sem herança

Em linguagens orientadas a objetos tradicionais, o polimorfismo é frequentemente alcançado por meio de herança de classes. Uma classe pai define um comportamento genérico, e classes filhas o sobrescrevem. Em Elixir, linguagem funcional que roda na Erlang VM, não existe herança clássica. Não há classes, nem hierarquias de tipo rígidas. Isso levanta uma questão: como compartilhar comportamentos entre tipos diferentes sem herança?

Como usar o sistema de tipos do Rust para modelar estados inválidos impossíveis
Linguagens de Programação e Runtimes 05/05/2026

Como usar o sistema de tipos do Rust para modelar estados inválidos impossíveis

Estados inválidos são configurações de dados que não deveriam existir no domínio do problema, mas que acabam sendo representáveis devido a limitações da linguagem. Em Rust, o sistema de tipos permite tornar esses estados literalmente impossíveis de serem representados, deslocando a detecção de erros do tempo de execução para o tempo de compilação. Isso reduz drasticamente a necessidade de testes de unidade para validar invariantes e elimina classes inteiras de bugs.

Como usar o compilador incremental do TypeScript para builds mais rápidos
Linguagens de Programação e Runtimes 05/05/2026

Como usar o compilador incremental do TypeScript para builds mais rápidos

O compilador incremental do TypeScript é um mecanismo que reduz drasticamente o tempo de rebuild ao reutilizar resultados de compilações anteriores. Diferentemente do modo completo, que recompila todos os arquivos do projeto a cada execução do tsc, o modo incremental mantém um cache inteligente do grafo de dependências entre módulos.

Como usar o GC tuning em aplicações Java de alto throughput
Linguagens de Programação e Runtimes 05/05/2026

Como usar o GC tuning em aplicações Java de alto throughput

O Garbage Collection (GC) em Java gerencia automaticamente a memória, mas impacta diretamente o throughput de aplicações de alta carga. O ciclo de vida de objetos envolve alocação na geração jovem (Eden), promoção para sobrevivente e, eventualmente, para a geração velha. Durante a coleta, ocorrem pausas stop-the-world que interrompem a execução da aplicação.

Como organizar projetos Python grandes
Linguagens de Programação e Runtimes 05/05/2026

Como organizar projetos Python grandes

A base de qualquer projeto Python grande começa com uma estrutura de diretórios bem definida. A abordagem mais recomendada para projetos escaláveis é o layout src/, que separa o código fonte da raiz do projeto:

Como criar CLIs simples com cobra para automações internas em Go
Linguagens de Programação e Runtimes 05/05/2026

Como criar CLIs simples com cobra para automações internas em Go

Cobra é um framework CLI para Go, criado por Steve Francia (spf13) e usado por projetos como Kubernetes, Hugo e Docker. Ele fornece uma estrutura robusta para criar interfaces de linha de comando com suporte a subcomandos, flags e argumentos, sendo ideal para automações internas.

Como depurar problemas de rede em aplicações Node
Linguagens de Programação e Runtimes 05/05/2026

Como depurar problemas de rede em aplicações Node

Problemas de rede em aplicações Node.js podem ser particularmente desafiadores devido à natureza assíncrona e orientada a eventos da plataforma. Este artigo apresenta um guia prático para diagnosticar e resolver os problemas de rede mais comuns, desde o rastreamento básico de requisições até a análise avançada de tráfego.

Como gerenciar dependências em projetos Node.js
Linguagens de Programação e Runtimes 05/05/2026

Como gerenciar dependências em projetos Node.js

O gerenciamento de dependências é um dos pilares fundamentais para qualquer projeto Node.js moderno. Com um ecossistema que ultrapassa 2 milhões de pacotes disponíveis no registro público, saber como gerenciar essas dependências de forma eficiente é crucial para manter a estabilidade, segurança e produtividade do desenvolvimento.

Bun 1.x no dia a dia: o que mudou na prática para apps Node.js existentes
Linguagens de Programação e Runtimes 05/05/2026

Bun 1.x no dia a dia: o que mudou na prática para apps Node.js existentes

Bun é um runtime JavaScript all-in-one criado por Jarred Sumner, escrito em Zig, que combina runtime, bundler, test runner e gerenciador de pacotes em uma única ferramenta. Diferente do Node.js, que depende de V8 e do ecossistema npm com múltiplas ferramentas separadas, Bun usa JavaScriptCore da Apple e implementa internamente o que o Node.js delega a bibliotecas externas.