Jezični slojevi

Hej Habr!

Predstavljam vam prijevod članka "Jezični slojevi» Robert C. Martin (Uncle Bob).

Jezični slojevi
Vrijeme provodim igrajući staru igricu Lunar Lander iz 1969. Napisao ju je Jim Storer, srednjoškolac. Napisao je to na PDP-8 u FOCAL-u. Ovako izgleda program:

Jezični slojevi

A ovdje je izvorni kod za FOCAL:

Jezični slojevi

Jim Storer bio je prilično talentiran srednjoškolac. Pogledajte ovaj kod. Ima neke prilično zanimljive Taylorove izraze lica.

Uglavnom, radim binarno pretraživanje kako bih odredio vrijednost K koja će, kada se koristi dosljedno, savršeno prizemljiti brod. Pa sam modificirao program tako da prihvaća samo jednu vrijednost i zatim je primjenjuje više puta dok brod ne pristane ili se sruši. Dok ovo pišem znam da je odgovor između 76.40625 i 76.4453125 i pokušat ću 76.4257813. Počinjem misliti da će mi ponestati vremena prije nego što pronađem odgovor.

U međuvremenu, palo mi je na pamet da sam ovaj program pokrenuo na emulatoru PDP-8, koji je pisao u Lua za iPad.

Dakle, u redu, razmislimo o ovome.

  • iPad ima čip A8X, s tri jezgre koje rade na gigahercima ili tako nešto.
  • Lua je napisan u C-u i kompajlira se u A8X.
  • Moj PDP8 emulator je napisan u Lua koristeći paket CODEA iz rubrike Dva ostavljena života.
  • FOCAL je napisan kasnih 1960-ih na PDP8.
  • Lunar Lander napisan je u FOCAL-u.

Dakle, to su A8X, C, Lua, PDP8 i FOCAL. To je pet različitih jezika. Pet različitih mehanizama govore stroju što treba učiniti; sve su naslagane jedna na drugu!

Što je? Zašto postoji toliko mnogo jezika? Zapravo, zaboravite na iPad, PDP-8, C, Lua i sve ostalo. Zašto postoji toliko mnogo jezika?

##Zašto postoji toliko jezika?

Razmisli o tome! Koliko programskih jezika možete navesti? Evo, dat ću vam mali popis:

  • FORTRAN
  • NEŠTO
  • COBOL
  • SNOBOL
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • ČAVRLJANJE
  • EIFFEL
  • C + +
  • Java
  • C#
  • PITON
  • RUBIN
  • LOGO
  • LUA
  • OSNOVNI
  • PL/1
  • JAVASCRIPT
  • GO
  • DART
  • PROLOG
  • DALJE
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIKSIR
  • FOKALNO

Naravno, možete se sjetiti i drugih koje nisam spomenuo. Pitanje je zašto ih ima toliko? Zaista može postojati samo jedan odgovor na ovo pitanje. Razlog zašto postoji toliko računalnih jezika:

Ne volimo ih.

Pa, možda je to prejaka izjava. Možda bih trebao reći:

Bili smo u Hollywoodu.
Bili smo u Redwoodu.
Prešli smo ocean za zlatni kod.
Bili smo izvan sebe
To je tako tanka linija.
To nas tjera da tražimo zlatni kod.

A mi starimo.

U redu, možda bih trebao govoriti za sebe... Zar ne želiš samo vikati na Neila Younga da prestane prigovarati i pronađe neku finu djevojku i živi s njom? Zar mu nisi htio reći da je potraga za zlatnim srcem uzaludna? Reci mi, što bi učinio s njim da ga nađe?

A što bismo učinili s idealnim jezikom kad bismo ga pronašli?

Napravili smo PDP-8 i FOCAL emulatore za igranje "Lunar Lander", koji je napisao srednjoškolac 1969.!

To je ono što ja mislim.

Pomiri se s tim. Prestani tražiti. Ne postoji savršen jezik. Tražili smo posvuda. Gledali smo odozgo i odozdo. Pogledali smo unutra i van.

Gledali smo jezike s obje strane.
Unutra i izvana
i još uvijek rade, na ovaj ili onaj način.
Podsjetimo, radi se o jezičnim iluzijama.

Stvarno se ne razumijemo u jezike...
… uopće.

Da, danas je neobičan dan.

Ali ipak, poanta je:

Ne treba nam drugi jezik.
Ne moramo znati put kući.
Sve što želimo je otići dalje od života.
SQL

Da, čudan dan.

Pa evo jedne misli. Možda trebamo prestati stvarati nove jezike i samo se smiriti i odabrati jedan ili dva koji su stvarno dobri. Ovo će znatno olakšati život, zar ne?

I, ako ste se pitali, 76.43844461 vam daje prilično dobro slijetanje od 2.23 MPH.

Izvor: www.habr.com

Dodajte komentar