Strati linguistici

Ciao, Habr!

Vi propongo la traduzione dell'articolo «Strati di Linguaggio» dell'autore Robert C. Martin (Uncle Bob).

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

Strati linguistici

Ecco il codice sorgente in FOCAL:

Strati linguistici

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 PDP-8, che ho scritto in Lua per l'iPad.

Bene, riflettiamo su questo.

  • L'iPad ha il chip A8X, 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 CODEA 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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster