texto sintaxis programar programacion pasos paso para lenguaje encabezado empezar ejemplo desde con como cero aprender aprende .net ms-word ide literate-programming

.net - sintaxis - programacion html



ProgramaciĆ³n alfabetizada (9)

Sin embargo, hoy preferiría adoptar un enfoque diferente: en lugar de prosa para humanos y código para máquinas, prefiero escribir un código que sea tan claro que a los humanos no les moleste leerlo. Cuando siento la necesidad de escribir un comentario, creo que "podría aclarar este código". Eso significa que estoy escribiendo menos documentación, no más.

Eso es lo que hacemos también. Aunque para un gran número de código que producimos, escribir código claro, legible para humanos simplemente no es suficiente. ¿Qué pasa si quieres explicar una función de renderizado de imágenes? Mejor explicarlo usando una imagen, en lugar de escribir media página describiéndolo.

La programación alfabetizada es una forma de desarrollar software donde la documentación es lo primero, luego la codificación. Uno escribe la documentación de un fragmento de código y luego escribe la implementación del fragmento. La apariencia visual del código fuente del software sería un documento simple como palabra, con párrafos de código en él.

Estoy tratando de convertir la tienda de desarrollo en la que trabajo para utilizar solo la programación de lectura y escritura, ya que ofrece grandes ventajas para la legibilidad y el mantenimiento del código. Sin embargo, debido a la falta de herramientas, el uso de LP es limitado en la empresa. Por ejemplo, la forma ideal de alfabetizar el programa es escribir un párrafo utilizando el marcado de palabras, y luego insertar un subpárrafo con la implementación. Pero parece que no puedo encontrar ninguna buena herramienta para que VS200x pueda realizar LP.

Idealmente, tal herramienta se vería igual que Word 2007, pero integrada en el IDE. Cuando el codificador coloca el cursor en un párrafo de código, tendría toda la funcionalidad provista tal como lo tenemos ahora en nuestro IDE.

¿Cuáles son las buenas herramientas para LP, con .NET y VS200x en particular?


+1 por intentar mejorar el proceso de tu equipo

-1 para ir por un camino sin salida

con el debido respeto a Knuth, las pruebas unitarias son mejores que la documentación

  • las pruebas unitarias no pueden estar desactualizadas
  • Contaminar el código con prosa es una gran distracción cuando se depura
  • si su código realmente requiere tanta exposición, probablemente esté mal diseñado y con errores

El único lenguaje no esotérico que conozco que realmente tiene soporte para LP es Haskell, y para ser honesto, no he escuchado mucha demanda de LP en los lenguajes de programación modernos. La mayoría de las personas parecen estar satisfechas con el uso de formatos de documentación en línea (javadoc, rdoc, etc.)


Felicitaciones a usted por tratar de mejorar la forma en que trabaja su equipo. Mientras intente hacer eso, tiene una ventaja sobre aquellos que no lo hacen.

Utilicé Literate Programming para un proyecto una vez. Fue realmente difícil y los resultados fueron realmente buenos. Parecía una compensación razonable.

Sin embargo, hoy preferiría adoptar un enfoque diferente: en lugar de prosa para humanos y código para máquinas, prefiero escribir un código que sea tan claro que a los humanos no les moleste leerlo. Cuando siento la necesidad de escribir un comentario, creo que "podría aclarar este código". Eso significa que estoy escribiendo menos documentación, no más.

Bueno, buena suerte con cualquier camino que elijas.


Mis disculpas. Debería haber mencionado que ya estamos usando Doxygen con un script automatizado de compilación de documentos. Usamos las etiquetas de doc .NET siempre que es posible, y donde las etiquetas de doc .NET XML se quedan cortas, mezclamos las etiquetas doxygen. Esto funciona bastante bien El punto es que la producción disminuye bastante al escribir documentación: Nosotros (los humanos) somos muy malos en la producción de documentación sin ningún editor WYSIWYG. Sin mencionar error sensible.

El equipo se encuentra actualmente en la fase de convertir el modo de pensar de la codificación en línea recta a la primera documentación de escritura y luego al código. Este es el paso más importante, ya que permite a los codificadores adoptar el paradigma LP.

Aquí hay un mercado para un plugin de VS que lo hace, supongo.

Además, Doxygen parece ser una buena herramienta para utilizar activamente la solución del método LP para este problema. Aunque es muy limitado en uso.


Solo puedo sugerirle que marque su código con comentarios doxygen , luego puede generar la documentación de su código, que sé que es casi una forma de hacer lo que quiere, pero al menos termina con el resultado deseado: código y documentación que proviene de los mismos archivos fuente. Obviamente, esto tiene la ventaja de que utiliza su IDE existente para la codificación que viene con todas las golosinas usuales de código habituales.

Si está tratando de convertir su equipo de desarrollo, este enfoque podría ser más fácil de tragar que una metodología de alfabetización en toda regla, todavía están contentos con la codificación que es la misma, pero tienen que escribir una mejor documentación integrada en el código.

Es lo mejor que puedo sugerir, vea qué piensa su equipo de la idea.


No conozco ninguna herramienta moderna para la Programación Literate. He hecho algo de programación WEB hace 15 años.

Doxygen es una buena herramienta, pero no ayuda en absoluto con LP. El problema es que LP se enfoca en escribir códigos para que los humanos los lean. No hay un buen soporte para el refinamiento / revelación sucesiva. LP necesita una vista del código fuente que tenga una estructura diferente a la del atributo / método de clase de archivo en VS. NSpec podría ser algo mejor, pero también es demasiado ascendente.


Hola autores de la novela fuente,

Como alguien se refirió a DOxygen aquí: aunque esto no permite la programación Literate real (como un ejemplo de limitaciones, esto no permite tener una vista reordenada en las fuentes) , sin embargo, parece ser reconocido como una herramienta valiosa en esta área, por sus propios defensores ( defensores de LP) : se menciona en la parte superior de esta página de referencia sobre las herramientas de LP: Herramientas de programación de lectura y escritura


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 pueden documentarse al comentar 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. Todo cambio está bien justificado y documentado. Uno puede entender sobre el dominio del problema 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, uno puede escribir programas alfabetizados con texto sin formato, si el programa está desarrollado, pero escribirlo en TeX / LaTeX es la forma más estética, funcional y fácil, porque no es difícil colocar el marcado LaTeX en la mayoría de los 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 ni programas similares, pero esos programas ayudan a componer los programas en un orden lógico para un humano, mientras que los módulos del programa se pueden generar para una compilación adecuada.

Hay un paquete LaTeX llamado listados que es fácil de usar. Puedes comenzar cada código para cerrar el comentario y terminar el código abriendo un nuevo comentario, por lo que 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, al principio puedes colocar lo opuesto:

% /* start of program

Quitar el signo de comentario% LaTeX cuando desee compilar el programa y volverlo a poner cuando compile LaTeX.

Si nunca antes ha usado LaTeX, primero puede comenzar con texto sin formato. Tal vez 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.