✍ Literate programming

Programação literária, o que é?

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, Knuth

Última actualização/Last updated: 2014-11-13 [00:04]


1999-2014 (ç) Tiago Charters de Azevedo

São permitidas cópias textuais parciais/integrais em qualquer meio com/sem alterações desde que se mantenha este aviso.

Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.