Моўныя пласты

Прывітанне, Хабр!

Прапаную вашай увазе пераклад артыкула «Language Layers» аўтара Robert C. Martin (Uncle Bob).

Моўныя пласты
Я праводжу час, гуляючы ў старую гульню "Lunar Lander" 1969 года. Яна была напісана Джымам Сторэрам, вучнем сярэдняй школы. Ён напісаў яе на PDP-8 на мове FOCAL. Вось як выглядае праграма:

Моўныя пласты

А вось зыходны код на FOCAL:

Моўныя пласты

Джым Старэр быў даволі таленавітым вучнем сярэдняй школы. Зірні на гэты код. У яго там даволі цікавыя выразы Тэйлара.

Увогуле, я праводжу двайковы пошук, каб вызначыць значэнне Да, якое пры паслядоўным выкарыстанні ідэальна пасадзіць карабель. Таму я змяніў праграму, так каб яна прымала толькі адно значэнне, а затым ужывала яго некалькі разоў, пакуль карабель не прызямліцца ці не разаб'ецца. Пакуль я пішу гэта, я ведаю, што адказ ляжыць паміж 76.40625 і 76.4453125, і я паспрабую 76.4257813. Я пачынаю думаць, што ў мяне скончыцца час, перш чым я знайду адказ.

Між тым, мне прыйшло ў галаву, што я запусціў гэтую праграму на эмулятары PDP-8, які напісаў на Lua для iPad

Так, добра, давайце падумаем над гэтым.

  • iPad мае чып A8X, З трыма ядрамі, якія працуюць на частаце гігагерц або каля таго.
  • Lua напісаны на C і кампілюецца ў A8X.
  • Мой эмулятар PDP8 напісаны на мове Lua, выкарыстоўваючы пакет CODEA з падзелу Two Lives Left.
  • FOCAL быў напісаны ў канцы 1960-х гадоў на PDP8.
  • Lunar Lander быў напісаны на FOCAL.

Значыць, гэта A8X, C, Lua, PDP8 і FOCAL. Гэта пяць розных моў. Пяць розных механізмаў, якія паказваюць машыне, што рабіць; усе яны выкладзены адзін на аднаго!

Што гэта такое? Чаму так шмат моў? Насамрэч, забудзьцеся пра iPad, PDP-8, C, Lua і ўсё астатняе. Чаму так шмат моў?

##Чаму існуе так шмат моў?

Падумай аб гэтым! Колькі моў праграмавання вы можаце назваць? Вось, дазвольце мне даць вам невялікі спіс:

  • ФОРТРАН
  • АЛГОЛ
  • COBOL
  • СНАБОЛ
  • ЛІСП
  • BCPL
  • B
  • C
  • SIMULA
  • SMALLTALK
  • ЭЙФЕЛЬ
  • C + +
  • JAVA
  • C#
  • ПІФОН
  • Руб
  • LOGO
  • MOON
  • Бейсик
  • PL/1
  • ЯВАСКРЫПТ
  • GO
  • DART
  • ПРОЛОГ
  • ЧАСТКА
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ПЕКЛА
  • ERLANG
  • ЭЛІКСІР
  • ФАКАЛЬНЫ

Ты, вядома, можаш думаць аб іншых, якія я не згадаў. Пытанне ў тым, чаму іх так шмат? На гэтае пытанне сапраўды можа быць толькі адзiн адказ. Чыннік, па якой існуе так шмат кампутарных моў:

Яны нам не падабаюцца.

Ну, магчыма, гэта занадта моцная заява. Магчыма, я павінен сказаць:

Мы былі ў Галівудзе.
Мы былі ў Рэдвудзе.
Мы перасеклі акіян дзеля залатога кода.
Мы былі ў сваім розуме,
Гэта такая тонкая грань.
Гэта прымушае нас шукаць залаты код.

А мы старэем.

Добра, можа, мне варта гаварыць за сябе... Няўжо ты не хацеў проста накрычаць на Ніла Янга, каб ён перастаў скардзіцца, знайшоў нейкую мілую дзяўчыну і жыў з ёю? Хіба вы не хацелі сказаць яму, што пошукі залатога сэрца былі бескарысныя? Скажыце, што б ён з ім зрабіў, калі б знайшоў яго?

І што б мы зрабілі з ідэальнай мовай, калі б знайшлі яе?

Мы стварылі эмулятары PDP-8 і FOCAL, каб гуляць у "Lunar Lander", напісаную вучнем сярэдняй школы ў 1969 годзе!

Вось што я думаю.

Змірыцеся з гэтым. Спыніце пошукі. Няма ніякай ідэальнай мовы. Мы шукалі ўсюды. Мы глядзелі зверху і знізу. Мы глядзелі ўнутр і звонку.

Мы паглядзелі на мовы абапал.
Знутры і звонку
і да гэтага часу так ці інакш.
Успамінаем, што гэта моўныя ілюзіі.

Мы сапраўды нічога не разумеем у мовах…
… зусім.

Так, сёння незвычайны дзень.

Але, тым не менш, сутнасць у тым:

Нам не патрэбная іншая мова.
Нам не трэба ведаць дарогу дадому.
Усё, чаго мы хочам - гэта выйсці за межы жыцця.
SQL

Так, дзіўны дзень.

Такім чынам, ёсць адна думка. Можа быць, нам трэба перастаць ствараць новыя мовы і проста супакоіцца і выбраць адну ці дзве, якія сапраўды добрыя. Гэта зробіць жыццё нашмат прасцей, ці не так?

І, калі вам цікава, 76.43844461 дае вам даволі добрую пасадку на 2.23 MPH.

Крыніца: habr.com

Дадаць каментар