Literate programming
Tenho andado a ler o artigo de D. Knuth intitulado Literate programming. A ideia
principal consiste na percepção de que o acto de construir um programa de
computador e a construção da documentação são duas coisas indissociáveis; Knuth
denominou a relação entre o programa de computador e a documentação de WEB
.
O termo WEB
foi escolhido porque, diz Knuth, era a única palavra em inglês com
três letras que ainda não tinha sido usada para designar algo relacionado com
computadores. Pode parecer estranho nos tempos que correm porque web é hoje a
palavra que mais gente relaciona com computadores mas em 1980 (?-confirmar data)
não havia ainda sombra de que a WWW alguma vez existisse.
A ideia subjacente a toda a construção do WEB
system é a mudança de paradigma do
acto de programar; em vez de imaginar que a principal tarefa inerente ao acto de
programar é produzir um conjunto de instruções para serem executadas por um
computador, passamos a explicar a um ser humano aquilo que queremos que um
computador faça. Isto é conseguido através da construção de uma obra literária
que incluirá num só sítio a documentação e as instruções a serem executadas por
um computador.
O argumento de plausibilidade do sistema WEB
de Knuth consiste em mostrar em
como o conceito de programação estruturada levou os programadores a escreverem
bons e melhores programas, fáceis de ler, de explicar e manter durante longos
períodos de tempo, mas que não é inteiramente satisfatório; claro que se
programa para um computador, mas a transmissão do conhecimento que um programa
em si mesmo encerra é mais útil a outro ser humano do que propriamente para um
computador e neste sentido uma obra literária talvez seja a melhor forma de
transmissão de conhecimento entre humanos. Será? Knuth compara o programador a
um ensaísta cujo estilo e excelência na sua exposição permitem a introdução no
texto dos nomes e significado das variáveis usadas no programa de forma a que
seja compreensível para um outro ser humano usando uma cuidada mistura de
métodos formais e informais que se reforçam entre si.
O acto de programar é uma actividade muito pessoal, cada programador tem um estilo próprio e o resultado depende muito do autor. Cada autor escreve um programa da forma que acha que deve ser escrito.
A abordagem de Knuth consiste em tornar a relação entre o código e a
documentação numa dualidade. De um mesmo texto, em texto WEB
, o utilizador
poderá extrair dois conteúdos: a primeira linha de processamento consiste no
weaving the web que produz um documento que descreve o programa de uma forma
clara e facilitando a sua manutenção; a segunda corresponde ao tangling the
web, e produz o código-máquina do programa. O código e a sua documentação
derivam assim de uma mesma fonte (source), garantindo a sua consistência.
Knuth afirma mesmo que o termo Literate programming contém alguma maldade. Durante os anos 70 todos os programadores foram forçados a escrever programas de uma forma estruturada, obrigando-se a reescrever os programas moralmente repreensíveis que não estivessem formatados na moral vigente; de modo a que a culpa controlasse os ímpetos menos estruturados. O termo "programação literária" tem exactamente o mesmo objectivo, introduzir uma moral irrepreensível no acto da escrita de programas de computador; certamente ninguém quererá escrever um programa de computador aliterado.
Palavras chave/keywords: Linguagem de programação, web, lisp, C, KnuthCriado/Created: NaN
Última actualização/Last updated: 10-10-2022 [14:26]
(c) Tiago Charters de Azevedo