Strati linguistici

Ehi Habr!

Porto alla vostra attenzione la traduzione dell’articolo”Strati linguistici» di Robert C. Martin (zio Bob).

Strati linguistici
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:

Strati linguistici

Ed ecco il codice sorgente di FOCAL:

Strati linguistici

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.

Fonte: habr.com

Aggiungi un commento