1 puntos por GN⁺ 1 시간 전 | 1 comentarios | Compartir por WhatsApp
  • Principia Softwarica es una serie que convierte en libros el código fuente del kernel, shell, sistema de ventanas, compilador, linker, editor, navegador y depurador de Plan 9 from Bell Labs para ayudar a entender cómo funciona una computadora por dentro
  • Cada libro se crea a partir de un programa literario (literate program) que reúne código fuente y documentación, y tanto el código real como el libro se generan automáticamente desde el mismo documento
  • La serie completa abarca 205,081 LOC, 82,014 LOE y 6,312 páginas, y su objetivo es alcanzar un LOE/LOC de 1.0, haciendo corresponder una línea de explicación por cada línea de código
  • Plan 9 es pequeño, con todo el sistema en 183K LOC, y aplica de forma uniforme ideas como un estilo C consistente, “todo es un archivo”, namespaces por proceso y transparencia de red, lo que convierte a todo el sistema operativo en algo que se puede explicar
  • El código fuente del proyecto está publicado en github.com/aryx/principia-softwarica, y Getting Started ofrece cómo compilar y ejecutar Plan 9 con Docker o desde el código fuente

Resumen del proyecto

  • Principia Softwarica es una serie de libros que ayuda a los programadores a entender cómo funciona una computadora por dentro al explicar en detalle el código fuente completo de los programas de sistema fundamentales que usan
  • Todos los programas fueron tomados de Plan 9 from Bell Labs, un sistema operativo diseñado como sucesor de Unix, y parte de la premisa central de que su código es pequeño y elegante
  • Los programas cubiertos incluyen el kernel, shell, sistema de ventanas, compilador, linker, editor, navegador web y depurador, y cada programa está organizado como un libro independiente
  • El libro es un documento que explica la implementación, pero también es la implementación misma
  • El código fuente del proyecto está publicado en github.com/aryx/principia-softwarica

Por qué es necesario

  • Vacíos en la educación

    • Responder qué pasa cuando se escribe ls en una ventana de terminal implica pasar por el shell, la biblioteca C, el kernel, el stack gráfico y el sistema de ventanas
    • Keith Adams fue colega en Facebook y luego Chief Architect de Slack, y usó esta pregunta como pregunta de entrevista. El recorrido completo está en The Journey of ls
    • Hoy en día, “full stack” normalmente se refiere a React, Node y la nube, pero en el stack subyacente real están el compilador, el linker, el kernel y las system calls
    • Hay excelentes libros de texto que explican los conceptos de los programas de sistema, pero casi no existen materiales que muestren el código fuente real, y Principia Softwarica busca llenar esa brecha
  • Importancia en la era de la IA

    • Las herramientas de codificación con IA ejecutan cientos de veces al día programas como grep, sed, diff, awk, gcc y ld, que Principia Softwarica explica
    • Si en el trabajo de programación escribir código es 20% y entenderlo es 80%, entonces mientras la IA se encargue de ese 20%, ese 80% de comprender qué hace realmente el código, hasta bajar al hardware, se vuelve aún más importante
    • De fondo está la idea de que, así como las máquinas pasaron por deep learning, los humanos también deben aprender en profundidad

Libros y alcance

Por qué eligieron Plan 9

  • Plan 9 es lo bastante pequeño como para entender de forma realista todo el sistema operativo, está escrito con un estilo de C consistente y aplica de manera uniforme unas cuantas ideas poderosas
    • Todo es un archivo
    • Usa espacios de nombres por proceso
    • Ofrece transparencia de red
  • No es tan vistoso como macOS o Windows, pero en esencia ofrece los mismos servicios básicos
    • Un kernel que administra procesos y memoria
    • Sistema de ventanas
    • Shell
    • Compilador
    • Redes
    • Aplicaciones gráficas
  • Todo el sistema Plan 9, incluyendo kernel, compilador, shell, sistema de ventanas, etc., tiene 183K LOC, casi 2 veces menos que vim 350K LOC
  • Si se considera que un libro de 400 páginas cubre unas 12K LOC, Principia Softwarica puede cubrir todo Plan 9 en unos 15 volúmenes
    • Un programa individual como gdb requeriría 10 veces más libros
    • gcc requeriría 100 veces más libros
  • Wayland es el reemplazo moderno de X11 y Clang es el reemplazo moderno de GCC, pero una “reescritura limpia” por sí sola no hace que un programa sea más pequeño
  • El enfoque de Plan 9, diseñado con la simplicidad como objetivo desde el inicio, hace posible explicar cada línea en forma de libro

Cómo aplicar lo aprendido a otros sistemas

  • No es necesario usar Plan 9 directamente; entender un sistema operativo pequeño y elegante puede dar intuición sobre Linux, macOS y Windows
  • El kernel, el compilador, el linker, el shell, el editor, el depurador, el toolkit de GUI y la pila de red resuelven los mismos problemas fundamentales; ya sea que el código tenga 5 mil o 500 mil líneas, la esencia del problema es la misma
  • Leer el compilador de C de Plan 9 da el vocabulario necesario para explorar GCC
  • Si entiendes el linker de Plan 9 de una sola vez, el manejo de relocations en LLD deja de ser abrumador y se vuelve algo legible
  • Ver cómo acid lee la tabla de símbolos y recorre la pila enseña qué hay que mirar en GDB
  • Una implementación pequeña ofrece un modelo de trabajo para distinguir la complejidad esencial de la complejidad accidental en codebases grandes
  • Las ideas de Plan 9 ya están ampliamente difundidas
    • Thompson y Pike crearon UTF-8 para Plan 9
    • /proc viene de Plan 9
    • Los Linux namespaces, base de Docker y los contenedores, vienen de Plan 9
    • Go fue creado por Pike y Thompson, y las goroutines están inspiradas en libthread de Plan 9
    • El protocolo 9P se usa en WSL2
  • grep, sed, awk, diff, cc y ld, que Principia Softwarica explica, son herramientas que los programadores usan todos los días, y los mismos conceptos están expresados con mucha más claridad en Plan 9
  • plan9port lleva el espacio de usuario de Plan 9, incluyendo grep, sed y awk, a Linux y macOS
  • goken9cc permite usar el toolchain de C de Plan 9 en Linux, macOS y Windows para crear binarios nativos de esas plataformas

Código fuente y ejecución

  • github.com/aryx/principia-softwarica — código de Plan 9 y programas literarios usados en Principia Softwarica
  • Getting Started — cómo compilar y ejecutar Plan 9 con Docker o desde el código fuente
  • The Journey of ls — seguimiento de cómo un comando simple atraviesa cada capa del sistema y de cómo se conectan los libros entre sí

Port a OCaml y herramientas auxiliares

  • Después de escribir varios volúmenes, algunos programas se portaron a OCaml, un lenguaje funcional de tipado estático
  • La motivación original era entender mejor el código en C
    • Al mover un programa a otro lenguaje, se revela qué partes son esenciales y cuáles son incidentales
    • Los bugs del port dejan ver aspectos sutiles que estaban ocultos en el original
  • El port a OCaml evolucionó hasta convertirse en un proyecto separado, XIX, con su propio sitio web y una serie de libros de programación literaria dedicados a las herramientas en versión OCaml
  • syncweb — herramienta de programación literaria usada para crear todos los libros, heredera de Noweb
  • goken9cc — compilador cruzado de C para compilar Plan 9 en Linux, macOS y Windows, heredero de Kencc

Trabajos relacionados y diferencias

  • Project Oberon es lo más cercano a Principia Softwarica en espíritu, en el sentido de que presenta un sistema operativo completo junto con todo su código fuente, incluyendo compilador y sistema de ventanas
    • Oberon solo puede ejecutar programas Oberon, así que es un mundo autocontenido, hermoso pero aislado, como Smalltalk
    • Plan 9 y Unix son sistemas de propósito general capaces de compilar y ejecutar programas escritos en cualquier lenguaje
    • Oberon no tiene redes y corre sobre hardware personalizado
    • Principia Softwarica abarca un espectro más amplio: compilador, linker, shell, depurador, gráficos y redes sobre un sistema operativo real
  • The Elements of Computing Systems también es conocido como Nand2Tetris y construye una computadora desde compuertas NAND hasta Tetris
    • Es excelente desde el punto de vista educativo, pero tanto el hardware como el software son una CPU de juguete, un SO de juguete y un lenguaje de juguete creados para el curso
    • Principia Softwarica toma el enfoque opuesto: explicar código real y un sistema operativo real que funcionan sobre hardware real
  • Computer Systems: A Programmer's Perspective es conocido como CS:APP y es un excelente libro de texto que explica conceptos de programación de sistemas como layout de memoria, linking, memoria virtual y concurrencia
    • CS:APP se queda en los conceptos y no muestra el código fuente de un kernel real, un linker real o un compilador real
    • Principia Softwarica complementa CS:APP explicando ese código fuente línea por línea

Historial y autor

  • En marzo de 2026 se publicó el sitio web de Principia Softwarica
  • En 2025 se retomó el proyecto para que pudiera volver a compilarse y ejecutarse en QEMU y Raspberry Pi, y se añadieron Dockerfile y CI
  • De 2019 a 2024 hubo una pausa por el trabajo en Semgrep
  • En 2017 el kernel fue portado a Raspberry Pi y avanzó el trabajo en los libros de Shell y Graphics
  • En 2016 se completó el libro de Build System y se crearon los primeros programas literarios de Libcore y Compiler
  • En 2015 se completaron los libros de Assembler y Linker, y conoció a Knuth
  • En 2014 el proyecto comenzó al hacer un fork de Plan 9, compilarlo de forma cruzada en macOS y crear el primer programa literario
  • Principia Softwarica fue escrito por Yoann Padioleau, y el código incluye trabajo de Ken Thompson, Rob Pike, Dave Presotto, Phil Winterbottom, Tom Duff, Andrew Hume y Russ Cox
  • Así como Principia Mathematica trata los fundamentos de las matemáticas, Principia Softwarica tiene como objetivo tratar los programas de sistemas fundamentales

1 comentarios

 
GN⁺ 1 시간 전
Opiniones en Lobste.rs
  • El título claramente hace referencia a Principia Mathematica, pero “softwarica” no es latín.
    Se siente como una llamada a función en C escrita para que parezca latín pero rota, como foo(bar; baz]; un título mejor podría ser “Principia Programmatum” (principios de los programas) o “Principia Artis Programmatoriae” (principios del arte de programar).

    • Si nos ponemos estrictos, “Programmatum” tampoco existe, y lo más cercano, “Programmum”, significa “anuncio, decreto”, no programa.
      Como en latín no existe una palabra para software o programación, tampoco está mal inventar una nueva.
      “Programmum/Programmatum” suena más plausible porque el inglés “program” viene del francés “programme”, y este a su vez del latín “programmum”.
      Si se toma algo más directamente del francés logiciel, este viene de “logique” (lógica) + “iel” (un sufijo tomado de matériel), y conectándolo con el latín “logica”, “materialis/materia”, se podría trasladar “program” como “logicia” y “programs” como “logicium”.
      Dicho eso, solo estudié latín dos años en la preparatoria, así que no estoy seguro.
    • “Principia Programmatica” también parece posible.
    • Vi como punto central que el latín estuviera deliberadamente mal hecho.
      Ya es una lengua muerta, y como el título hace referencia a un proyecto fallido bien conocido, ponerle a un libro en inglés actual un título en latín correcto de por sí resulta un poco ridículo.
      Eso también me lo parece a mí, incluso habiendo leído latín con bastante fluidez en otro tiempo.
  • Al principio me detuve al ver la mención de Plan 9, pero me gustó la explicación detallada del autor sobre por qué eligió Plan 9.
    En resumen, porque es pequeño, y esa explicación en sí se lee como un excelente texto promocional del libro.

    • Me da curiosidad por qué te detuviste al ver la mención de Plan 9.
  • Me gustó que, después de que el autor portó OCaml a Plan 9, reescribiera una gran parte del espacio de usuario en OCaml para entender mejor qué pasa en C.
    En el proceso, el código terminó ejecutándose también en Windows de forma sorprendente, y me pregunto quién está financiando este trabajo.

  • Es un trabajo realmente descomunal.
    17 volúmenes, más de 6 mil páginas, y parece que todo se publicó apenas la semana pasada.
    Me pregunto si alguien conoce más contexto o antecedentes sobre el autor.

  • Principia Softwarica es una serie de libros que explica cómo funciona una computadora por dentro mediante explicaciones detalladas del código fuente completo de los programas fundamentales que usan los programadores.
    El kernel, el shell, el sistema de ventanas, el compilador, el linker, el editor, el depurador y otros temas se tratan cada uno en un libro aparte, y el sistema operativo objetivo parece ser Plan 9.

    • Decir que “el sistema operativo objetivo parece ser Plan 9” es un resumen muy impreciso.
      En la página dice Learn Here, Apply Everywhere, y explica que no hace falta usar Plan 9.
      La idea es que, si entiendes un sistema operativo pequeño y elegante, puedes obtener intuiciones profundas sobre Linux, macOS e incluso Windows.
  • Entiendo lo que el autor quiere decir, pero que “Oberon solo puede ejecutar programas de Oberon” no me parece una limitación propia del sistema Oberon.
    En principio, cualquier lenguaje de programación podría apuntar a esa arquitectura y runtime.

  • Entiendo que esto salió de un fork de Plan 9, pero me pregunto cuál es mejor entre Plan 9 e Inferno.

  • Parece un proyecto muy ambicioso.
    Creo que leer buen código, especialmente código acompañado de explicaciones sobre las decisiones de diseño, te vuelve mejor programador.
    Si además es código de un área un poco fuera de tu especialidad, todavía más, y esto podría ser una herramienta de aprendizaje excelente.