⬅️ Volver al programa · 🧱 Currículo · 🧭 Metodología · 🤝 Contribuir
Cómo añadir una clase, un lenguaje al núcleo o una familia al Atlas sin romper la verificación.
Regla de oro: el problema común nunca se adapta para favorecer a un lenguaje. Si un lenguaje no puede expresar el concepto, eso se documenta como hallazgo —no se cambia el
casos.json.
Todo deriva de una fuente de verdad:
scripts/curriculo.py PARTES, BIBLIO (libros por parte), LIBROS_NUCLEO (libro por lenguaje)
└── build.py genera classes/_manifest.json, el índice, los README de parte
y las clases de método
└── gen_parteN.py genera las clases de código de cada parte
languages.json el núcleo: nombre, extensión, comando de ejecución, modelo, familia
Scripts de apoyo:
| Script | Qué hace |
|---|---|
verificar_equivalencia.py |
Ejecuta las implementaciones contra casos.json y compara salidas. |
validar_estructura.py |
Comprueba que las 176 clases y sus enlaces están bien formados. |
generar_glosario.py |
Deriva glosario/README.md de las definiciones de las clases. |
enlazar_codigo.py |
Enlaza cada bloque de código a la vista con su archivo real. |
enlazar_primos.py |
Enlaza cada bloque con las versiones de su familia en primos.md. |
verificar_primos.py |
Ejecuta los primos Ruby/Perl/Lua extraídos de primos.md contra casos.json. |
generar_manual.py |
Consolida las 176 clases en manual/MANUAL.pdf (se versiona). |
generar_material.py |
Guías PDF imprimibles por clase en material/ (no se versionan). |
generar_sitio.py |
Construye el sitio de GitHub Pages. |
⚠️ Los
gen_parteN.pyregeneran README de clase, y el contenido redactado a mano se perdería. No los re-ejecutes sobre clases ya escritas: están pensados para el alta inicial de una parte.build.pyes seguro: solo crea las clases que faltan.
PARTES, dentro de scripts/curriculo.py, con su
título, tipo (metodo o de código) y objetivo. Insertarla renumera las siguientes: hazlo
al final de una parte, o asume la renumeración global.python scripts/build.py para regenerar el manifiesto, el índice y los README de parte.casos.json y implementaciones/<lenguaje>/ para los 10
lenguajes del núcleo.primos.md (el mismo problema en los lenguajes primos de las 7 familias) tomando
como patrón el de la clase 041,
y ejecuta python scripts/enlazar_primos.py para insertar los enlaces bajo cada bloque.python scripts/verificar_equivalencia.py <NNN>,
python scripts/verificar_primos.py <NNN> y python scripts/validar_estructura.py.Es la ampliación más cara: implica una implementación por cada clase de código (136 y subiendo). Solo tiene sentido si el lenguaje aporta un modelo que el núcleo no cubre.
languages.json con nombre, extension, run (comando
reproducible), model y familia.LIBROS_NUCLEO en scripts/curriculo.py.implementaciones/<id>/ en cada clase de código, con código idiomático que lea de
stdin y escriba la salida esperada por casos.json..github/workflows/ci.yml
para que se verifique en paralelo.python scripts/verificar_equivalencia.py --all --lang <id>.Mucho más barato, y suele ser la respuesta correcta: el Atlas cubre amplitud sin coste de mantenimiento.
atlas/README.md bajo su familia, con historia (autor, año, motivo),
características (paradigma, tipos, memoria/ejecución), con qué se ejecuta
(compilador/intérprete y gestor de paquetes), el mapa "si ya sabes X…" y su estado
(vivo / legado / nicho).Dos soluciones no necesitan compartir estructura interna. Son comparables si resuelven el mismo contrato y permiten estudiar el mismo conocimiento. La equivalencia puede ser de resultado, de comportamiento o de intención; la clase debe indicar cuál se está usando. El verificador comprueba la primera: misma entrada, misma salida.
python scripts/validar_estructura.py
python scripts/verificar_equivalencia.py --all
npx markdownlint-cli2 "**/*.md"
Y repasa la lista de comprobación de CONTRIBUTING.