Прапаную вашай увазе пераклад артыкула «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.