Ho utilizzato ChatGPT per scrivere la stessa routine in queste dieci oscure lingue di programmazione

immagine9.jpg

Un paio di settimane fa, ho dato un'occhiata a come utilizzare ChatGPT per scrivere la stessa routine in una dozzina dei linguaggi di programmazione più popolari. Ma da appassionato di linguaggi di programmazione, mi sono chiesto fino a che punto ChatGPT sarebbe arrivato. Avrebbe programmato in un linguaggio degli anni '50? Avrebbe programmato in un linguaggio che utilizzava il proprio set di caratteri? Avrebbe potuto scrivere codice in uno dei linguaggi che scrivevano il loro codice?

Inoltre: I migliori chatbot di intelligenza artificiale: ChatGPT e alternative da provare

E così, mi sono immereso. Ho utilizzato molte delle lingue che sto evidenziando qui, quindi farò una piccola passeggiata nella memoria e includerò alcune storie sulla mia esperienza con quelle che ho utilizzato.

Anche se non ho eseguito il codice stesso, ho letto tutti i programmi generati. La maggior parte sembra corretta e mostra gli indicatori appropriati che ci confermano che il linguaggio presentato è quello che ho richiesto.

Ti dico questo perché gli intestazioni di tutte le immagini sono errate. La maggior parte è elencata come SQL. Per qualche motivo, BAL viene mostrato come VBNet e Prolog è indicato come Rust. ChatGPT non ha commesso questo errore la volta scorsa, ma lo ha fatto oggi, per tutti i linguaggi mostrati qui.

E con questo, tuffiamoci dentro.

Fortran

Fortran (o FORTRAN, come veniva chiamato in quel periodo) sta per Formula Translation. È stato sviluppato principalmente per calcoli scientifici e di ingegneria. Nonostante sia nato negli anni '50, era spesso il primo linguaggio insegnato agli studenti di ingegneria negli anni '70 e '80.

Inoltre: Questa nuova tecnologia potrebbe spazzare via GPT-4 e tutto ciò che gli assomiglia

Per me, è stato il mio quarto linguaggio di programmazione, dopo BASIC, linguaggio assembly PDP-8 e binario PDP-8 (sì, ho scritto codice binario per poterlo inserire manualmente nel pannello frontale di un primo minicomputer). Mio padre gentilmente mi ha portato in macchina per un'ora fino al Newark College of Engineering (oggi NJIT) in modo che potessi frequentare il loro corso di programmazione del primo anno mentre ero ancora al secondo anno di liceo.

Fortran non è mai stato un favorito, anche se riusciva a fare la maggior parte dei lavori orientati al calcolo. Una variante di Fortran è ancora in uso oggi, ma è piuttosto limitata a lavori scientifici specializzati, dal momento che molti altri linguaggi moderni offrono analisi a livello di Fortran, e lo fanno meglio.

Qui, a causa dell'uso della parola chiave implicit, sembra che ChatGPT stia rappresentando il codice scritto nella variante Fortran-77.

immagine7.jpg

COBOL

Ero un programmatore COBOL adolescente. All'epoca non conoscevo ancora COBOL, ma intorno al 1980 ho visto un annuncio di lavoro per un programmatore COBOL al Northeast Regional Data Center di International Paper a Denville, NJ. Era a circa 40 minuti dalla casa dei miei genitori e avevo bisogno di un lavoro estivo. Appena sono riuscito a fissare un colloquio, sono corso al negozio di libri locale e ho passato un weekend a divorare tutto il materiale di lettura su COBOL che riuscivo a trovare.

COBOL è stato pensato per l'elaborazione orientata al business. Oggi, gli stessi tipi di clienti sarebbero utenti di SAP o Salesforce. Ma COBOL, come si può vedere dal codice COBOL-88 sottostante, era funzionale, ma sicuramente non era elegante.

Come si è scoperto, volevano un dipendente a tempo pieno. Ma dato che ho superato il loro test (apparentemente il mio fine settimana di studio ha battuto i punteggi dei professionisti che hanno fatto domanda), hanno deciso di farmi lavorare per l'estate. Dire che c'era un conflitto culturale era un eufemismo. Erano i primi giorni dei microcomputer (prima dei PC) e mi entusiasmavo per quello roba. Nel frattempo, queste persone erano tutte vestite elegantemente con cravatte e i loro centri dati giganti. Ho quasi subito preso l'appellativo "Trouble". Ehi, ero ancora un bambino.

Il momento determinante per me è arrivato quando uno dei programmatori più esperti dell'azienda mi ha preso da parte per spiegarmi, e cito textualmente, "COBOL è vita". Ho preso quel messaggio a cuore e ho deciso che non volevo che la mia vita ruotasse intorno al COBOL. Quell'estate è stata l'ultima volta che ho programmato qualcosa in COBOL.

immagine11.jpg

RPG (Report Program Generator)

No, non si tratta di un lanciarazzi o di un gioco di ruolo. RPG era un programma per la creazione di report. È possibile vedere l'evoluzione nel linguaggio (e nel pensiero del linguaggio informatico, in generale) tra le due versioni mostrate di seguito. RPG II risale alla fine degli anni '50. RPG IV è stato aggiornato negli anni '90 ed è decisamente più moderno (ma comunque datato).

Ho scritto alcuni programmi RPG III per AS/400 come lavoro extra durante l'università, ma non era mai qualcosa a cui tenevo particolarmente.

immagine3.jpg

Lisp

Ho una lunga storia d'amore con Lisp. Lisp, chiamato LISt Processor, veniva talvolta descritto come un sacco di insipide e stupide parentesi. Per qualche motivo, quelle parentesi hanno fatto click nel mio cervello. Lisp è stata la mia porta d'ingresso nella programmazione di Intelligenza Artificiale e, come abbiamo imparato dai processi di ChatGPT del linguaggio, le conoscenze possono essere rappresentate come catene di parole, o liste.

Negli anni '80, ero un product manager per un'implementazione Common Lisp basata su RISC, e l'ho programmato per un po'. Sulla base della sintassi defun greeting e let generata da ChatGPT, sembra che il codice di seguito sia anche Common Lisp, una variante successiva all'implementazione Lisp originale di John McCarthy dei tardi anni '50. McCarthy è stato uno dei padri fondatori della ricerca nell'ambito dell'IA, quindi è giusto che un'IA scriva nel suo linguaggio.

immagine4.jpg

Algol

ALGOL (ALGOthymic Language) era avanti rispetto al suo tempo. Consentiva il passaggio di funzioni come parametri e consentiva l'uso della ricorsione. Questi sono due componenti essenziali della programmazione moderna che erano assenti nei linguaggi popolari come Fortran e COBOL, che erano popolari allo stesso tempo in cui veniva introdotto ALGOL.

Se Fortran, BASIC e il linguaggio assembly mi hanno insegnato a programmare dall'alto verso il basso, ALGOL mi ha insegnato come strutturare il mio codice. È stato un linguaggio fondamentale che ha preparato il terreno per l'uso di C, Pascal, Java, JavaScript e la maggior parte dei moderni linguaggi strutturati che usiamo oggi.

immagine5.jpg

Simula

Simula, come potresti immaginare, è stato sviluppato per la simulazione e la modellazione. Come ALGOL, anche Simula era avanti rispetto al suo tempo, supportando l'uso degli oggetti e delle classi. La programmazione orientata agli oggetti è diventata fondamentale per molti dei linguaggi di programmazione più efficaci di oggi.

L'uso della parola chiave OUTFIX mi suggerisce che ChatGPT probabilmente ha scritto il seguente codice in Simula-67.

immagine6.jpg

BAL (linguaggio assembly IBM 360/370)

BAL, che sta per "basic assembly language", era il linguaggio assembly dei grandi mainframe IBM negli anni '70 e '80. Il linguaggio assembly è considerato più "a basso livello" rispetto ai "linguaggi di alto livello", il che significa che le singole istruzioni e parole chiave corrispondono a singole istruzioni del processore. Nei linguaggi di alto livello (come quelli che utilizziamo oggi), il linguaggio è spesso molto distante dall'architettura sottostante della macchina e viene progettato più per l'efficienza della programmazione che per un uso efficiente dell'hardware.

Ho frequentato un semestre di BAL al college. È stato difficile. Il professore passava la maggior parte dei giorni in piedi con le spalle rivolte agli studenti, mormorando la sua lezione in tono monocorde, mentre scriveva incessantemente sulla lavagna. Ero seduto nell'ultima fila accanto a una ragazza di nome Laura. Un giorno, Laura ed io decidemmo di scappare dalla finestra sul retro per prendere un caffè. Una volta preso il nostro caffè, siamo risaliti attraverso la finestra. Il professore non ha mai notato nulla.

È una meraviglia che qualcuno di noi sia riuscito a passare, ma non è sorprendente che praticamente nessuno di noi abbia scelto la programmazione BAL come arma di codifica preferita.

immagine8.jpg

APL

APL, o A Programming Language, è un altro linguaggio di programmazione. Uno degli aspetti più sorprendenti di APL è che utilizza un set di caratteri non standard per alcuni dei suoi operatori e codifiche. Puoi vederlo nell'immagine qui sotto. I piccoli glifi sono quelli che ChatGPT è stato in grado di estrapolare dal font che stava utilizzando, ma APL è progettato per utilizzare il font Unicode APL385, che è unico per la programmazione in APL.

Perché ha una sintassi concisa e gestisce bene grandi set di dati, viene utilizzato in un buon numero di progetti scientifici, finanziari e analitici.

immagine10.jpg

Prologo

Prolog (che deriva dalla frase Programmazione in Logica) è un altro linguaggio focalizzato sull'IA. Prolog è un linguaggio dichiarativo, lista regole e condizioni, per poi eseguire interrogazioni su quelle dichiarazioni. Secondo ChatGPT:

Prolog è uno dei linguaggi di programmazione utilizzati nello sviluppo di ChatGPT, specificamente per la generazione di testo. Viene utilizzato nel modulo Prolog-to-English, che traduce le forme logiche in Prolog in frasi in linguaggio naturale.

immagine1.jpg

Smalltalk

Smalltalk è speciale. È stato sviluppato presso Xerox PARC, lo stesso laboratorio di ricerca che ha influenzato lo sviluppo del mouse e degli ambienti con finestre. Ha incorporato alcune innovazioni di Simula nella programmazione orientata agli oggetti ed è andato oltre. È stato anche uno dei primi linguaggi che ha fatto largo uso di un ambiente di programmazione interattivo basato su GUI. Molti dei principali linguaggi di oggi, inclusi Java, Python e Ruby, sono stati fortemente influenzati da Smalltalk.

Ho solo sperimentato con Smalltalk, principalmente per conoscerlo meglio. Vivendo nella Silicon Valley all'epoca, ho conosciuto i creatori di Smalltalk, che in seguito hanno fondato ParcPlace Systems, nel tentativo di commercializzare Smalltalk al di fuori della corporate rigidità di Xerox. Ho molti bei ricordi di discutere teorie di programmazione mentre mangiavo costine e insalata di cavolo in un piccolo e malconcio ristorante barbecue a Palo Alto.

Uno dei vicepresidenti con cui ho lavorato presso l'azienda informatica in cui ero impiegato ha cercato di convincermi a fondare un'azienda con lui per applicare Smalltalk al mercato aziendale, ma all'epoca non ero ancora stato colpito dal virus del startup. Smalltalk non ha mai avuto successo sul mercato. Tuttavia, per quanto felice io sia del percorso che ha preso la mia vita, a volte mi chiedo cosa sarebbe successo se avessi accettato la sua offerta.

immagine2.jpg

Ho pensieri

Non ho eseguito questo codice e dato che non ho familiarità recente con questi linguaggi come ho con PHP e JavaScript, non posso garantire che la mia revisione visiva garantisca che il codice mostrato sopra funzioni correttamente. Come abbiamo visto all'inizio di questa settimana, durante l'esplorazione delle nuove abilità di programmazione di Bard, è possibile scrivere codice che non funziona.

Inoltre: Ho chiesto a ChatGPT di scrivere un plugin WordPress di cui avevo bisogno. L'ha fatto in meno di 5 minuti

Sappiamo che c'è almeno un errore in ogni esempio: gli header sono sbagliati. Quindi, anche se la capacità dell'IA di generare codice in un gruppo di lingue relativamente oscure è incredibilmente interessante, non presumere che stia facendo correttamente l'intero lavoro.

Se decidi di incorporare la programmazione di ChatGPT nel tuo flusso di lavoro, dovrai verificare, testare e debuggare il codice che genera proprio come faresti se assumessi qualcuno per scrivere alcune routine di base per te.

Articoli correlati

Mostra di più >>

Sblocca il potere dell'intelligenza artificiale con HIX.AI!