Epigramas interessantes do primeiro laureado com o prêmio Turing da ACM!
Oi caro(a) leitor(a), começo com a definição de epigrama. Depois com os comentários do Alan J. Perlis sobre os fenômenos que cercam os computadores e produzem uma base surpreendentemente rica para lançar metáforas em atividades individuais e em grupo. Uma das razões que ajudam a explicar o motivo de eu achar geniais vários dos epigramas do primeiro laureado com o prêmio ACM A.M. Turing, é que o meu mestrado em Engenharia de Computação / Engenharia de Software foi sobre programação em pares e o meu doutorado sobre programação em grupo. Portanto, como o Senhor(a) leitor(a) poderá perceber com uma maior riqueza de detalhes em meus textos de dissertação e tese de mestrado e doutorado, publicados na Universidade de São Paulo, as razões pelas quais eu me interesso por Pair Programming e Mob Programming. Em relação aos epigramas do Alan J. Perlis, eles também são sobre programação e eu acho incrível que mesmo com o passar dos anos, eles não perderam a sua contemporaneidade e como vários aspectos da programação de computadores estão correlacionados.
Epigrama (Grego: ἐπί-γραφὼ, literalmente, “sobre-escrever”) é uma composição poética breve que expressa um único pensamento principal, festivo ou satírico. Ainda em relação ao vocábulo epigrama que provém do grego e etimologicamente vem do prefixo epi (sobre) e graphein (gravação ou escrita). O Epigrama foi criado na Grécia Clássica e, como o significado do termo indica, era uma inscrição que se punha sobre um objeto, por exemplo: uma estátua ou uma tumba. Pequena composição poética que termina num pensamento engenhoso ou satírico. Sátira ou dito mordaz; referência crítica. Pode ser qualquer frase ou inscrição poética sobre qualquer tema ou assunto. Frase, dito poético ou em prosa que, gravado num monumento, moeda, estátua etc., exaltava um evento importante, a vida de alguém. A linguagem poética apresenta uma ampla variedade de composições, tais como a ode, o soneto, o romance, a égloga, entre outras. Cada uma destes poemas tem sua própria versificação e características. Epigrama é uma forma de poesia que se baseia por sua pequena dimensão e concisão, assim como por sua perspicácia. Epigrama é um poema conciso lidando incisivamente e muitas vezes satiricamente com um único pensamento ou evento e muitas vezes terminando com uma engenhosa mudança de pensamento; um ditado conciso, sábio ou espirituoso e muitas vezes paradoxal.
Segundo Alan J. Perlis, laureado com o primeiro prêmio Turing da ACM, enquanto estava na Universidade de Yale:
“Os fenômenos que cercam os computadores são diversos e produzem uma base surpreendentemente rica para lançar metáforas em atividades individuais e em grupo.
Por outro lado, os esforços humanos clássicos fornecem uma fonte inesgotável de metáforas para aqueles de nós que estão em trabalho de parto dentro do cálculo. Tal
as relações entre a sociedade e os dispositivos não são novas, mas o incrível crescimento da capacidade de influência do computador (real e implícita) confere a esta dependência simbiótica uma vitalidade como a de um jovem desengonçado crescendo fora de suas roupas dentro de um interminável puberdade.
Os epigramas que seguem tentam capturar alguns das dimensões deste tráfego de imagens que aguça, focaliza, esclarece, amplia e obscurece nossa visão do mais notável de todos os artefatos do homem, o computador.”
Da publicação SIGPLAN da ACM, (setembro de 1982), artigo “Epigrams in Programming“, de Alan J. Perlis da Yale University. Traduzi abaixo os seus epigramas:
- A constante de um homem é a variável de outro homem.
- Funções atrasam a vinculação: as estruturas de dados induzem a vinculação.
Moral: Estruture os dados no final do processo de programação. - O açúcar sintático causa câncer do ponto e vírgula.
- Todo programa faz parte de algum outro programa e raramente se encaixa.
- Se um programa manipula um grande quantidade de dados, ele o faz em um pequeno
número de maneiras. - A simetria é uma redução de complexidade conceito (co-rotinas incluem sub-rotinas); procurá-lo em todos os lugares.
- É mais fácil escrever um programa incorreto do que entender um correto.
- Uma linguagem de programação é de baixo nível quando seus programas exigem atenção para o irrelevante.
- É melhor ter ‘100’ funções a operar em ‘uma’ estrutura de dados do que ’10’ funcionando em ’10’ estruturas de dados.
- Entre na rotina precocemente: faça o mesmos processos da mesma forma. Acumule expressões idiomáticas. Padronize-as. A única diferença (i) entre Shakespeare e você era do tamanho da lista de idiomas dele e não o tamanho do seu vocabulário.
- Se você tem um procedimento com 10 parâmetros, você provavelmente perdeu alguns.
- A recursão é a raiz da computação já que troca descrição por tempo.
- Se duas pessoas escrevem exatamente o mesmo programa, cada uma deve ser colocada em microcódigo e então certamente não serão as mesmas.
- A longo prazo, todo programa acaba se tornando rococó e depois vira escombros.
- Tudo deve ser construído de cima para baixo, exceto a primeira vez.
- Todo programa tem (pelo menos) dois propósitos: aquele para o qual foi escrito e outro para o qual não foi.
- Se um ouvinte balançar a cabeça enquanto você explica seu programa, acorde-o.
- Não vale a pena escrever um programa sem loop e sem variável estruturada.
- Não vale a pena conhecer uma linguagem que não afete a maneira como você pensa sobre programação.
- Onde quer que haja modularidade, há potencial para mal-entendidos: ocultar informações implica a necessidade de verificar a comunicação.
- A otimização atrapalha a evolução.
- Um bom sistema não pode ter uma linguagem de comando fraca.
- Para compreender um programa você deve se tornar tanto a máquina quanto o programa.
- Talvez se escrevêssemos programas desde a infância, quando adultos seríamos capazes de lê-los.
- Só podemos exibir informações complexas na mente. Assim como ver, o movimento, o fluxo ou a alteração da visão são mais importantes do que a imagem estática, por mais bela que seja.
- Haverá sempre coisas que desejamos dizer nos nossos programas que em todas as línguas conhecidas só podem ser ditas superficialmente.
- Depois de entender como escrever um programa, peça a outra pessoa para escrevê-lo.
- Perto dos computadores é difícil encontrar a unidade de tempo correta para medir o progresso. Algumas catedrais levaram um século para serem concluídas. Você consegue imaginar a grandeza e o alcance de um programa que levaria tanto tempo?
- Para sistemas, o análogo de um face-lift é adicionar ao grafo de controle uma aresta que cria um ciclo, e não apenas um nó adicional.
- Na programação, tudo o que fazemos é um caso especial de algo mais geral – e muitas vezes sabemos disso muito rapidamente.
- A simplicidade não precede a complexidade, mas a sucede.
- Os programadores não devem ser medidos pela sua engenhosidade e lógica, mas pela integralidade da sua análise de caso.
- O décimo primeiro mandamento era “Computarás” ou “Não Computarás”, esqueci qual era.
- A string é uma estrutura de dados rígida e em todos os lugares onde ela é passada há muita duplicação de processos. É um veículo perfeito para esconder informações.
- Todos podem ser ensinados a esculpir: Michelangelo teria que ser ensinado a não fazê-lo. O mesmo acontece com grandes programadores.
- O uso de um programa para provar o teorema das 4 cores não mudará a matemática – apenas demonstra que o teorema, um desafio por um século, provavelmente não é importante para a matemática.
- O computador mais importante é aquele que assola nossos crânios e sempre busca aquele emulador externo satisfatório. A padronização de computadores reais seria um desastre – e provavelmente não acontecerá.
- A Programação Estruturada apoia a lei do terceiro excluído, para qualquer proposição, ou esta proposição é verdadeira, ou sua negação é verdadeira.
- Re gráficos: uma imagem vale mais que 10 mil palavras – mas apenas aquelas para descrever a imagem. Quase nenhum conjunto de 10 mil palavras pode ser descrito adequadamente com imagens.
- Existem duas maneiras de escrever programas sem erros; apenas o terceiro funciona.
- Algumas linguagens de programação conseguem absorver as mudanças, mas resistem ao progresso.
- Você pode predizer a reação de um programador observando sua atitude em relação à vitalidade contínua do FORTRAN.
- Em sistemas de software, muitas vezes é o madrugador que cria o worm.
- Às vezes acho que o único universal no campo da computação é o ciclo buscar-executar.
- O objetivo da computação é a emulação de nossas habilidades sintéticas, não a compreensão de nossas habilidades analíticas.
- Assim como os trocadilhos, a programação é um jogo de palavras.
- Como diria Will Rogers: “Não existe variável livre.”
- O melhor livro sobre programação para leigos é “Alice no País das Maravilhas”; mas isso porque é o melhor livro sobre qualquer coisa para o leigo.
- Desistir da linguagem assembly foi a maçã em nosso Jardim do Éden: linguagens cujo uso desperdiça ciclos de máquinas são pecaminosas. A máquina LISP agora permite que os programadores LISP abandonem o sutiã e a folha de figueira.
- Quando entendermos os sistemas baseados no conhecimento, será como antes, exceto que as pontas dos nossos dedos terão sido chamuscadas.
- Trazer computadores para casa não vai mudar nada, mas pode revitalizar o canto da sala se ela for grande.
- Os sistemas têm subsistemas e os subsistemas têm subsistemas e assim por diante ad infinitum – e é por isso que estamos sempre começando de novo.
- Tantas boas ideias nunca mais são ouvidas depois que embarcam em uma viagem no abismo semântico.
- Cuidado com o poço de piche de Turing, no qual tudo é possível, mas nada de interessante é fácil.
- Um programador LISP sabe o valor de tudo, mas o custo de nada.
- O software está sob constante tensão. Sendo simbólico, é arbitrariamente aperfeiçoável; mas também é arbitrariamente mutável.
- É mais fácil alterar a especificação para se adequar ao programa do que vice-versa.
- Os tolos ignoram a complexidade. Os pragmáticos sofrem com ela. Alguns conseguem evitá-la. Os gênios a removem.
- Em inglês, cada palavra pode ser verbalizada. Gostaria que fosse assim em nossas linguagens de programação.
- Na busca do inatingível, a simplicidade só atrapalha.
- Na programação, como em tudo o mais, errar é renascer.
- Na computação, as invariantes são efêmeras.
- Quando escrevemos programas que “aprendem”, acontece que nós aprendemos e eles não.
- Muitas vezes são os meios que justificam os fins: os objectivos promovem a técnica e a técnica sobrevive mesmo quando as estruturas dos objectivos desmoronam.
- Não se engane: os computadores processam números – não símbolos. Medimos a nossa compreensão (e controle) pela medida em que conseguimos aritmetizar uma atividade.
- Tornar algo variável é fácil. Controlar a duração da constância é o truque.
- Pense em toda a energia psíquica despendida na busca de uma distinção fundamental entre “algoritmo” e “programa”.
- Se acreditamos em estruturas de dados, devemos acreditar em processamento independente (portanto, simultâneo). Pois por que mais coletaríamos itens dentro de uma estrutura? Por que toleramos linguagens que nos dão uma sem a outra?
- Em um período de 5 anos, obtivemos uma excelente linguagem de programação. Só que não podemos controlar quando será o período de 5 anos.
- Ao longo dos séculos, os índios desenvolveram a linguagem de sinais para comunicar fenômenos de interesse. Programadores de diferentes tribos (FORTRAN, LISP, ALGOL, SNOBOL, etc.) poderiam usar um que não exija que carreguem um quadro negro em seus pôneis.
- A documentação é como um seguro de prazo: satisfaz porque quase ninguém que o assina depende de seus benefícios.
- Um bootstrap adequado é uma contradição em termos.
- Não é a fraqueza de uma língua, mas suas forças que controlam o gradiente de sua mudança: Infelizmente, uma língua nunca escapa de seu saco embrionário.
- Será possível que o software não seja como qualquer outra coisa, que deva ser descartado: que a questão toda seja vê-lo como uma bolha de sabão?
- Por causa de sua vitalidade, o campo da computação está sempre precisando desesperadamente de novos clichês: A banalidade acalma nossos nervos.
- É o usuário quem deve parametrizar os procedimentos, e não seus criadores.
- A troca cibernética entre homem, computador e algoritmo é como um jogo de cadeiras musicais: a busca frenética pelo equilíbrio sempre deixa um dos três pouco à vontade.
- Se o seu computador fala inglês, provavelmente foi fabricado no Japão.
- Um ano trabalhando no desenvolvimento de inteligência artificial é suficiente para fazer alguém acreditar em Deus.
- O contato prolongado com o computador transforma matemáticos em escriturários e vice-versa.
- Na computação, transformar o óbvio em útil é uma definição viva da palavra “frustração”.
- Estamos no limite: hoje nosso programa provou o penúltimo teorema de Fermat.
- Qual é a diferença entre uma máquina de Turing e o computador moderno? É o mesmo que ocorreu entre a ascensão de Hillary ao Everest e o estabelecimento de um hotel Hilton em seu pico.
- Lema para um laboratório de pesquisa: No que trabalhamos hoje, outros pensarão primeiro amanhã.
- Embora os chineses devam adorar o APL, é no FORTRAN que eles apostam seu dinheiro.
- Nós nos enganamos se pensarmos que a proporção entre procedimento e dados em um sistema de banco de dados ativo pode ser arbitrariamente pequena ou mesmo mantida pequena.
- Temos o mini e o micro computador. Em que nicho semântico cairia o pico computador?
- Não é culpa do computador que as equações de Maxwell não sejam adequadas para projetar o motor elétrico.
- Não se aprende computação usando uma calculadora de mão, mas pode-se esquecer a aritmética.
- A computação fez a árvore florescer.
- O computador lembra Lon Chaney – é a máquina de mil rostos.
- O computador é o poluidor final: suas fezes são indistinguíveis da comida que ele produz.
- Quando alguém disser “Quero uma linguagem de programação na qual só preciso dizer o que gostaria que fosse feito”, dê a ele um pirulito.
- As interfaces mantêm as coisas organizadas, mas não aceleram o crescimento: as funções sim.
- Não tenha boas ideias se não estiver disposto a ser responsável por elas.
- Os computadores não introduzem ordem em nenhum lugar tanto quanto expõem oportunidades.
- Quando um professor insiste que a ciência da computação é X, mas não Y, tenha compaixão por seus alunos de pós-graduação.
- Na computação, o tempo médio de falha continua diminuindo.
- Na simbiose homem-máquina, é o homem que deve se ajustar: as máquinas não.
- Nunca ficaremos sem coisas para programar enquanto houver um único programa disponível.
- Lidar com o fracasso é fácil: trabalhe duro para melhorar. O sucesso também é fácil de lidar: você resolveu o problema errado. Trabalhe duro para melhorar.
- Não se pode passar do informal ao formal por meios formais.
- Linguagens puramente aplicativas são pouco aplicáveis.
- A prova do valor de um sistema é a sua existência.
- Não se consegue expressar facilmente a complexidade, apenas ter consciência dela.
- É difícil extrair sentido dos barbantes, mas eles são a única moeda de comunicação com a qual podemos contar.
- O debate continua: PL/I é Bachtriano ou Dromedário?
- Sempre que dois programadores se reúnem para criticar os seus programas, ambos ficam calados.
- Pense nisso! Com VLSI podemos embalar 100 ENIACS em 1 cm2.
- A edição é uma atividade de reformulação.
- Por que o Império Romano entrou em colapso? O que é latim para automação de escritório?
- A Ciência da Computação tem vergonha do computador.
- A única teoria construtiva que liga a neurociência e a psicologia surgirá do estudo do software.
- Dentro de um computador, a linguagem natural não é natural.
- A maioria das pessoas acha o conceito de programação óbvio, mas impossível de fazer.
- Você acha que sabe quando pode aprender, tem mais certeza quando pode escrever, ainda mais quando pode ensinar, mas tem certeza quando pode programar.
- Vai contra a tendência da educação moderna ensinar as crianças a programar. Que graça há em fazer planos, adquirir disciplina na organização de pensamentos, dedicar atenção aos detalhes e aprender a ser autocrítico?
- Se você consegue imaginar uma sociedade em que o computador-robô seja o único servo, você pode imaginar qualquer coisa.
- A programação é um ato antinatural.
- Adaptar programas antigos para se adequarem a novas máquinas geralmente significa adaptar novas máquinas para que se comportem como as antigas.
Referências:
https://www.teses.usp.br/teses/disponiveis/45/45134/tde-27032023-161552/pt-br.php
https://amturing.acm.org/award_winners/perlis_0132439.cfm
http://www.cs.yale.edu/homes/perlis-alan/quotes.html
https://pt.wikipedia.org/wiki/Alan_Perlis