Предлагаю вашему вниманию перевод статьи «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.

