Ciao, Habr!
Vi propongo la traduzione dell'articolo «» dell'autore Robert C. Martin (Uncle Bob).

Trascorro del tempo a giocare a un vecchio gioco del 1969 chiamato «Lunar Lander». È stato scritto da Jim Storer, un alunno delle scuole superiori. L'ha programmato su un PDP-8 in linguaggio FOCAL. Ecco come appare il programma:

Ecco il codice sorgente in FOCAL:

Jim Storer era un alunno delle scuole superiori piuttosto talentuoso. Dai un'occhiata a questo codice. Ha alcune espressioni di Taylor piuttosto interessanti.
In sostanza, sto eseguendo una ricerca binaria per determinare il valore di K che, se usato ripetutamente, farà atterrare il modulo perfettamente. Così ho modificato il programma in modo che accettasse solo un valore e poi lo applicasse più volte fino a quando il modulo non atterra o si schianta. Mentre scrivo questo, so che la risposta è tra 76.40625 e 76.4453125, e proverò 76.4257813. Comincio a pensare che mi esaurirò il tempo prima di trovare la risposta.
Nel frattempo, mi è venuto in mente che ho eseguito questo programma su un emulatore , che ho scritto in Lua per l'iPad.
Bene, riflettiamo su questo.
- L'iPad ha il chip , con tre core che funzionano a una frequenza di gigahertz o giù di lì.
- Lua è scritto in C e compilato in A8X.
- Il mio emulatore PDP8 è scritto in Lua, usando il pacchetto della sezione Two Lives Left.
- FOCAL è stato scritto alla fine degli anni '60 sul PDP8.
- Lunar Lander è stato scritto in FOCAL.
Quindi, ci sono A8X, C, Lua, PDP8 e FOCAL. Cinque linguaggi diversi. Cinque meccanismi distinti che indicano alla macchina cosa fare; tutti sovrapposti!
Che cos'è? Perché così tanti linguaggi? In realtà, dimentica l'iPad, il PDP-8, C, Lua e tutto il resto. Perché così tanti linguaggi?
##Почему существует так много языков?
Pensaci! Quanti linguaggi di programmazione puoi nominare? Ecco, lasciami darti un piccolo elenco:
- FORTRAN
- ALGOL
- COBOL
- SNOBOL
- LISP
- BCPL
- B
- C
- SIMULA
- SMALLTALK
- EIFFEL
- C++
- JAVA
- C#
- PYTHON
- RUBY
- LOGO
- LUA
- BASIC
- PL/1
- JAVASCRIPT
- GO
- DART
- PROLOG
- FORTH
- SWIFT
- Supporto ML
- OCCAM
- OCAML
- ADA
- ERLANG
- ELIXIR
- FOCAL
Certo, puoi pensare ad altri che non ho menzionato. La domanda è, perché ce ne sono così tanti? A questa domanda ci può essere solo una risposta. Il motivo per cui esistono così tanti linguaggi informatici:
Non ci piacciono.
Bene, forse è una dichiarazione troppo forte. Forse dovrei dire:
Siamo stati a Hollywood.
Siamo stati a Redwood.
Abbiamo attraversato l'oceano per il codice d'oro.
Eravamo fuori di testa,
È una sottile linea.
Questo ci spinge a cercare il codice d'oro.E noi invecchiamo.
Va bene, forse dovrei parlare per me stesso... Non avresti voluto solo urlare a Neil Young di smettere di lamentarsi, trovare una dolce ragazza e vivere con lei? Non volevi dirgli che cercare un cuore d'oro era inutile? Dimmi, cosa ne farebbe se lo trovasse?
E cosa faremmo con un linguaggio perfetto, se lo trovassimo?
Abbiamo creato emulatori PDP-8 e FOCAL per giocare a 'Lunar Lander', scritto da uno studente delle superiori nel 1969!
Ecco cosa penso.
Accettalo. Smetti di cercare. Non esiste un linguaggio perfetto. Abbiamo cercato ovunque. Abbiamo guardato sopra e sotto. Abbiamo guardato dentro e fuori.
Abbiamo esaminato le lingue da entrambi i lati.
Dall'interno e dall'esterno
e ancora in un modo o nell'altro.
Ricordiamo che sono illusioni linguistiche.In realtà non capiamo nulla delle lingue...
... affatto.
Sì, oggi è un giorno strano.
Tuttavia, il punto è:
Non abbiamo bisogno di un'altra lingua.
Non abbiamo bisogno di sapere la strada di casa.
Tutto ciò che vogliamo è andare oltre la vita.
S.Q.L.
Sì, è un giorno strano.
Quindi, c'è un pensiero. Forse dovremmo smettere di creare nuovi linguaggi e semplicemente rilassarci e scegliere uno o due che siano davvero buoni. Questo semplificherebbe molto la vita, vero?
E, se ti interessa, 76.43844461 ti offre un atterraggio piuttosto buono a 2.23 MPH.
Fonte: habr.com
