stamatios
← Voltar ao feed
Livro de histórias antigo com placas de circuito e trechos de código ilustrados nas páginas, representando anedotas da ciência da computação
Dev & Engenharia · Ciência & Espaço

Histórias intrigantes da ciência da computação

resumo de ~3 min

Uma coleção de histórias da computação

Al Sweigart publicou uma lista compilada com o auxílio de um LLM e revisada manualmente de histórias intrigantes da ciência da computação e do desenvolvimento de software. O autor explica que, por ter certa idade, conhece muitas anedotes do campo, mas suspeitava que houvesse mais. Ele usou um prompt inspirado no comentário de Tony Hoare sobre o null ter sido seu erro de bilhão de dólares, pedindo outras histórias intrigantes sobre programação e design de software, positivas ou negativas. O resultado começa dominado por histórias de bugs e, em alguns momentos, deriva para conceitos mais do que para narrativas. Segundo Sweigart, ele revisou e corrigiu vários links, e a maioria aponta para a Wikipedia, evitando sites de conteúdo caça-cliques.

Falhas célebres de software

A lista reúne casos clássicos de erro tecnológico. Tony Hoare descreve a invenção da referência nula como seu erro de bilhão de dólares. O voo 501 do Ariane 5 foi destruído por um estouro em conversão de inteiro reutilizada. O Mars Climate Orbiter foi perdido por divergência entre unidades métricas e imperiais. O Therac-25 causou overdoses letais de radiação por condições de corrida e projeto de segurança deficiente. A Knight Capital perdeu cerca de 440 milhões de dólares em 45 minutos após uma implantação malfeita. Um erro acumulado de ponto flutuante em temporização contribuiu para a falha do míssil Patriot e para 28 mortes. O bug FDIV do Pentium provocou o primeiro recall completo de um chip de computador, com custo de 475 milhões de dólares. Também aparecem Heartbleed, Morris worm, o apagão da AT&T em 1990, o incidente da Cloudflare com regex em 2019 e o caso do GitLab em 2017, quando um administrador apagou dados de produção durante uma recuperação.

Linguagens, web e cultura de engenharia

Outros itens tratam de decisões de linguagem e compatibilidade. Unix pipes e a ideia de que tudo é arquivo viraram padrões duradouros de composabilidade. A função gets() de C era tão insegura que acabou removida do padrão da linguagem. As exceções verificadas de Java permanecem controversas. JavaScript foi criado em dez dias por Brendan Eich, deixando peculiaridades que marcaram a web. O quirks mode dos navegadores preservou bugs antigos por compatibilidade. A carta Goto Considered Harmful, de Dijkstra, ajudou a impulsionar a programação estruturada. A reescrita da Netscape virou advertência clássica sobre reescritas completas. Há ainda SQLite e sua cultura de testes, Erlang com let it crash, Smalltalk, Lisp, Algol 60, o princípio de custo zero do C++ e o borrow checker do Rust.

Sistemas distribuídos, leis e conceitos

A seção final cobre infraestrutura, leis e princípios. Estão incluídos o problema do ano 2000, o problema de 2038, bugs de segundo intercalar, o bug OpenSSL do Debian, o goto fail da Apple, Left-pad, Log4Shell e o hack da DAO. O Excel aparece duas vezes: pelo bug do ano bissexto de 1900, preservado por compatibilidade com Lotus 1-2-3, e pela corrupção de nomes de genes causada por conversão automática de datas. Entre princípios, Sweigart lista Hyrum’s Law, Postel’s Law, Greenspun’s Tenth Rule, Conway’s Law, Gall’s Law, Worse is Better, Second-System Effect, The Mythical Man-Month, NASA’s Power of Ten, o código do Doom, a raiz quadrada inversa rápida do Quake, a criação do Git por Linus Torvalds, Plan 9, TCP congestion collapse, DNS, Amazon Dynamo, MapReduce, Paxos, Raft, o Problema dos Generais Bizantinos e o teorema CAP.