La idea principal de la programación alfabetizada es escribir programas como textos matemáticos. Uno puede definir lo que significa cada concepto que se necesita en el programa lo más claro posible, luego explicar cómo se implementa en el lenguaje y por qué uno decidió hacerlo de esa manera y no de otra manera o de lo que se va a cambiar más adelante.
Los cambios también se pueden documentar comentando la pieza de código para cambiar e insertar la nueva que explica el motivo del cambio. Algunos cambios pueden depender de las transformaciones del código para optimizar su rendimiento. Por ejemplo, hacer un bucle, en lugar de 2 bucles en algún lenguaje C, cambiar una expresión por una más simple, etc. O algo más complejo como cambiar otra estructura de datos para representar información. Cada cambio está bien justificado y documentado. Uno puede comprender el problema del dominio del programa, simplemente leyendo el código fuente, entendiéndolo en profundidad. Evitando errores debido a ambigüedades. La génesis del programa está completamente documentada, uno puede recordar todo más tarde, porque cada pensamiento está en el programa.
Estrictamente hablando, se pueden escribir programas alfabetizados con texto plano, si el programa está desarrollado, pero escribirlo en TeX/LaTeX es la forma más estética, funcional y sencilla, porque no es difícil ubicar la marca LaTeX entre los más lenguajes de programación.
Es natural escribir programas alfabetizados en Haskell, porque una secuencia de comandos Haskell contiene un conjunto de declaraciones, no de instrucciones. Puede colocar todas las declaraciones en cualquier orden. Eso es diferente en otros idiomas donde es importante ordenar las instrucciones de una manera particular.
No he usado web ni cweb o programas similares, pero esos programas ayudan a componer los programas en un orden lógico para un ser humano, mientras que los módulos del programa se pueden generar para una compilación adecuada.
Hay un paquete LaTeX llamada listados que es fácil de usar se puede empezar cada pieza de código de cerrar el comentario y terminando el código de abrir un nuevo comentario, por lo que yo recuerdo, algo como esto:
% /* begin of literate program
\documentstyle{article}
\usepackage{listings}
\lstdefinitions here I do not remember the syntax. Here one can define
a replacement for startcode*/ and /*endcode for spaces.
more definitions here
\begin{document}
Your explanation including formulas like $s=c\times\sum_{i=0}^{i=N} x_i$ etc.
\begin{lstlising}
startcode*/
s=0
for(i=0;i<=N;i++) s=s+x[i];
s=c*s;
etc..
/*endofcode
\end{lstlisting}
More explanation ...
\end{document}
% end of literate program */
en el preámbulo del texto puede definir el código de inicio */y/* endofcode como palabras clave para reemplazar por espacios en las definiciones adicionales para el paquete de listados. Ver la documentación del paquete.
al final de la fuente LaTeX simplemente escriba:
% end of literate program */
que es un comentario en LaTeX en un principio se puede colocar el contrario:
% /* start of program
Extracción del látex comentario signo% cuando desee compilar el programa y ponerlo de nuevo cuando compile LaTeX.
Si nunca antes ha usado LaTeX, primero puede comenzar con texto sin formato. Quizás combinándolo con doxigen para indexar todo. Doxigen no es necesario con LaTeX porque es un sistema de composición tipográfica, donde puede crear varios índices, hipervínculos, estructurar la documentación como un libro.
Los programas de Haskell generalmente se escriben en estilo alfabetizado. Tal vez sea una buena idea buscar un libro o artículo para ver uno.
En mi experiencia, demasiados codificadores son demasiado analfabetos para que este enfoque funcione. – MusiGenesis
¿Cuánto tiempo tiene en cuenta para hacer LP ... la wiki no tiene una lista de proyectos que realmente hicieron LP y salieron a tiempo? parece una cosa más de Knuth a la que la mayoría de los mortales no se acercarán. – Gishu
Es realmente una forma de escribir una especificación, ¡excepto por lo general más útil! – kyoryu