Em Os aforismos de programação de Strunk e White, James Devlin faz um trabalho tipicamente excelente ao examinar algo que eu mesmo tenho notado nos últimos cinco anos:
A relação inesperada entre escrever código e escrita.
Talvez não exista uma referência mais importante sobre o tema da escrita do que o livro de Strunk e White The Elements of Style (Os elementos de estilo). É um daqueles livros essenciais que o senhor descobre no ensino médio ou na faculdade e depois passa o resto da vida se perguntando por que outros livros didáticos desperdiçam seu tempo com todos aqueles palavras desnecessárias para transmitir seu ponto de vista. Como todos os livros realmente excelentes, ele muda permanentemente a maneira como o senhor vê o mundo, só um pouco.
A Wikipedia fornece um pouco de história e contexto para esse livro atemporal:
[The Elements of Style] foi originalmente escrito em 1918 e publicado de forma privada pelo professor da Universidade de Cornell, William Strunk, Jr., e foi revisado pela primeira vez com a ajuda de Edward A. Tenney em 1935. Em 1957, chamou a atenção do E. B. White no The New Yorker. White havia estudado com Strunk em 1919, mas desde então havia se esquecido do “pequeno livro” que ele chamou de “resumo de quarenta e três páginas sobre a necessidade de limpeza, precisão e brevidade no uso do inglês”.
Algumas semanas depois, White escreveu um artigo para a The New Yorker elogiando o professor Strunk e sua devoção à prosa “lúcida” em inglês. Como o autor do livro morreu em 1946, a Macmillan and Company encarregou White de reformular uma nova edição de The Elements of Style, publicada em 1959. Nessa revisão, White expandiu e modernizou de forma independente a obra de 1918, criando o manual hoje conhecido por milhões de escritores e estudantes como, simplesmente, “Strunk and White”. A primeira edição de White vendeu cerca de dois milhões de exemplares, e o total de vendas das três edições ultrapassou dez milhões de exemplares em um período de quatro décadas.
Isso é muito bom se o senhor pretende se tornar um escritor, mas qual é a relação entre esse pequeno livro atemporal e escrever um programa de computador?
Escrever programas que o computador possa entender é um desafio, com certeza. É por isso que tão poucas pessoas, no grande esquema das coisas, se tornam programadores competentes. Mas escrever parágrafos e frases que seus colegas humanos possam entender – bem, isso é ainda mais difícil. Quanto mais tempo o senhor escreve programas e quanto mais velho fica, acaba percebendo que, para realmente ter sucesso, o senhor precisa escrever programas que possam ser compreendidos tanto pelo computador quanto pelo e pelo seus colegas programadores.
De todos os truques cruéis da engenharia de software, esse deve ser o mais cruel. A maioria de nós entrou nesse campo porque as máquinas são muito mais lógicas do que as pessoas. E, no entanto, mesmo quando o senhor está escrevendo código explicitamente destinado à máquina, ainda está escrevendo. Para outras pessoas. Seres humanos falíveis, imperfeitos e distraídos, assim como o senhor. E essa é a parte realmente difícil.
Acho que é isso que Knuth estava querendo dizer com seu conceito de Programação alfabetizada (pdf).
Vamos mudar nossa atitude tradicional em relação à construção de programas: Em vez de imaginar que nossa principal tarefa é instruir um computador sobre o que ele deve fazer, vamos nos concentrar em explicar aos seres humanos o que queremos que o computador faça.
O praticante de programação alfabetizada pode ser considerado um ensaísta, cuja principal preocupação é a exposição e a excelência do estilo. Esse autor, com um dicionário de sinônimos em mãos, escolhe os nomes das variáveis com cuidado e explica o que cada variável significa. Ele se esforça para criar um programa compreensível porque seus conceitos foram introduzidos em uma ordem que é melhor para a compreensão humana, usando uma mistura de métodos formais e informais que se reforçam mutuamente.
É claro que é muito mais fácil falar do que fazer. A maioria de nós passa a vida inteira aprendendo a escrever de forma eficaz. Um livro como The Elements of Style (Os elementos de estilo) pode fornecer orientações úteis que se traduzem quase integralmente no processo de codificação. Quero destacar a única regra do Elements of Style à qual sempre volto, repetidamente, desde que descobri o livro há muitos anos.
13. Omitir palavras desnecessárias.
A redação vigorosa é concisa. Uma frase não deve conter palavras desnecessárias, um parágrafo não deve conter frases desnecessárias, pelo mesmo motivo que um desenho não deve ter linhas desnecessárias e uma máquina não deve ter peças desnecessárias. Isso não exige que o escritor faça todas as suas frases curtas, ou que evite todos os detalhes e trate seus assuntos apenas em linhas gerais, mas que cada palavra diga algo.
O que isso diz ao senhor sobre sua escrita? Sobre a seu código?
Afinal de contas, codificar é apenas escrever. Quão difícil pode ser?