Предлагаю вашему вниманию перевод статьи «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 и все остальное. Почему так много языков?
##Почему существует так много языков?
Подумай об этом! Сколько языков программирования вы можете назвать? Вот, позвольте мне дать вам небольшой список:
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
Ты, конечно, можешь думать о других, которые я не упомянул. Вопрос в том, почему их так много? На этот вопрос действительно может быть только один ответ. Причина, по которой существует так много компьютерных языков:
Они нам не нравятся.
Ну, может быть, это слишком сильное заявление. Возможно, я должен сказать:
Мы были в Голливуде.
Мы были в Редвуде.
Мы пересекли океан ради золотого кода.
Мы были в своем уме,
Это такая тонкая грань.
Это заставляет нас искать золотой код.
А мы стареем.
Ладно, может, мне стоит говорить за себя… Неужели ты не хотел просто наорать на Нила Янга, чтобы он перестал жаловаться, нашел какую-то милую девушку и жил с ней? Разве вы не хотели сказать ему, что поиски золотого сердца были бесполезны? Скажите, что бы он с ним сделал, если бы нашел его?
И что бы мы сделали с идеальным языком, если бы нашли его?
Мы создали эмуляторы PDP-8 и FOCAL, чтобы играть в » Lunar Lander», написанную учеником средней школы в 1969 году!
Вот что я думаю.
Смиритесь с этим. Прекратите поиски. Нет никакого идеального языка. Мы искали везде. Мы смотрели сверху и снизу. Мы смотрели внутрь и снаружи.
Мы посмотрели на языки с обеих сторон.
Изнутри и снаружи
и до сих пор так или иначе.
Вспоминаем, что это языковые иллюзии.
Мы действительно ничего не понимаем в языках…
… совсем.
Да, сегодня необычный день.
Но, тем не менее, суть в том:
Нам не нужен другой язык.
Нам не нужно знать дорогу домой.
Все, чего мы хотим — это выйти за пределы жизни.
S.Q.L.
Да, странный день.
Итак, есть одна мысль. Может быть, нам нужно перестать создавать новые языки и просто успокоиться и выбрать один или два, которые действительно хороши. Это сделает жизнь намного проще, не так ли?
И, если вам интересно, 76.43844461 дает вам довольно хорошую посадку на 2.23 MPH.