Pesquisa de site

Por que a ética está se tornando o maior desafio da IA


O ChatGPT pode programar em uma linguagem da década de 1950 ou em uma das linguagens que escreveu seu próprio código? Fizemos uma caminhada pela estrada da memória para descobrir.

Um instrutor da Boston Latin School usa um computador IBM 1130 para ensinar Fortran aos alunos em 4 de outubro de 1968.

Algumas semanas atrás, experimentei usar o ChatGPT para escrever a mesma rotina em uma dúzia das linguagens de programação mais populares. Mas, como geek de linguagens de programação, me perguntei até onde o ChatGPT iria. Ele programaria em uma linguagem da década de 1950? Ele programaria em uma linguagem que usasse seu próprio conjunto de caracteres? Poderia escrever código em uma das linguagens que escreveu seu código?

E então, mergulhei. Usei muitas das linguagens que estou destacando aqui, então vou dar uma pequena caminhada pela estrada da memória e incluir algumas histórias sobre minha experiência com aquelas que usei.

Embora não tenha executado o código em si, li todos os programas gerados. A maioria parece correta e mostra os indicadores apropriados, informando-nos que o idioma apresentado é o idioma que solicitei.

Estou lhe contando isso porque os cabeçalhos de todas as capturas de tela estão errados. A maioria está listada como SQL. Por alguma razão, BAL é mostrado como VBNet e Prolog é listado como Rust. O ChatGPT não cometeu esse erro da última vez, mas cometeu hoje, para todos os idiomas mostrados aqui.

E com isso, vamos mergulhar.

Fortran

Fortran (ou FORTRAN, como era descrito naquela época) significa Tradução de Fórmula. Foi desenvolvido principalmente para cálculos científicos e de engenharia. Embora remonte à década de 1950, foi muitas vezes a primeira língua ensinada a estudantes de engenharia nas décadas de 1970 e 1980.

Para mim, foi minha quarta linguagem de programação, depois de BASIC, linguagem assembly PDP-8 e binário PDP-8 (sim, escrevi código binário para poder ativá-lo no painel frontal de um dos primeiros minicomputadores). Meu pai generosamente me levou uma hora até o Newark College of Engineering (agora NJIT) para que eu pudesse fazer o curso de programação do primeiro ano enquanto ainda estava no segundo ano do ensino médio.

Fortran nunca foi um dos favoritos, embora pudesse realizar a maioria dos trabalhos orientados para cálculo. Uma variação do Fortran ainda está em uso hoje, mas é bastante limitada ao trabalho científico especializado, já que muitas outras linguagens modernas fazem análises no nível do Fortran, e o fazem melhor.

Aqui, devido ao uso da palavra-chave implícita, parece que ChatGPT está representando um código escrito na variante Fortran-77.

Mesmo que o rótulo esteja errado, o código é Fortran.

COBOL

Eu era um programador COBOL adolescente. Eu não conhecia COBOL na época, mas por volta de 1980 vi um anúncio de emprego para um programador COBOL no Centro de Dados Regional Nordeste da International Paper em Denville, NJ. Ficava a cerca de 40 minutos da casa dos meus pais e eu precisava de um emprego de verão. Assim que consegui agendar uma entrevista, corri para a livraria local e passei um fim de semana devorando todo o material de leitura COBOL que pude encontrar.

COBOL foi criado para processamento orientado a negócios. Hoje, o mesmo tipo de clientes seriam usuários SAP ou Salesforce. Mas o COBOL, como você pode ver no código COBOL-88 abaixo, era funcional, mas com certeza não era elegante.

Acontece que eles queriam um funcionário em tempo integral. Mas como passei bem no teste (aparentemente meu fim de semana de estudo superou as notas dos profissionais que se inscreveram), eles decidiram me colocar para trabalhar durante o verão. Dizer que havia uma incompatibilidade cultural era um eufemismo. Esses foram os primórdios dos microcomputadores (pense nos pré-PC) e eu me gloriava nessas coisas. Enquanto isso, essas pessoas se preocupavam com ternos e gravatas e data centers gigantescos. Quase imediatamente peguei o apelido de “Problema”. Ei, eu ainda era uma criança.

O momento decisivo para mim veio quando um dos programadores mais experientes da empresa me chamou de lado para explicar, e cito: "COBOL é vida". Levei essa mensagem a sério e decidi que não queria que minha vida girasse em torno do COBOL. Naquele verão foi a última vez que programei algo em COBOL.

Mesmo que o rótulo esteja errado, o código é COBOL, provavelmente COBOL-88.

RPG (gerador de programa de relatório)

Não, não é uma granada propelida por foguete ou um RPG. RPG era um programa para criação de relatórios. Você pode ver a evolução da linguagem (e do pensamento da linguagem de computador, em geral) entre as duas versões mostradas abaixo. RPG II remonta ao final dos anos 1950. O RPG IV foi atualizado na década de 1990 e é consideravelmente mais moderno (mas ainda definitivamente desatualizado).

Eu escrevi alguns programas de RPG III para o AS/400 como um trabalho paralelo enquanto estava na faculdade, mas nunca foi nada que eu acompanhasse tão de perto.

Dois RPGs, ambos com rótulos incorretos.

Lisp

Tenho um longo caso de amor com Lisp. Lisp, nomeado em homenagem ao processador LISt, às vezes era descrito como muitos parênteses insípidos e estúpidos. Por alguma razão, esses parênteses clicaram em meu cérebro. Lisp foi minha porta de entrada para a programação de IA e, como aprendemos com o processamento de linguagem do ChatGPT, o conhecimento pode ser representado como sequências de palavras ou listas.

Na década de 1980, eu era gerente de produto de uma implementação Common Lisp baseada em RISC e codifiquei-a por um tempo. Com base nas sintaxes defun saudação e let geradas pelo ChatGPT, parece que o código abaixo também é Common Lisp, uma variação posterior da implementação original do Lisp de John McCarthy no final dos anos 1950. . McCarthy foi um dos fundadores da pesquisa em IA, então é justo que uma IA escreva em sua língua.

O rótulo está errado. Isso então não é SQL. É Lisp.

Algol

ALGOL (Linguagem ALGOtímica) estava à frente de seu tempo. Permitiu a passagem de funções como parâmetros e permitiu o uso de recursão. Esses são dois componentes-chave da programação moderna que estavam ausentes em linguagens populares como Fortran e COBOL, que eram populares na mesma época da introdução do ALGOL.

Se Fortran, BASIC e linguagem assembly me ensinaram programação de cima para baixo, ALGOL me ensinou como estruturar meu código. Foi uma linguagem fundamental que preparou o terreno para meu uso de C, Pascal, Java, JavaScript e da maioria das linguagens estruturadas modernas que usamos hoje.

Não, isso não é SQL. É ALGOL.

Simulação

O Simula, como você pode imaginar, foi desenvolvido para simulação e modelagem. Assim como o ALGOL, o Simula também estava à frente de seu tempo, suportando o uso de objetos e classes. Desde então, a programação orientada a objetos tornou-se fundamental para muitas das linguagens de programação mais eficazes da atualidade.

O uso da palavra-chave OUTFIX me diz que ChatGPT provavelmente escreveu o seguinte código no Simula-67.

Não é SQL, você está olhando para algum Simula.

BAL (linguagem assembly IBM 360/370)

BAL, que significa “linguagem assembly básica”, era a linguagem assembly do grande ferro da IBM nas décadas de 1970 e 1980. A linguagem assembly é considerada mais de “nível inferior” do que “linguagens de nível superior”, o que significa que instruções individuais e palavras-chave são mapeadas para instruções individuais do processador. Em linguagens de nível superior (como a maioria que usamos hoje), a linguagem geralmente está muito distante da arquitetura da máquina subjacente e é projetada mais para a eficiência da programação do que para o uso eficiente do hardware.

Fiz um semestre de BAL na faculdade. Foi difícil. O professor passava a maior parte dos dias de costas para os alunos, murmurando sua palestra em tom monótono, enquanto escrevia sem parar no quadro-negro. Sentei-me na última fila ao lado de uma garota chamada Laura. Um dia, Laura e eu decidimos sair pela janela dos fundos para tomar café. Assim que pegamos nosso java, voltamos para a janela. O professor nunca percebeu.

É uma maravilha que qualquer um de nós tenha passado, mas não é de admirar que praticamente nenhum de nós tenha escolhido a programação BAL como nossa arma de codificação preferida.

Desta vez, a IA deu ao código o rótulo VBNET. Não é, claro. É BAL.

APL

APL, ou A Programming Language, é outra linguagem de programação. Um dos aspectos mais marcantes do APL é que ele usa um conjunto de caracteres não padrão para alguns de seus operadores e codificação. Você pode ver isso na imagem abaixo. Os pequenos glifos são o que o ChatGPT conseguiu extrair da fonte que estava usando, mas o APL foi projetado para usar a fonte APL385 Unicode, que é exclusiva para programação em APL.

Por ter uma sintaxe concisa e gerenciar bem grandes conjuntos de dados, é usado em um bom número de projetos científicos, financeiros e analíticos.

Não é SQL. Ele nem usa todos os caracteres ASCII. É APL e marcha ao som do seu próprio baterista.

Prólogo

Prolog (que é derivado da frase Programming in Logic) é outra linguagem focada em IA. Prolog é uma linguagem declarativa, listando regras e condições e, em seguida, executando consultas sobre essas declarações. De acordo com ChatGPT:

Prolog é uma das linguagens de programação utilizadas no desenvolvimento do ChatGPT, especificamente para geração de texto. É usado no módulo Prolog-to-English, que traduz formas lógicas do Prolog em sentenças de linguagem natural.

Prolog é uma linguagem divertida, mas não é Rust. Este é o Prólogo.

Conversa fiada

Smalltalk é especial. Foi desenvolvido na Xerox PARC, o mesmo laboratório de pesquisa que influenciou o desenvolvimento do mouse e dos ambientes de janela. Incorporou algumas das inovações do Simula em programação orientada a objetos e foi além. Também foi uma das primeiras linguagens que fez uso ativo de um ambiente de programação interativo baseado em GUI. Muitas das principais linguagens atuais, incluindo Java, Python e Ruby, foram altamente influenciadas pelo Smalltalk.

Eu só me envolvi com Smalltalk, principalmente para conhecê-lo. Na época, morando no Vale do Silício, conheci os designers do Smaltalk, que mais tarde desmembrou a ParcPlace Systems, em uma tentativa de comercializar o Smalltalk fora da indigência corporativa da Xerox. Tenho muitas boas lembranças de conversar sobre teoria da programação enquanto comíamos costelas e salada de repolho em uma pequena churrascaria decadente em Palo Alto.

Um dos vice-presidentes com quem trabalhei na empresa de informática onde eu trabalhava tentou me convencer a abrir uma empresa com ele para aplicar o Smalltalk ao mercado corporativo, mas eu ainda não havia sido mordido pelo vírus das startups. Smalltalk nunca se tornou um mercado. Ainda assim, por mais feliz que esteja com o caminho que minha vida tomou, às vezes me pergunto o que teria acontecido se eu tivesse aceitado a oferta dele.

E, finalmente, isso também não é SQL. É conversa fiada.

eu tenho pensamentos

Não executei esse código e, como não tenho tanta familiaridade recente com essas linguagens quanto tenho com PHP e JavaScript, não posso ter certeza de que minha revisão visual garanta que o código mostrado acima seria executado com êxito. Como vimos no início desta semana com minha exploração dos novos recursos de programação de Bard, é possível escrever código sem que ele funcione.

Sabemos que há pelo menos um erro em cada exemplo: os cabeçalhos estão errados. Portanto, embora a capacidade da IA de gerar código em um monte de linguagens relativamente obscuras seja inacreditavelmente incrível, não presuma que ela está fazendo todo o trabalho corretamente.

Se decidir incorporar a programação ChatGPT em seu fluxo de trabalho, você precisará verificar, testar e depurar o código gerado, da mesma forma que faria se contratasse alguém para escrever algumas rotinas básicas para você.

Artigos relacionados