Category: Desenvolvimento

Uma Década Depois: Rust Desafia o Reinado de C++ e Java

2025-06-02

Este artigo revisita um relatório do Google de 2011 que compara implementações idiomáticas de um algoritmo de reconhecimento de loop em C++, Java, Go e Scala. Uma década depois, a paisagem da programação mudou, com Rust emergindo como um forte concorrente. O autor replica o experimento, comparando implementações Rust seguras e inseguras. O Rust seguro mostra compilação mais rápida, mas execução ligeiramente mais lenta do que C++; o Rust inseguro supera tanto C++ quanto o Rust seguro. Benchmarks em tamanho de código, tempos de compilação, pegada de memória e tempo de execução revelam a convincente eficiência de desempenho e memória do Rust, especialmente em builds de lançamento, superando C++.

Desenvolvimento

Inode 0 do Unix: Um canto esquecido

2025-06-02

Este artigo explora as limitações dos números de inode em sistemas Unix antigos e o caso especial do inode 0. O autor descobriu que, embora o padrão POSIX não proíba explicitamente o uso do inode 0, muitos sistemas e programas podem depender de números de inode diferentes de zero na prática. Usar o inode 0 pode levar a comportamentos inesperados, pois alguns programas podem interpretá-lo como um sinal de 'arquivo não encontrado'. Embora seja possível experimentar com o inode 0 usando sistemas de arquivos no espaço do usuário, isso não é recomendado devido a potenciais problemas de compatibilidade e resultados imprevisíveis.

Desenvolvimento

Aplicativo de bússola Jetpack Compose leve e sem anúncios

2025-06-02
Aplicativo de bússola Jetpack Compose leve e sem anúncios

MBCompass é um aplicativo de bússola leve criado com Jetpack Compose. Ao contrário da maioria dos aplicativos de bússola sobrecarregados com anúncios e recursos desnecessários, o MBCompass prioriza precisão e eficiência. Ele usa o magnetômetro e o acelerômetro do dispositivo para atualizações em tempo real do campo geomagnético. Os recursos incluem a exibição da localização atual do usuário (usando OpenStreetMap), suporte para tema claro/escuro, exibição da força magnética, manter a tela ligada, orientação paisagem, rotação suave da bússola e fusão de sensores para maior precisão. É totalmente gratuito, sem anúncios e sem compras no aplicativo.

Desenvolvimento Bússola

Moonphase: Sistema de Alerta Antecipado de Fase Lunar em Múltiplas Linguagens

2025-06-02
Moonphase: Sistema de Alerta Antecipado de Fase Lunar em Múltiplas Linguagens

O projeto `moonphase` fornece trechos de código em várias linguagens de programação para calcular a fase da lua. Essas implementações são baseadas no algoritmo do moontool, um programa com interface gráfica dos anos 80 de John Walker, que por sua vez se baseou no livro *Practical Astronomy With Your Calculator*. O projeto suporta linguagens de sistemas, linguagens de script e DSLs, com todas as implementações incluindo casos de teste e calculando a fração iluminada da superfície da lua. O projeto enfatiza código conciso e autocontido, pronto para copiar e colar em seus projetos.

Uma Biblioteca Padrão C++ Escrita por Mim: Simplicidade vs. Completude

2025-06-02
Uma Biblioteca Padrão C++ Escrita por Mim: Simplicidade vs. Completude

O autor escreveu uma biblioteca padrão C++ simplificada por diversão e a compartilhou no Hacker News e Reddit. A postagem gerou uma discussão, não sobre a completude da biblioteca, mas sobre sua nomenclatura e filosofia de design. O autor intencionalmente simplificou o design da biblioteca, exigindo que todos os tipos sejam 'bem-comportados', evitando assim o tratamento de exceções complexas. Isso reduz significativamente a complexidade da biblioteca, mas também limita sua aplicabilidade. A postagem também explora a implementação da divisão de strings e iteradores, comparando as diferenças entre Python e C++. Por fim, o autor completou a funcionalidade para strings, expressões regulares e contêineres básicos com tempos de compilação impressionantemente rápidos.

Desenvolvimento

arXivLabs: Projetos experimentais com colaboradores da comunidade

2025-06-02
arXivLabs: Projetos experimentais com colaboradores da comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs abraçaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade de dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Código-fonte do compilador INTERCAL-72 original redescoberto

2025-06-02
Código-fonte do compilador INTERCAL-72 original redescoberto

O código-fonte original do compilador INTERCAL-72, criado por Don Woods e Jim Lyon em Princeton em 1972, foi redescoberto e disponibilizado ao público. INTERCAL, uma linguagem de programação esotérica notória (esolang), subverte intencionalmente as práticas convencionais de programação com sua sintaxe bizarra e design contra-intuitivo. Essa redescoberta permite que programadores experimentem em primeira mão essa linguagem lendária e entendam sua influência significativa na evolução das linguagens de programação esotéricas.

A Realidade de Custo-Benefício dos Projetos de Métodos Formais

2025-06-02

Este artigo, baseado na experiência do autor, explora os desafios de aplicar métodos formais (MF) em projetos do mundo real. O autor argumenta que o sucesso dos projetos de MF depende de um equilíbrio de custo-benefício. Muitos projetos potenciais de MF não se concretizam devido a altos custos, dificuldades em quantificar benefícios ou incapacidade de demonstrar valor a curto prazo. O artigo destaca que projetos de MF bem-sucedidos exigem entrega de valor precoce, traduzindo resultados técnicos complexos em linguagem compreensível para o cliente e priorizando medidas de garantia de confiabilidade de baixo custo, como testes e revisões de código. O autor enfatiza que MF não é uma solução milagrosa e deve ser combinado com outros métodos para melhorar a confiabilidade e segurança do software.

Pesquisa de Desenvolvedores do Stack Overflow 2024: O Impacto da IA na Satisfação e Salários

2025-06-01
Pesquisa de Desenvolvedores do Stack Overflow 2024: O Impacto da IA na Satisfação e Salários

A 15ª pesquisa anual de desenvolvedores do Stack Overflow revela uma situação mista para os desenvolvedores na era da IA. Enquanto a adoção de ferramentas de IA está crescendo (76% usando ou planejando usar), a felicidade geral dos desenvolvedores permanece baixa (80% infelizes ou complacentes). O salário, e não o trabalho remoto, é o principal fator de satisfação, com variações salariais significativas entre funções e regiões. Preocupações com a precisão e a desinformação da IA também estão surgindo. A pesquisa analisa a fundo as tendências salariais, encontrando reduções salariais em muitas funções em 2024, e explora como a IA está mudando os fluxos de trabalho e a dinâmica da comunidade de desenvolvedores. É uma leitura obrigatória para quem se interessa pelo estado atual da força de trabalho em tecnologia.

Pesquisa de Software: O Mito do Custo 100x de Bugs e a Falta de Evidências Empíricas

2025-06-01
Pesquisa de Software: O Mito do Custo 100x de Bugs e a Falta de Evidências Empíricas

Um artigo examinando o custo de corrigir bugs de software desmascara um mito antigo: que corrigir bugs fica exponencialmente mais caro com o tempo. Esse mito provém de um estudo da IBM que não existe. Na realidade, pesquisas existentes oferecem pouco suporte para essa afirmação, com alguns estudos mostrando nenhuma diferença significativa nos tempos de resolução. O artigo pede uma maior ênfase na pesquisa empírica de engenharia de software, destacando a importância de revisões de código, ciclos de iteração curtos e loops de feedback, enquanto critica a tendência da academia de priorizar a teoria em detrimento da prática.

Desenvolvimento empirismo

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-06-01
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

ZenTransfer: Utilitário Gratuito de Transferência de Arquivos para Fotógrafos

2025-06-01
ZenTransfer: Utilitário Gratuito de Transferência de Arquivos para Fotógrafos

ZenTransfer é um utilitário gratuito de transferência de arquivos para Mac e Windows, projetado para fotógrafos profissionais. Ele esvazia cartões SD e garante backups 3-2-1, organiza arquivos em pastas por data, faz upload para AWS S3, Azure, Google Cloud Platform e retransmite para vários serviços FTP ou em nuvem por meio do zentransfer.io. Atualmente em versão beta, o desenvolvedor Chris busca feedback do usuário para determinar o desenvolvimento futuro e adições de recursos. Apoie o projeto compartilhando, doando ou se inscrevendo no serviço zentransfer.io.

Desenvolvimento fotógrafo

Navegador Ladybird: Atualização de maio - Aumento de desempenho e novos recursos

2025-06-01
Navegador Ladybird: Atualização de maio - Aumento de desempenho e novos recursos

O projeto do navegador Ladybird teve um mês de maio produtivo, mesclando 261 pull requests de 53 colaboradores. O projeto recebeu novos patrocinadores e recebeu oficialmente o status de isenção de impostos. As principais conquistas deste mês incluem: adição de 15.961 novos testes aprovados do Web Platform Tests (WPT) com velocidade de execução significativamente melhorada; implementação de um novo analisador de data JavaScript mais tolerante; conclusão das implementações de API de área de transferência e fluxos transferíveis; suporte inicial para SharedWorker; substituição da implementação BigInt interna pelo LibTomMath para melhorias de desempenho; implementação de var() e attr() em abreviações de CSS; e otimizações de desempenho resultando em uma aceleração de 10% no Speedometer 2.1.

Desenvolvimento Navegador Ladybird

Objetos Duráveis do Cloudflare: O Guia Definitivo

2025-06-01
Objetos Duráveis do Cloudflare: O Guia Definitivo

Este guia abrangente mergulha profundamente nos Objetos Duráveis do Cloudflare, uma poderosa tecnologia serverless. Os Objetos Duráveis permitem que desenvolvedores criem um número quase infinito de mini-servidores globalmente, com armazenamento persistente integrado e capacidade de hibernar entre solicitações. Eles se destacam em cenários multijogador, possuem WebSockets integrados e oferecem alarmes para acionar código fora de solicitações HTTP. Os Objetos Duráveis simplificam a construção de aplicativos serverless com estado e fornecem armazenamento de dados eficiente com suporte SQLite. O artigo cobre arquitetura, APIs, custos e casos de uso do mundo real, oferecendo um guia completo para entender e aproveitar essa tecnologia revolucionária.

Desenvolvimento Objetos Duráveis

Arquitetura do Amiga OS: Lições de um Sistema Legado

2025-06-01

Este artigo mergulha na API e ABI do Amiga OS, focando em sua abordagem única de chamada direta para bibliotecas compartilhadas, eliminando o link em tempo de execução. Isso é alcançado chamando uma tabela de instruções de ramificação em um local conhecido dentro da biblioteca. Exec.library, sempre no mesmo endereço, fornece funções para obter os endereços das tabelas de outras bibliotecas. Essa ABI é independente de linguagem e funciona mesmo com proteção de memória moderna. O Amiga OS também é elogiado por seu kernel eficiente, sistema de mensagens e sistema de janelas Intuition, que permite o tratamento assíncrono de eventos, evitando os travamentos comuns em sistemas modernos. Os princípios de design do Amiga OS permanecem relevantes hoje.

Desenvolvimento

Tailscale Lança Grants: Controles de Acesso de Próxima Geração

2025-06-01
Tailscale Lança Grants: Controles de Acesso de Próxima Geração

A Tailscale anuncia a disponibilidade geral do Grants, seu sistema de controle de acesso de próxima geração. O Grants unifica as permissões de rede e aplicativo em uma única sintaxe simplificada, melhorando os ACLs existentes. Ele simplifica a escrita de políticas, adiciona recursos como a incorporação direta do Tailscale em aplicativos por meio da biblioteca tsnet para autorização baseada em identidade e recursos personalizados de aplicativo, e introduz um campo `via` para roteamento de tráfego granular. Importantemente, a Tailscale continuará a suportar a sintaxe ACL antiga indefinidamente, permitindo uma migração incremental.

Desenvolvimento

O gerenciamento de estado do Svelte supera o React: adeus, prop drilling

2025-06-01
O gerenciamento de estado do Svelte supera o React: adeus, prop drilling

Gerenciar estado no React pode se tornar uma dor de cabeça ao criar aplicativos complexos. Por padrão, o React não possui gerenciamento de estado global integrado, forçando os desenvolvedores a depender de bibliotecas de terceiros como Zustand ou Jotai para superar o prop drilling, levando a projetos complexos e difíceis de manter. Em contraste, o Svelte oferece uma solução de gerenciamento de estado limpa e fácil de usar — Svelte stores. Não requer dependências adicionais e usa sintaxe intuitiva, simplificando muito o gerenciamento de estado, permitindo que os desenvolvedores se concentrem na lógica de negócios em vez de lutar com a passagem de estado. Este artigo compara as abordagens de gerenciamento de estado do React e do Svelte com exemplos de código e destaca as vantagens do Svelte stores.

Desenvolvimento

Citações em JavaScript: Inspiradas em Lisp para Desenvolvimento Front-End Modular

2025-06-01
Citações em JavaScript: Inspiradas em Lisp para Desenvolvimento Front-End Modular

Este artigo explora como o conceito de "código é dado" do Lisp pode melhorar a modularidade em JavaScript para desenvolvimento de aplicativos web. O autor aponta a falta de um mecanismo de citação em JavaScript, como em Lisp, impedindo a manipulação direta de trechos de código como dados. No entanto, imitando a citação - enviando identificadores de módulos do lado do cliente em vez do código real para o cliente - a execução atrasada e a composição modular são alcançadas. Isso permite que programas de back-end componham comportamentos do lado do servidor e do lado do cliente, garantindo que toda a lógica do lado do servidor seja concluída em um único ciclo de solicitação/resposta e permitindo streaming progressivo, melhorando assim a eficiência e a manutenibilidade de aplicativos web.

Desenvolvimento

Codificação por Vibração com IA: O Fim dos Programadores?

2025-06-01
Codificação por Vibração com IA: O Fim dos Programadores?

O uso de chatbots de IA para 'codificação por vibração' está mudando rapidamente o desenvolvimento de software. A BOND, uma startup, lançou uma nova ferramenta de produtividade online em menos de um dia usando IA para gerar código. Embora essa velocidade seja impressionante, levanta preocupações sobre o futuro dos programadores. Alguns acreditam que a IA substituirá os codificadores completamente, enquanto outros preveem uma mudança para o desenvolvimento assistido por IA, focando em tarefas complexas e resolução criativa de problemas. Embora a IA reduza a barreira de entrada, a experiência humana continua vital para o refinamento do código e projetos complexos.

Desenvolvimento

LLMs: Inundação de Spam Sofisticado – O Pesadelo dos Moderadores

2025-06-01

Um moderador de conteúdo veterano relata duas décadas de combate ao spam, destacando o impacto transformador dos Modelos de Linguagem Grandes (LLMs). LLMs reduziram drasticamente a barreira de entrada para spammers, gerando comentários e resumos realistas e sensíveis ao contexto que são cada vez mais difíceis de detectar. Esta evolução abrange não apenas spam baseado em texto, mas também golpes de voz, levantando sérias preocupações sobre o uso indevido futuro. O autor expressa alarme sobre o desafio crescente, pedindo atenção para este problema crescente e a necessidade de soluções inovadoras para proteger espaços online da maré implacável de desinformação gerada por IA.

Desenvolvimento

O Impacto da Otimização do Compilador em Código Vinculado à Memória: -O3 Nem Sempre é o Melhor

2025-06-01
O Impacto da Otimização do Compilador em Código Vinculado à Memória: -O3 Nem Sempre é o Melhor

Uma pesquisa do Johnny's Software Lab mostra que os benefícios das otimizações do compilador (como -O3 do GCC) nem sempre são significativos em código vinculado à memória. Eles testaram dois núcleos: um com alto paralelismo de nível de instrução (ILP), outro com baixo ILP. Os resultados mostraram uma aceleração de 3x para o núcleo de alto ILP com -O3. No entanto, para o núcleo de baixo ILP, a otimização ofereceu ganhos mínimos porque o acesso à memória se tornou o gargalo. Isso demonstra que em cenários altamente vinculados à memória, mesmo com menos instruções, as melhorias de desempenho são limitadas pelo baixo ILP, exigindo estratégias de otimização adaptadas às características do código.

Extensão de navegador: Redirecionamento de URLs com Regex

2025-06-01
Extensão de navegador: Redirecionamento de URLs com Regex

Esta extensão de navegador (Firefox, Chrome, etc.) permite que você redireione URLs com base em padrões personalizados de regex ou curingas. É poderosa para bloquear anúncios, forçar sites para desktop, simplificar pesquisas no DuckDuckGo e muito mais. Exemplos incluem redirecionar vídeos curtos do YouTube para o YouTube regular ou pesquisas do Google com !bangs para o DuckDuckGo. Regras predefinidas estão incluídas para casos de uso comuns.

Desenvolvimento redirecionamento de URL

Figma Slides: Um Desastre de Apresentação

2025-06-01
Figma Slides: Um Desastre de Apresentação

O autor tentou usar o Figma Slides para uma apresentação, inicialmente impressionado com sua poderosa visualização de grade, layout automático e componentes. No entanto, a apresentação real foi um desastre: o modo offline falhou, as animações apresentaram falhas e foram necessários cliques repetidos para avançar os slides. Em contraste, o uso de longa data do Keynote pelo autor, embora mais simples, mostrou-se consistentemente confiável. A experiência, finalmente, destacou o valor de uma tecnologia confiável, embora menos chamativa.

Desenvolvimento Software de Apresentação

Erros estruturados em Rust: avaliando as compensações

2025-06-01

Este artigo explora as vantagens e desvantagens de usar erros estruturados (por exemplo, com `thiserror`) versus `anyhow` em aplicações Rust. Com base na experiência de manutenção de um grande servidor web Rust, o autor argumenta que os tipos de erro personalizados, embora aumentem a quantidade de código e os custos de manutenção, oferecem benefícios significativos: mostrar claramente todos os modos de falha potenciais de uma função, melhorando a legibilidade e a revisão do código; criar interfaces mais descritivas; evitar mensagens de erro redundantes; reforçar a adição de contexto; e permitir dados e funcionalidades extras. No entanto, as desvantagens incluem aumento do volume de código, desafios de nomenclatura, sobrecarga de manutenção e potenciais problemas de desempenho. O autor conclui que a compensação deve ser avaliada caso a caso, sugerindo que em aplicações grandes, as vantagens dos erros estruturados podem superar os custos.

Desenvolvimento

Instalação de rede do NixOS com nixos-anywhere: Uma abordagem declarativa

2025-06-01
Instalação de rede do NixOS com nixos-anywhere: Uma abordagem declarativa

Após uma pausa de uma década, o autor revisita o NixOS e compartilha sua experiência com a instalação de rede usando o nixos-anywhere. Ao contrário dos métodos gráficos ou manuais, o nixos-anywhere permite a configuração e instalação declarativas do NixOS em máquinas remotas. Os arquivos de configuração são controlados por versão, garantindo reprodutibilidade e integridade do sistema. O artigo detalha a construção de uma imagem ISO de instalação personalizada e o uso do nixos-anywhere para instalação remota, destacando os benefícios da configuração declarativa e do controle de versão do NixOS.

Desenvolvimento configuração declarativa

tldx: Geração de nomes de domínio ultrarrápida

2025-06-01
tldx: Geração de nomes de domínio ultrarrápida

tldx é uma ferramenta de linha de comando que gera e verifica rapidamente a disponibilidade de nomes de domínio. Permite a personalização de prefixos, sufixos e domínios de nível superior (TLDs), realizando verificações simultâneas para maior eficiência. Basta inserir palavras-chave, e o tldx retorna rapidamente as combinações de domínio disponíveis, uma ótima ferramenta para fundadores e desenvolvedores que buscam o nome perfeito. Com suporte para macOS, Linux e Windows, o tldx oferece instalação fácil por meio do brew ou download manual.

Erros Estruturados em Go: Conectando o Log e o Tratamento de Erros

2025-06-01
Erros Estruturados em Go: Conectando o Log e o Tratamento de Erros

Este artigo descreve experimentos para melhorar o gerenciamento de erros em programas Go de tamanho médio, especialmente APIs HTTP. O autor destaca as limitações das strings de erro simples para logging estruturado e filtragem eficiente. Uma abordagem baseada em contexto para erros estruturados é apresentada, incorporando metadados dentro dos erros para integração perfeita com logging estruturado. Essa abordagem, usando tipos de erro personalizados e o pacote context, aprimora a riqueza e a legibilidade das informações de erro sem sobrecarga significativa de código, simplificando a depuração. O autor promove sua biblioteca de código aberto, `fault`, para otimizar esse processo.

Desenvolvimento Logging Estruturado

Linguagem de Programação Nature: Uma Evolução do Go?

2025-06-01
Linguagem de Programação Nature: Uma Evolução do Go?

Nature é uma linguagem de programação open-source de propósito geral, projetada para proporcionar uma experiência de desenvolvimento elegante e concisa, permitindo que os desenvolvedores criem softwares seguros e confiáveis ​​multiplataforma de forma simples e eficiente. Ela aproveita os pontos fortes do Go, como seu tempo de execução de alto desempenho e coleta de lixo, ao mesmo tempo em que aborda algumas das deficiências do Go, incluindo um sistema de tipos mais robusto e tratamento de erros aprimorado. A Nature atingiu uma versão inicial utilizável, suportando Linux e macOS, e oferece uma rica biblioteca padrão e projetos de exemplo. É adequada para desenvolvimento de jogos, computação científica, IA, sistemas operacionais e desenvolvimento web.

Desenvolvimento

Ressuscitando o Morto: Executando Aplicativos Android em Versões do Windows Não Suportadas com o Project Astoria

2025-06-01
Ressuscitando o Morto: Executando Aplicativos Android em Versões do Windows Não Suportadas com o Project Astoria

Esta postagem detalha como executar o Project Astoria, a solução abandonada da Microsoft para a ponte de aplicativos Android, em várias versões do Windows não suportadas, do Windows Desktop à Atualização de Aniversário e além. Ao utilizar habilmente arquivos e entradas de registro de compilações antigas do Windows 10 Mobile e superar o problema da 'bomba-relógio' de compilações expiradas, o autor conseguiu executar aplicativos Android. O artigo descreve minuciosamente cada etapa, incluindo a cópia de arquivos, a importação de chaves de registro, a configuração de serviços e a implantação de APKs usando uma ferramenta WConnectAgent corrigida. O autor conclui executando com sucesso o Android CPU-Z no Windows 10.

Desenvolvimento
1 2 70 71 72 74 76 77 78 214 215