Keelekihid

Tere Habr!

Juhin teie tähelepanu artikli tõlkele "Keelekihid» autor Robert C. Martin (onu Bob).

Keelekihid
Mängin oma aega vana mängu Lunar Lander, mis pärineb 1969. aastast. Selle kirjutas keskkooliõpilane Jim Storer. Ta kirjutas selle PDP-8-le FOCALis. Programm näeb välja selline:

Keelekihid

Ja siin on FOCALi lähtekood:

Keelekihid

Jim Storer oli üsna andekas keskkooliõpilane. Heitke pilk sellele koodile. Tal on seal päris huvitavad Taylori väljendid.

Põhimõtteliselt teen binaarotsingu, et määrata K väärtus, mis järjepideval kasutamisel maandab laeva ideaalselt. Seega muutsin programmi nii, et see aktsepteeriks ainult ühte väärtust ja rakendaks seda siis mitu korda, kuni laev maandus või kukkus alla. Seda kirjutades tean, et vastus on vahemikus 76.40625 kuni 76.4453125 ja proovin numbrit 76.4257813. Hakkan arvama, et enne vastuse leidmist saab aeg otsa.

Vahepeal tuli mulle pähe, et käivitasin selle programmi emulaatoris PDP-8, kes kirjutas iPadi jaoks Lua keeles.

Nii et okei, mõtleme selle üle.

  • iPadil on kiip A8X, mille kolm südamikku töötavad umbes gigahertsiga.
  • Lua on kirjutatud C-keeles ja kompileeritakse A8X-i.
  • Minu PDP8 emulaator on paketti kasutades kirjutatud Lua keeles KOODE jaotisest Kaks vasakut elu.
  • FOCAL kirjutati 1960. aastate lõpus PDP8-le.
  • Lunar Lander on kirjutatud FOCALis.

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

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

##Miks on nii palju keeli?

Mõtle selle üle! Mitu programmeerimiskeelt oskate nimetada? Annan teile väikese nimekirja:

  • FORTRAN
  • MIDAGI
  • COBOL
  • SNOBOL
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • SMALLTALK
  • EIFFEL
  • C + +
  • JAVA
  • C#
  • PÜTHON
  • RUBY
  • LOGO
  • LUA
  • BASIC
  • PL/1
  • JAVASKRIPT
  • GO
  • DART
  • PROLOGI
  • EDASI
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOKAALNE

Muidugi võite mõelda ka teistele, keda ma pole maininud. Küsimus on selles, miks neid nii palju on? Sellele küsimusele saab tõesti olla ainult üks vastus. Põhjus, miks arvutikeeli on nii palju:

Meile need ei meeldi.

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

Olime Hollywoodis.
Olime Redwoodis.
Ületasime ookeani kuldse koodi järele.
Me olime endast väljas
See on nii peen joon.
See paneb meid otsima kuldset koodi.

Ja me jääme vanaks.

Olgu, võib-olla peaksin ma enda eest rääkima... Kas sa ei taha lihtsalt Neil Youngile karjuda, et lõpetaks kurtmine ja leiaks mõni kena tüdruk ning elaks temaga koos? Kas sa ei tahtnud talle öelda, et kuldse südame otsimine oli asjatu? Ütle mulle, mida ta teeks sellega, kui ta selle leiaks?

Ja mida me teeksime ideaalse keelega, kui selle leiaksime?

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

Seda ma arvan.

Lepi sellega. Lõpetage otsimine. Täiuslikku keelt pole olemas. Vaatasime igale poole. Vaatasime ülevalt ja alt. Vaatasime sisse ja välja.

Vaatasime keeli mõlemalt poolt.
Sees ja väljas
ja ikka nii või teisiti.
Pidagem meeles, et need on keelelised illusioonid.

Me ei saa tegelikult keeltest midagi aru...
… üleüldse.

Jah, täna on ebatavaline päev.

Kuid sellegipoolest on asi selles:

Me ei vaja teist keelt.
Me ei pea teadma koduteed.
Kõik, mida me tahame, on elust kaugemale jõuda.
S.Q.L.

Jah, imelik päev.

Nii et siin on üks mõte. Võib-olla peame lõpetama uute keelte loomise ja lihtsalt maha rahunema ning valima ühe või kaks, mis on tõeliselt head. See teeb elu palju lihtsamaks, kas pole?

Ja kui teil tekkis huvi, siis 76.43844461 võimaldab teil maanduda üsna hästi 2.23 miili tunnis.

Allikas: www.habr.com

Lisa kommentaar