Programação letrada (do inglês literate programming) é um paradigma de programação baseada na premissa que um programa de computador deve ser escrito tendo a legibilidade humana como principal objetivo, similar a um trabalho de literatura. De acordo com essa filosofia, programadores devem almejar um estilo "literário" em sua programação tanto quanto escritores buscam um estilo inteligível e articulado em sua escrita. Essa filosofia contrasta com a visão mais comum que diz que o objetivo principal ou único do programador é criar código fonte e que a documentação deve ser apenas um objetivo secundário.

Na prática, programação literária é atingida pela combinação da documentação (legível por humanos) e código fonte (legível pela máquina) em um único arquivo (ficheiro) fonte, de modo a manter uma correspondência próxima entre a documentação e o código fonte. A ordem e a estrutura desse arquivo são especificamente projetadas para auxiliar a compreensão humana: código e documentação juntos são organizados em ordem lógica e/ou hierárquica (tipicamente de acordo com um esquema que acomode explicações detalhadas e comentários como necessárias). Ao mesmo tempo, a estrutura e o formato dos arquivos fontes acomodam utilitários externos que geram documentação do programa e/ou extraem o código legível por máquina dos mesmos arquivos fontes (para processamento subseqüente por compiladores ou interpretadores).

O primeiro ambiente de programação literária publicado foi WEB, introduzido por Donald Knuth em 1981 para seu sistema de tipografia TeX; ele usa Pascal como sua linguagem de programação subjacente e TeX para tipografia da documentação.

Ver também Programação intencional

Referências Donald E. Knuth, Literate Programming, Stanford, California: Center for the Study of Language and Information, 1992, CSLI Lecture Notes, no. 27. Pierre Arnoul de Marneffe, Holon Programming. Univ. de Liege, Service d'Informatique (December, 1973). website sobre Programação Literária newsgroup sobre Programação Literária

Categoria:Donald Knuth Categoria:Engenharia de software Categoria:Paradigmas de programação