1 pontos por GN⁺ 1 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Principia Softwarica é uma série que transforma em livros o código-fonte do kernel, shell, sistema de janelas, compilador, linker, editor, navegador e depurador do Plan 9 from Bell Labs, ajudando a entender o funcionamento interno do computador
  • Cada livro é criado a partir de um programa literário (literate program) que reúne código-fonte e documentação, e tanto o código real quanto o livro são gerados automaticamente a partir do mesmo documento
  • A série inteira tem 205.081 LOC, 82.014 LOE e 6.312 páginas, e o objetivo é alcançar LOE/LOC 1,0, correspondendo uma linha de explicação para cada linha de código
  • O Plan 9 é pequeno, com 183K LOC no sistema inteiro, e aplica de forma uniforme ideias como estilo C consistente, “tudo é arquivo”, namespaces por processo e transparência de rede, tornando todo o sistema operacional algo que pode ser explicado
  • O código-fonte do projeto está disponível em github.com/aryx/principia-softwarica, e Getting Started mostra como compilar e executar o Plan 9 com Docker ou a partir do código-fonte

Visão geral do projeto

  • Principia Softwarica é uma série de livros que ajuda a entender o funcionamento interno do computador ao explicar em detalhe todo o código-fonte dos principais programas de sistema usados por programadores
  • Todos os programas foram extraídos do Plan 9 from Bell Labs, um sistema operacional projetado como sucessor do Unix, partindo do princípio central de que o código é pequeno e elegante
  • Os programas abordados incluem kernel, shell, sistema de janelas, compilador, linker, editor, navegador web e depurador, com cada programa organizado como um livro separado
  • O livro é tanto um documento que explica a implementação quanto a própria implementação
  • O código-fonte do projeto está disponível em github.com/aryx/principia-softwarica

Por que isso é necessário

  • Lacuna na educação

    • Quando você digita ls em uma janela de terminal, a resposta sobre o que acontece passa por shell, biblioteca C, kernel, stack gráfica e sistema de janelas
    • Keith Adams foi colega no Facebook e depois se tornou Chief Architect da Slack, e usava essa pergunta em entrevistas. O rastreamento completo está em The Journey of ls
    • Hoje, “full stack” normalmente significa React, Node e nuvem, mas a stack real de baixo nível inclui compilador, linker, kernel e chamadas de sistema
    • Existem ótimos livros didáticos que explicam os conceitos de programas de sistema, mas quase não há material que mostre o código-fonte real, e o Principia Softwarica busca preencher essa lacuna
  • Importância na era da IA

    • Ferramentas de IA para programação executam centenas de vezes por dia programas como grep, sed, diff, awk, gcc e ld, que o Principia Softwarica explica
    • Se no trabalho de programação escrever código é 20% e entender é 80%, então, quanto mais a IA assume os 20%, mais importante se torna os 80% de entender o que o código realmente faz, descendo até o hardware
    • A ideia de fundo é que, se as máquinas passaram por deep learning, os humanos também precisam aprender em profundidade

Livros e escopo

Por que escolher o Plan 9

  • O Plan 9 é pequeno o suficiente para permitir uma compreensão realista do sistema operacional inteiro, foi escrito em um estilo C consistente e aplica de forma uniforme algumas ideias poderosas
    • tudo é arquivo
    • usa namespaces por processo
    • oferece transparência de rede
  • Não é tão chamativo quanto o macOS ou o Windows, mas essencialmente oferece os mesmos serviços centrais
    • kernel que gerencia processos e memória
    • sistema de janelas
    • shell
    • compilador
    • rede
    • aplicações gráficas
  • O sistema Plan 9 completo, incluindo kernel, compilador, shell, sistema de janelas etc., tem 183K LOC, quase 2 vezes menor que o vim com 350K LOC
  • Se considerarmos que um livro de 400 páginas cobre cerca de 12K LOC, o Principia Softwarica consegue cobrir o Plan 9 inteiro em cerca de 15 volumes
    • um programa único como o gdb exigiria 10 vezes mais livros
    • o gcc exigiria 100 vezes mais livros
  • Wayland é o substituto moderno do X11 e Clang é o substituto moderno do GCC, mas uma “reescrita limpa” por si só não torna um programa menor
  • A abordagem do Plan 9, projetada desde o início com a simplicidade como meta, permite explicar cada linha em forma de livro

Como aplicar o que foi aprendido a outros sistemas

  • Não é necessário usar o Plan 9 diretamente; entender um sistema operacional pequeno e elegante pode dar intuição sobre Linux, macOS e Windows
  • Kernel, compilador, linker, shell, editor, depurador, toolkit de GUI e stack de rede resolvem os mesmos problemas fundamentais, e a essência do problema é a mesma quer o código tenha 5 mil linhas ou 500 mil
  • Ler o compilador C do Plan 9 dá o vocabulário necessário para explorar o GCC
  • Entender o linker do Plan 9 de uma vez faz com que o tratamento de relocations do LLD deixe de ser intimidador e passe a ser algo legível
  • Ver como o acid lê a tabela de símbolos e percorre a stack ensina o que observar no GDB
  • Uma implementação pequena fornece um modelo de trabalho para distinguir complexidade essencial de complexidade acidental em codebases grandes
  • As ideias do Plan 9 já se espalharam amplamente
    • UTF-8 foi criado por Thompson e Pike para o Plan 9
    • /proc veio do Plan 9
    • os namespaces do Linux, base do Docker e dos containers, vieram do Plan 9
    • Go foi criado por Pike e Thompson, e as goroutines foram inspiradas na libthread do Plan 9
    • o protocolo 9P é usado no WSL2
  • grep, sed, awk, diff, cc, ld, explicados pelo Principia Softwarica, são ferramentas que programadores usam todos os dias, e os mesmos conceitos são expressos com muito mais clareza no Plan 9
  • plan9port leva os utilitários de espaço de usuário do Plan 9, como grep, sed e awk, para Linux e macOS
  • goken9cc permite usar a toolchain C do Plan 9 em Linux, macOS e Windows para gerar binários nativos dessas plataformas

Código-fonte e execução

  • github.com/aryx/principia-softwarica — código do Plan 9 e programas literate usados no Principia Softwarica
  • Getting Started — como compilar e executar o Plan 9 com Docker ou a partir do código-fonte
  • The Journey of ls — rastreamento de como um comando simples atravessa cada camada do sistema e de como os livros se conectam entre si

Port para OCaml e ferramentas auxiliares

  • Depois de escrever vários volumes, alguns programas foram portados para OCaml, uma linguagem funcional estaticamente tipada
  • A motivação original era entender melhor o código em C
    • mover um programa para outra linguagem revela quais partes são essenciais e quais são incidentais
    • bugs no port revelam partes sutis que estavam escondidas no original
  • O port para OCaml evoluiu para um projeto separado, XIX, com seu próprio site e uma série de livros de programação literate para lidar com as ferramentas na versão OCaml
  • syncweb — ferramenta de programação literate usada para criar todos os livros, descendente do Noweb
  • goken9cc — compilador cruzado C para compilar o Plan 9 em Linux, macOS e Windows, descendente do Kencc

Trabalhos relacionados e diferenças

  • Project Oberon é o trabalho mais próximo do Principia Softwarica em espírito, por apresentar um sistema operacional completo junto com todo o código-fonte, incluindo compilador e sistema de janelas
    • Oberon só pode executar programas Oberon, sendo um mundo autocontido belo, mas isolado, como Smalltalk
    • Plan 9 e Unix são sistemas de uso geral capazes de compilar e executar programas escritos em qualquer linguagem
    • Oberon não tem rede e roda em hardware personalizado
    • Principia Softwarica cobre um escopo mais amplo, de compilador, linker, shell, depurador, gráficos e rede em cima de um sistema operacional real
  • The Elements of Computing Systems também é conhecido como Nand2Tetris e constrói um computador do portão NAND até o Tetris
    • É excelente do ponto de vista educacional, mas o hardware e o software são uma CPU de brinquedo, um SO de brinquedo e uma linguagem de brinquedo criados para o curso
    • Principia Softwarica adota a abordagem oposta: explicar código real e um sistema operacional real que roda em hardware real
  • Computer Systems: A Programmer's Perspective é conhecido como CS:APP e é um excelente livro-texto que explica conceitos de programação de sistemas como layout de memória, linking, memória virtual e concorrência
    • CS:APP para nos conceitos e não mostra o código-fonte de um kernel real, de um linker real ou de um compilador real
    • Principia Softwarica complementa o CS:APP ao explicar esse código-fonte linha por linha

Histórico e autor

  • Em março de 2026, o site do Principia Softwarica foi lançado
  • Em 2025, o projeto foi retomado para voltar a compilar e rodar em QEMU e Raspberry Pi, com adição de Dockerfile e CI
  • De 2019 a 2024, houve uma pausa por causa do trabalho em Semgrep
  • Em 2017, o kernel foi portado para Raspberry Pi e o trabalho avançou nos livros de Shell e Graphics
  • Em 2016, o livro Build System foi concluído e os primeiros programas literate de Libcore e Compiler foram criados
  • Em 2015, os livros Assembler e Linker foram concluídos e houve um encontro com Knuth
  • Em 2014, o projeto começou com um fork do Plan 9, compilação cruzada no macOS e a criação dos primeiros programas literate
  • Principia Softwarica foi escrito por Yoann Padioleau, e o código inclui contribuições de Ken Thompson, Rob Pike, Dave Presotto, Phil Winterbottom, Tom Duff, Andrew Hume e Russ Cox
  • Assim como Principia Mathematica trata dos fundamentos da matemática, o objetivo de Principia Softwarica é tratar de programas de sistemas fundamentais

1 comentários

 
GN⁺ 1 시간 전
Comentários do Lobste.rs
  • O título claramente faz referência a Principia Mathematica, mas “softwarica” não é latim
    Parece uma chamada de função em C escrita para soar como latim, mas quebrada como foo(bar; baz]; um título melhor poderia ser “Principia Programmatum” (princípios dos programas) ou “Principia Artis Programmatoriae” (princípios da arte da programação)

    • Sendo rigoroso, “Programmatum” também não existe, e o termo mais próximo, “Programmum”, significa “proclamação, decreto”, não programa
      Como o latim não tem palavras para software ou programação, tudo bem criar termos novos
      “Programmum/Programmatum” soa mais plausível porque o inglês “program” veio do francês “programme”, que por sua vez veio do latim “programmum”
      Se fosse pegar mais diretamente do francês logiciel, seria “logique” (lógica) + “iel” (sufixo vindo de matériel), e daí daria para ligar isso ao latim “logica”, “materialis/materia” e traduzir “program” como “logicia” e “programs” como “logicium”
      Dito isso, só estudei latim por dois anos no ensino médio, então não tenho certeza
    • “Principia Programmatica” também parece possível
    • Achei que a graça era justamente o latim estar deliberadamente errado
      É uma língua morta, e o título faz referência a um projeto fracassado bem conhecido, então colocar um título em latim correto num livro em inglês hoje em dia já seria algo meio risível
      Digo isso como alguém que já leu latim com bastante fluência no passado
  • No começo hesitei ao ver a menção a Plan 9, mas gostei da explicação detalhada de por que o autor escolheu o Plan 9
    Em resumo, por ele ser pequeno, e a própria explicação soa como um ótimo texto de divulgação do livro

    • Fiquei curioso para saber por que você hesitou ao ver a menção a Plan 9
  • Gostei de que, depois de portar o OCaml para o Plan 9, o autor tenha reescrito uma boa parte do espaço do usuário em OCaml para entender melhor o que acontece em C
    Nesse processo, o código surpreendentemente também passou a rodar no Windows, e fiquei curioso para saber quem está financiando esse trabalho

  • É um trabalho realmente absurdo de tão grande
    17 volumes, mais de 6 mil páginas, e tudo parece ter sido publicado na semana passada
    Queria saber se alguém conhece mais contexto ou histórico sobre o autor

    • Veja esta thread no 9fans
      https://www.mail-archive.com/9fans@9fans.net/msg45156.html
      Resumindo: começou em 2014, e o autor vai apresentar o trabalho amanhã às 13:45 no horário local, na IWP9
      http://iwp9.org/#prg
    • Não consigo deixar de pensar que alguns livros mais curtos teriam sido mais úteis para o leitor
      Claro que o autor provavelmente aprendeu uma quantidade enorme nesse processo
  • Principia Softwarica é uma série de livros que explica o funcionamento interno do computador por meio de uma explicação detalhada do código-fonte completo dos programas centrais usados por programadores
    Kernel, shell, sistema de janelas, compilador, linker, editor, depurador etc. são tratados em livros separados, e o sistema operacional-alvo parece ser o Plan 9

    • Dizer que “o sistema operacional-alvo parece ser o Plan 9” é um resumo bem impreciso
      A página diz Learn Here, Apply Everywhere, e explica que não é necessário usar Plan 9
      A ideia é que, ao entender um sistema operacional pequeno e elegante, você ganha uma intuição profunda sobre Linux, macOS e até Windows
  • Entendo o que o autor quer dizer, mas afirmar que “Oberon só consegue executar programas Oberon” não me parece uma limitação do sistema Oberon
    Em princípio, qualquer linguagem de programação poderia ter como alvo aquela arquitetura e runtime

  • Entendi que isso foi derivado do Plan 9, mas fiquei curioso sobre qual dos dois é melhor, Plan 9 ou Inferno

  • Parece um projeto extremamente ambicioso
    Acredito que ler bom código, especialmente código acompanhado de explicações sobre as escolhas de design, ajuda a se tornar um programador melhor
    Isso vale ainda mais quando é código de uma área um pouco fora da sua especialidade, e isso pode ser uma ótima ferramenta de aprendizado