Kalbos sluoksniai

Sveiki, Habr!

Atkreipiu jūsų dėmesį į straipsnio „Kalbos sluoksniai» Robertas C. Martinas (dėdė Bobas).

Kalbos sluoksniai
Aš leidžiu laiką žaisdamas seną žaidimą „Lunar Lander“ iš 1969 m. Ją parašė vidurinės mokyklos moksleivis Jimas Storeris. Jis parašė jį PDP-8 FOCAL. Štai kaip atrodo programa:

Kalbos sluoksniai

Ir čia yra FOCAL šaltinio kodas:

Kalbos sluoksniai

Jimas Storeris buvo gana talentingas vidurinės mokyklos mokinys. Pažvelkite į šį kodą. Jis turi gana įdomių Teiloro posakių.

Iš esmės aš atlieku dvejetainę paiešką, kad nustatyčiau K reikšmę, kuri, nuosekliai naudojant, puikiai išleis laivą. Taigi pakeičiau programą taip, kad ji priimtų tik vieną reikšmę, o tada ją pritaikyčiau kelis kartus, kol laivas nusileis arba sudužs. Rašydamas tai žinau, kad atsakymas yra tarp 76.40625 ir 76.4453125 ir pabandysiu 76.4257813. Pradedu galvoti, kad man pritrūks laiko, kol rasiu atsakymą.

Tuo tarpu man pasirodė, kad paleidau šią programą emuliatoriuje PDP-8, kuris rašė „Lua“, skirtas „iPad“.

Taigi, gerai, pagalvokime apie tai.

  • iPad turi lustą A8X, su trimis branduoliais, veikiančiais maždaug gigahercų dažniu.
  • Lua parašyta C ir kompiliuojama į A8X.
  • Mano PDP8 emuliatorius yra parašytas Lua naudojant paketą CODEA iš skyriaus „Du gyvenimai kairėje“.
  • FOCAL buvo parašytas septintojo dešimtmečio pabaigoje PDP1960.
  • „Lunar Lander“ buvo parašyta FOCAL.

Taigi tai yra A8X, C, Lua, PDP8 ir FOCAL. Tai penkios skirtingos kalbos. Penki skirtingi mechanizmai, nurodantys mašinai, ką daryti; jie visi sukrauti vienas ant kito!

Kas tai yra? Kodėl tiek daug kalbų? Tiesą sakant, pamirškite apie iPad, PDP-8, C, Lua ir visa kita. Kodėl tiek daug kalbų?

##Kodėl tiek daug kalbų?

Pagalvok apie tai! Kiek programavimo kalbų galite įvardyti? Pateiksiu jums nedidelį sąrašą:

  • FORTRANAS
  • ALGOLIS
  • COBOL
  • SNOBOLIS
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • SMALLTALK
  • EIFELIS
  • C + +
  • JAVA
  • C#
  • PITONAS
  • RUBY
  • LOGO
  • LŽŪU
  • PAGRINDINIS
  • PL/1
  • JAVASKRIPTAS
  • GO
  • DART
  • PROLOGAS
  • ŠEŠTAS
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANGŲ
  • ELIXIR
  • FOKALUS

Žinoma, galite galvoti apie kitus, kurių nepaminėjau. Kyla klausimas, kodėl jų tiek daug? Į šį klausimą iš tikrųjų gali būti tik vienas atsakymas. Priežastis, kodėl yra tiek daug kompiuterių kalbų:

Mums jie nepatinka.

Na, gal tai per stiprus teiginys. Galbūt turėčiau pasakyti:

Buvome Holivude.
Buvome Redwoode.
Perplaukėme vandenyną dėl auksinio kodo.
Buvome iš proto išėję
Tai tokia plona linija.
Tai verčia mus ieškoti auksinio kodo.

Ir mes senstame.

Gerai, gal turėčiau kalbėti už save... Ar nenorite tiesiog rėkti ant Neilo Youngo, kad nustotų skųstis, susirastų gražią merginą ir gyventų su ja? Ar nenorėjai jam pasakyti, kad auksinės širdies paieška buvo bergždžia? Pasakyk man, ką jis darytų su juo, jei jį rastų?

O ką darytume su idealia kalba, jei ją rastume?

Sukūrėme PDP-8 ir FOCAL emuliatorius, kad galėtume žaisti „Lunar Lander“, kurį parašė vidurinės mokyklos mokinys 1969 m.!

Taip ir galvoju.

Susitvarkyk. Nustokite ieškoti. Tobulos kalbos nebūna. Apžiūrėjome visur. Žiūrėjome iš viršaus ir apačios. Mes žiūrėjome į vidų ir išorę.

Mes pažvelgėme į kalbas iš abiejų pusių.
Viduje ir lauke
ir vis tiek daro, vienaip ar kitaip.
Prisiminkime, kad tai kalbinės iliuzijos.

Mes tikrai nieko nesuprantame apie kalbas...
… iš viso.

Taip, šiandien neįprasta diena.

Tačiau esmė yra tokia:

Mums nereikia kitos kalbos.
Mums nereikia žinoti kelio namo.
Viskas, ko mes norime, yra išeiti už gyvenimo ribų.
SQL

Taip, keista diena.

Taigi čia yra viena mintis. Galbūt mums reikia nustoti kurti naujas kalbas, tiesiog nusiraminti ir pasirinkti vieną ar dvi, kurios yra tikrai geros. Tai labai palengvins gyvenimą, ar ne?

Ir, jei susimąstėte, 76.43844461 galite pasiekti gana gerą 2.23 mylių per valandą greitį.

Šaltinis: www.habr.com

Добавить комментарий