Хабрахабр

[Из песочницы] Языковые слои

Привет, Хабр!

Martin (Uncle Bob). Предлагаю вашему вниманию перевод статьи «Language Layers» автора Robert C.

image

Я провожу время, играя в старую игру «Lunar Lander» 1969 года. Она была написана Джимом Сторером, учеником средней школы. Он написал ее на PDP-8 на языке FOCAL. Вот как выглядит программа:

image

А вот исходный код на FOCAL:

image

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

Поэтому я изменил программу, так чтобы она принимала только одно значение, а затем применяла его несколько раз, пока корабль не приземлится или не разобьется. В общем, я провожу двоичный поиск, чтобы определить значение К, которое при последовательном использовании идеально посадит корабль. 40625 и 76. Пока я пишу это, я знаю, что ответ лежит между 76. 4257813. 4453125, и я попробую 76. Я начинаю думать, что у меня закончится время, прежде чем я найду ответ.

Между тем, мне пришло в голову, что я запустил эту программу на эмуляторе 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
  • ELIXER
  • FOCAL

Ты, конечно, можешь думать о других, которые я не упомянул. Вопрос в том, почему их так много? На этот вопрос действительно может быть только один ответ. Причина, по которой существует так много компьютерных языков:

Они нам не нравятся.

Ну, может быть, это слишком сильное заявление. Возможно, я должен сказать:

Мы были в Голливуде.
Мы были в Редвуде.
Мы пересекли океан ради золотого кода.
Мы были в своем уме,
Это такая тонкая грань.
Это заставляет нас искать золотой код.

А мы стареем.

Ладно, может, мне стоит говорить за себя… Неужели ты не хотел просто наорать на Нила Янга, чтобы он перестал жаловаться, нашел какую-то милую девушку и жил с ней? Разве вы не хотели сказать ему, что поиски золотого сердца были бесполезны? Скажите, что бы он с ним сделал, если бы нашел его?

И что бы мы сделали с идеальным языком, если бы нашли его?

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

Вот что я думаю.

Прекратите поиски. Смиритесь с этим. Мы искали везде. Нет никакого идеального языка. Мы смотрели внутрь и снаружи.
Мы смотрели сверху и снизу.

Мы посмотрели на языки с обеих сторон.
Изнутри и снаружи
и до сих пор так или иначе.
Вспоминаем, что это языковые иллюзии.

Мы действительно ничего не понимаем в языках…
… совсем.

Да, сегодня необычный день.

Но, тем не менее, суть в том:

Q. Нам не нужен другой язык.
Нам не нужно знать дорогу домой.
Все, чего мы хотим — это выйти за пределы жизни.
S. L.

Да, странный день.

Может быть, нам нужно перестать создавать новые языки и просто успокоиться и выбрать один или два, которые действительно хороши. Итак, есть одна мысль. Это сделает жизнь намного проще, не так ли?

43844461 дает вам довольно хорошую посадку на 2. И, если вам интересно, 76. 23 MPH.

Теги
Показать больше

Похожие статьи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть