2 pontos por GN⁺ 2025-04-04 | 1 comentários | Compartilhar no WhatsApp

Crítica à tolice da programação em linguagem natural

  • Desde os primórdios das calculadoras automáticas, sempre houve pessoas insatisfeitas com a programação que exige um sistema formal de símbolos
  • A máquina, como um "escravo fiel" que executa exatamente as instruções dadas, também executa erros evidentes sem questionar
  • Algumas pessoas esperavam que, em vez de ignorar erros e seguir executando, a máquina agisse de forma mais "racional"

Surgimento e evolução das linguagens de programação de alto nível

  • A linguagem de máquina era vista como uma interface perigosa, com pouca detecção de erros e quase nenhuma redundância
  • Como resposta, surgiram as linguagens de programação de alto nível, com avanços que evitavam resultados incorretos por meio de mensagens de erro
  • Ainda assim, programar continua exigindo símbolos formais e um alto grau de precisão cuidadosa

A proposta de programar em linguagem natural e a contestação a ela

  • Havia quem defendesse que controlar máquinas em linguagem natural tornaria a vida do usuário mais fácil
  • A ideia era que, à medida que as máquinas ficassem mais complexas, isso poderia ajudar o usuário
  • Porém, mudar a interface não redistribui o trabalho; ao contrário, acrescenta ainda mais carga de cooperação e comunicação
  • Na prática, quanto mais ampla a interface, maior tende a ser a carga de trabalho de ambos os lados, tornando tudo mais complexo

Exemplos históricos da matemática e dos sistemas simbólicos

  • A matemática da Grécia Antiga permaneceu presa a métodos centrados em linguagem e figuras, o que estagnou seu desenvolvimento
  • A matemática islâmica também foi interrompida por não adotar um sistema simbólico
  • A Europa deu um salto extraordinário quando figuras como Vieta, Descartes, Leibniz e Boole introduziram sistemas formais de símbolos

Vantagens da linguagem formal e limites da linguagem natural

  • Uma linguagem formal pode evitar muitos erros com apenas algumas regras simples
  • Símbolos formais permitem que estudantes realizem raciocínios lógicos que antes só gênios conseguiam fazer
  • A linguagem natural é ambígua e facilmente se mistura com palavras sem sentido, o que a torna inadequada para expressões lógicas sem erro

E se a linguagem natural tivesse sido o único meio de entrada e saída?

  • Se desde o início tivéssemos controlado máquinas apenas com linguagem natural, acabaríamos precisando de um processo de "bootstrap" para voltar outra vez a um sistema formal
  • Esse processo poderia levar milhares de anos e, no fim, ainda resultaria em uma linguagem formal

Retrocesso educacional e o fenômeno do "novo analfabetismo"

  • Nas últimas décadas, o enfraquecimento do treinamento intelectual fez com que muitas pessoas não conseguissem lidar adequadamente nem com a própria língua materna
  • A abundância de palavras sem sentido em artigos científicos, relatórios técnicos e documentos governamentais prova isso
  • Esse fenômeno leva a prever o fracasso da programação em linguagem natural

Intuição conclusiva

  • Construir uma máquina programável em linguagem natural seria tão difícil quanto usá-la

1 comentários

 
GN⁺ 2025-04-04
Comentários do Hacker News
  • Há quem ache interessante defender LLMs (grandes modelos de linguagem)

    • Em contrapartida, fica a curiosidade sobre o que aconteceria ao converter projetos de complexidade intermediária de código para linguagem natural
    • Questiona-se se é possível descrever suficientemente o comportamento e os requisitos do código-fonte, e se uma descrição em linguagem natural seria realmente mais fácil de entender
    • Demonstrações costumam focar em aplicações simples porque é difícil gerenciar complexidade e precisão
    • Há uma razão para a linguagem jurídica não ser inglês comum
  • Vem à mente uma citação antiga de Hal Abelson

    • Ciência da computação não é uma ciência e tem pouco a ver com computadores
    • A revolução dos computadores é uma revolução na forma de pensar e na forma de expressar
    • A matemática fornece uma noção precisa do "o quê", e a computação fornece uma noção precisa do "como"
  • A linguagem natural tem limitações decorrentes das limitações mentais humanas

    • Como programador, muitas vezes o problema ou o absurdo só fica claro depois de implementar o código
    • Leva mais tempo para explicar algo com precisão em linguagem natural
  • Linguagem de máquina é vista como uma interface desnecessariamente perigosa

    • Linguagens de programação de alto nível foram desenvolvidas para reduzir erros
    • Rust favorece o desenvolvedor ao apontar erros de forma clara
    • LLMs parecem um jogo de adivinhação seminteligente
    • A abordagem de Rust é preferível
  • Em vez de gerar programas de computador em linguagem natural, eles deveriam ser executados diretamente

    • São dados exemplos de um sistema gráfico e de um programa de jogo da velha
    • Também seriam necessários prompts para sistema de arquivos e sistema operacional multitarefa
    • Espera-se esse avanço no começo de abril do ano que vem
  • Linguagem natural não é adequada para transmitir regras e instruções

    • Usa-se como exemplo o problema de interpretação das leis nos Estados Unidos
    • A clareza e a responsabilização das linguagens de computador mantêm um equilíbrio
  • Linguagens voltadas a domínios específicos oferecem precisão e clareza que a linguagem natural não consegue fornecer

    • Tentar o contrário exige ainda mais trabalho
  • Forth, PostScript e Assembly são linguagens de programação "naturais" por combinarem bem com o ambiente de execução do código

    • A questão é para quem "natural" é natural: para humanos ou para computadores
    • A IA não torna a linguagem humana natural para computadores
    • A IA acabará inventando linguagens adequadas ao seu próprio ambiente
  • Métodos de programação de alto nível começarão a se parecer mais com linguagens de programação do que com linguagem natural

    • Se não se quer programar, será preciso um meio de instruir uma inteligência que programe
    • Métodos de instrução de alto nível se parecerão mais com ensino do que com linguagem natural
  • O fato de erros aparecerem como mensagens de erro é uma grande melhoria

    • Alguns acham mais incômodo não poder ignorar mensagens de erro
    • Ao julgar as vantagens de uma linguagem de programação, há quem equipare "facilidade de programar" à facilidade de cometer erros