Porto alla vostra attenzione la traduzione dell’articolo”Strati linguistici» di Robert C. Martin (zio Bob).
Trascorro il mio tempo giocando a un vecchio gioco chiamato Lunar Lander del 1969. È stato scritto da Jim Storer, uno studente delle superiori. L'ha scritto su un PDP-8 in FOCAL. Ecco come appare il programma:
Ed ecco il codice sorgente di FOCAL:
Jim Storer era uno studente delle scuole superiori piuttosto talentuoso. Dai un'occhiata a questo codice. Ci sono alcune espressioni di Taylor piuttosto interessanti lì.
Fondamentalmente, eseguo una ricerca binaria per determinare il valore di K che, se utilizzato in modo coerente, farà atterrare perfettamente la nave. Quindi ho modificato il programma in modo che accettasse solo un valore e poi lo applicassi più volte fino a quando la nave non atterrò o si schiantò. Mentre scrivo so che la risposta è compresa tra 76.40625 e 76.4453125 e proverò 76.4257813. Comincio a pensare che il tempo a disposizione finirà prima di trovare la risposta.
Nel frattempo, mi è venuto in mente di eseguire questo programma su un emulatore PDP-8, che ha scritto in Lua per l'iPad.
Quindi, okay, pensiamo a questo.
L'iPad ha un chip A8X, con tre core che funzionano a gigahertz o giù di lì.
Lua è scritto in C e compila in A8X.
Il mio emulatore PDP8 è scritto in Lua utilizzando il pacchetto CODEA dalla sezione Due vite a sinistra.
FOCAL è stato scritto alla fine degli anni '1960 su un PDP8.
Lunar Lander è stato scritto in FOCAL.
Quindi questi sono A8X, C, Lua, PDP8 e FOCAL. Queste sono cinque lingue diverse. Cinque diversi meccanismi che dicono alla macchina cosa fare; sono tutti impilati uno sopra l'altro!
Cos'è? Perché ci sono così tante lingue? Dimentica infatti iPad, PDP-8, C, Lua e tutto il resto. Perché ci sono così tante lingue?
##Perché esistono così tante lingue?
Pensaci! Quanti linguaggi di programmazione puoi nominare? Ecco, permettimi di darti un piccolo elenco:
FORTRAN
QUALCHE COSA
COBOL
SNOBOL
LISP
BCPL
B
C
SIMULA
PICCOLOPARLARE
EIFFEL
C++
JAVA
C#
PITONE
RUBINO
LOGO
MOON
BASIC
PL / 1
JAVASCRIPT
GO
DART
PROLOGO
VIA
SWIFT
ML
OCCAM
OCAML
ADA
ERLAN
ELIXIR
FOCALE
Ovviamente puoi pensare ad altri che non ho menzionato. La domanda è: perché ce ne sono così tanti? La risposta a questa domanda può davvero essere una sola. Il motivo per cui esistono così tanti linguaggi informatici:
Non ci piacciono.
Beh, forse è un'affermazione troppo forte. Forse dovrei dire:
Eravamo a Hollywood.
Eravamo a Redwood.
Abbiamo attraversato l'oceano per il codice d'oro.
Eravamo fuori di testa
È una linea così sottile.
Questo ci fa cercare il codice d'oro.
E stiamo invecchiando.
Ok, forse dovrei parlare per me... Non vuoi semplicemente urlare a Neil Young di smetterla di lamentarsi e trovarti una bella ragazza e vivere con lei? Non volevi dirgli che la ricerca di un cuore d'oro era inutile? Dimmi, cosa ne farebbe se lo trovasse?
E cosa faremmo con una lingua ideale se la trovassimo?
Abbiamo creato emulatori PDP-8 e FOCAL per riprodurre "Lunar Lander", scritto da uno studente delle superiori nel 1969!
Questo è quello che penso.
Affrontare. Smetti di cercare. Non esiste un linguaggio perfetto. Abbiamo guardato ovunque. Abbiamo guardato dall'alto e dal basso. Abbiamo guardato dentro e fuori.
Abbiamo esaminato le lingue da entrambe le parti.
Dentro e fuori
e lo fanno ancora, in un modo o nell'altro.
Ricordiamo che si tratta di illusioni linguistiche.
Non capiamo proprio niente di lingue...
… affatto.
Sì, oggi è una giornata insolita.
Ma comunque il punto è:
Non abbiamo bisogno di un'altra lingua.
Non abbiamo bisogno di conoscere la strada di casa.
Tutto ciò che vogliamo è andare oltre la vita.
S.Q.L.
Sì, giornata strana.
Quindi ecco un pensiero. Forse dobbiamo smettere di creare nuove lingue e calmarci e sceglierne una o due che siano davvero buone. Questo renderà la vita molto più semplice, non è vero?
E, nel caso te lo stessi chiedendo, 76.43844461 ti fa ottenere un atterraggio piuttosto buono a 2.23 MPH.