Keelekihid

Tere, Habr!

Pakun teie tähelepanu artikli "Language Layers" autor Robert C. Martin (Uncle Bob) tõlget.

Keelekihid
Veedan aega, mängides 1969. aasta mängu "Lunar Lander". Selle kirjutas Jim Storer, kes oli keskkooli õpilane. Ta kirjutas selle PDP-8-l keeles FOCAL. Nii näeb programm välja:

Keelekihid

Ja siin on allikas kood FOCAL-is:

Keelekihid

Jim Storer oli üsna andekas keskkooli õpilane. Vaata seda koodi. Seal on üsna huvitavad Taylor'i avaldised.

Nii et ma teen binaarset otsingut, et määrata K väärtus, mis järkjärgulise kasutamise korral maandab laeva ideaalselt. Seetõttu muutsin programmi, et see aktsepteeriks ainult ühte väärtust ja siis rakendaks seda mitu korda, kuni laev maandub või puruneb. Samal ajal, kui ma seda kirjutan, tean, et vastus on vahemikus 76.40625 ja 76.4453125 ning proovin 76.4257813. Alustan mõtlema, et mul võib aega otsa saada, enne kui vastuse leian.

Samal ajal tuli mulle meelde, et käivitasin selle programmi emulaatoril PDP-8, mille kirjutasin Lua keeles iPadi jaoks.

Nii et, hästi, mõtleme sellele natuke.

  • iPadil on kiip A8X, kolme tuumaga, mis töötlevad gigahertsides või seal ligidal.
  • Lua on kirjutatud C keeles ja kompileeritakse A8X-le.
  • Minu PDP8 emulaator on kirjutatud Lua keeles, kasutades paketti CODEA , kahes elus jäetud jaotises.
  • FOCAL kirjutati 1960ndate lõpus PDP8-le.
  • Lunar Lander kirjutati FOCAL-is.

Nii et need on A8X, C, Lua, PDP8 ja FOCAL. Need on viis erinevat keelt. Viis erinevat mehhanismi, mis ütlevad masinale, mida teha; kõik need on üksteise peale asetatud!

Mis see on? Miks nii palju keeli? Tegelikult, unusta iPad, PDP-8, C, Lua ja kõik muu. Miks nii palju keeli?

##Почему существует так много языков?

Mõtle sellele! Kui palju programmeerimiskeeli sa suudad nimetada? Siin, las ma annan sulle väikese nimekirja:

  • 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
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOCAL

Sa võid kindlasti mõelda teistest, mida ma ei maininud. Küsimus on, miks neid on nii palju? Sellele küsimusele võib tõeliselt olla vaid üks vastus. Põhjus, miks arvutikeele on nii palju:

Me ei meeldi neile.

Noh, võib-olla on see liiga tugev väide. Võib-olla peaksin ütlema:

Me olime Hollywoodis.
Me olime Redwoodis.
Me ületasime ookeani, et leida kuldne kood.
Me olime oma mõistuses,
See on nii õhuke piir.
See paneb meid otsima kuldset koodi.

Ja meie vananeme.

Noh, võib-olla peaksin ma rääkima enda eest… Kas sa tõesti ei tahtnud lihtsalt karjuda Neil Youngile, et ta lõpetaks kaeblemise, leiaks mõne toreda tüdruku ja elaks temaga? Kas te ei tahtnud öelda talle, et kuldse südame otsimine oli tulutu? Ütle, mida ta sellega teeks, kui ta selle leiaks?

Ja mida me teeksime ideaalkeelega, kui me selle leiaksime?

Me lõime PDP-8 ja FOCAL emulaatorid, et mängida 'Lunar Landerit', mille kirjutas keskkooli õpilane 1969. aastal!

Siin on see, mida ma arvan.

Leppige sellega. Lõpetage otsimine. Ei ole ühtegi ideaalset keelt. Me oleme otsinud igalt poolt. Me oleme vaadanud ülevalt ja alt. Me oleme vaadanud sisse ja välja.

Me oleme vaadanud keeli mõlemalt poolt.
Seest ja väljast
ja ikka veel nii või naa.
Pea meeles, et need on keele illusioonid.

Me ei mõista tõeliselt keeli...
...üldse.

Jah, täna on ebatavaline päev.

Kuid siiski, asi on selles:

Me ei vaja teist keelt.
Me ei pea teadma teed koju.
Kõik, mida me tahame, on elust välja pääseda.
S.Q.L.

Jah, erakordne päev.

Nii et on üks mõte. Võib-olla peaksime lõpetama uute keelte loomise ja rahunema, valides vaid ühe või kaks, mis on tõeliselt head. See muudaks elu palju lihtsamaks, eks?

Ja kui teid huvitab, siis 76.43844461 annab teile üsna hea maandumise kiirusel 2.23 MPH.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster