Jezički slojevi

Hej Habr!

Predstavljam vam prijevod članka “Language Layers» od Roberta C. Martina (Ujak Bob).

Jezički slojevi
Provodim vrijeme igrajući staru igru ​​pod nazivom Lunar Lander iz 1969. Napisao ju je Jim Storer, srednjoškolac. Napisao ga je na PDP-8 u FOCAL-u. Ovako izgleda program:

Jezički slojevi

A evo i izvornog koda za FOCAL:

Jezički slojevi

Jim Storer je bio prilično talentovan srednjoškolac. Pogledajte ovaj kod. Tamo ima neke prilično zanimljive Taylorove izraze lica.

U osnovi, radim binarno pretraživanje kako bih odredio vrijednost K koja će, kada se koristi dosljedno, savršeno sletjeti na brod. Tako sam izmijenio program tako da prihvati samo jednu vrijednost, a zatim je primijeni više puta dok brod ne sleti ili se sruši. Dok ovo pišem, znam da je odgovor između 76.40625 i 76.4453125 i pokušaću 76.4257813. Počinjem da mislim da će mi ponestati vremena pre nego što nađem odgovor.

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

Pa, dobro, razmislimo o ovome.

  • iPad ima čip A8X, sa tri jezgra koja rade na gigahercima ili tako.
  • Lua je napisana u C-u i kompajlira se u A8X.
  • Moj PDP8 emulator je napisan u Lua koristeći paket CODEA iz rubrike Dva života preostala.
  • FOCAL je napisan kasnih 1960-ih na PDP8.
  • Lunar Lander je napisan u FOCAL-u.

Dakle, to su A8X, C, Lua, PDP8 i FOCAL. Ovo je pet različitih jezika. Pet različitih mehanizama koji govore mašini šta da radi; sve su naslagane jedna na drugu!

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

##Zašto ima toliko jezika?

Razmisli o tome! Koliko programskih jezika možete imenovati? Evo, da vam dam malu listu:

  • FORTRAN
  • NEŠTO
  • COBOL
  • SNOBOL
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • MALI RAZGOVOR
  • EIFFEL
  • C ++
  • JAVA
  • C#
  • PYTHON
  • RUBY
  • LOGO
  • LUA
  • BASIC
  • PL/1
  • JAVASCRIPT
  • GO
  • DART
  • PROLOG
  • ČETVRTO
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOKALNO

Naravno, možete misliti i na druge koje nisam spomenuo. Pitanje je zašto ih ima toliko? Na ovo pitanje zaista može postojati samo jedan odgovor. Razlog zašto postoji toliko mnogo kompjuterskih jezika:

Ne volimo ih.

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

Bili smo u Holivudu.
Bili smo u Redwoodu.
Prešli smo okean za zlatni kod.
Bili smo van sebe
To je tako tanka linija.
To nas tjera da tražimo zlatni kod.

A mi starimo.

Dobro, možda bi trebalo da govorim u svoje ime... Zar ne želiš samo da vikneš na Neila Janga da prestane da se žali i nađe neku finu devojku i živi sa njom? Zar mu nisi htio reći da je potraga za zlatnim srcem bila uzaludna? Reci mi, šta bi on uradio s njim da ga pronađe?

A šta bismo uradili sa idealnim jezikom da ga pronađemo?

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

To je ono što ja mislim.

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

Pogledali smo jezike sa obe strane.
Unutra i napolje
i još uvijek rade, na ovaj ili onaj način.
Podsetimo se da su to jezičke iluzije.

Zaista ne razumemo nista o jezicima...
… uopšte.

Da, danas je neobičan dan.

Ali ipak, poenta je:

Ne treba nam drugi jezik.
Ne moramo znati put do kuće.
Sve što želimo je da odemo dalje od života.
SQL

Da, čudan dan.

Evo jedne misli. Možda trebamo prestati stvarati nove jezike i jednostavno se smiriti i odabrati jedan ili dva koja su stvarno dobra. Ovo će učiniti život mnogo lakšim, zar ne?

I, u slučaju da se pitate, 76.43844461 vam daje prilično dobro sletanje od 2.23 MPH.

izvor: www.habr.com

Dodajte komentar