stringtranslate.com

История Мэла

История Мэла — архетипический фрагмент фольклора компьютерного программирования . Ее герой, Мелвин Кей , [1] — образцовый « настоящий программист », чьи тонкие приемы завораживают его коллег.

История

В книге Эда Натера «История Мела» подробно описывается необычайное мастерство программирования его бывшего коллеги «Мела» в Royal McBee Computer Corporation . [2] [3] Хотя изначально история Натера была написана прозой, кто-то ее переделал в форму «свободного стиха», которая получила широкое распространение. [4] [5]

О Меле Кейе известно немного, за исключением того факта, что ему приписывают создание «большой части программирования» компилятора ACT-1 1959 года для компьютера Royal McBee LGP-30 . [6] [7] В истории Нейтера Кей изображён склонным избегать оптимизации ассемблеров в пользу создания кода, использующего особенности оборудования, например, используя вращение барабанной памяти LGP -30, чтобы избежать записи циклов задержки в код.

История, написанная Натером, включала работу Кейя по переписыванию программы для блэкджека с LGP-30 на более новую систему Royal McBee, RPC-4000 ; руководители отдела продаж компании попросили изменить программу так, чтобы они могли переключить переключатель на передней панели и заставить программу проиграть (а пользователя выиграть). Кей неохотно согласился на просьбу, но, к его собственному удовольствию, он ошибся в тесте , и переключатель вместо этого заставил программу каждый раз выигрывать (а пользователя проиграть).

После ухода Кейя Натеру было поручено исправить ошибку. При изучении кода он был озадачен, обнаружив, что он содержал то, что казалось бесконечным циклом , однако управление не оставалось внутри цикла. В конце концов он понял, что Кей использовал самомодифицирующийся код для обработки элементов массива и закодировал цикл таким образом, чтобы воспользоваться переполнением Integer . Добавление 1 к полю адреса инструкции, которая ссылалась на адрес x, обычно просто изменяло адрес на x +1. Но когда x уже был максимально возможным адресом, не только адрес переходил к 0, но и 1 переносилась в биты, из которых должен был считываться код операции — в этом случае код операции менялся на «перейти к», так что полная инструкция становилась «перейти к адресу 0». Это так впечатлило Натера, что из уважения он отказался от задачи и сообщил, что не может найти ошибку.

Натер пересказал эту историю по памяти более 20 лет спустя. Известно, что некоторые технические детали неверны, включая местоположение бита флага «Индекс» в командном слове; использование его Кейем, по-видимому, дало Натеру важную подсказку о том, что использовался трюк с кодированием. Тем не менее, существуют правдоподобные хаки, которые Кейем мог реализовать на реальном RPC-4000 и которые в значительной степени соответствуют рассказу Натера. [8]

Ранние компьютеры конструкции машин IAS не имели индексного регистра. Использование самомодифицирующегося кода было необходимо для операций с массивами. Инструкция LGP-30   y 2000  действительно «заменяла содержимое адресной части слова в ячейке памяти 2000 содержимым адресной части слова в аккумуляторе», чтобы облегчить написание самомодифицирующегося кода. [9]

История

Первоначально эссе было опубликовано в новостной группе Usenet "net.followup" 21 мая 1983 года пользователем utastro!nather ( адрес электронной почты UUCP Эда Натера в то время). [2] [3]

Компьютеры Royal McBee были разработаны и изготовлены Librascope , а документация, написанная для программы блэкджека , была написана Мелом Кейем из Librascope Inc. В выпуске The Librazette за август 1956 года , информационном бюллетене Librascope, содержится история об обучении на LGP-30, и упоминается, что некоторые инженеры по приложениям Librascope были переведены в штат Royal McBee. Среди названных инженеров есть Мел Кейем. [1]

На первой странице этого выпуска есть фотография, на которой запечатлен первый класс новичков-программистов LGP-30 и инструкторов, включая Мела Кея. [10]

Смотрите также

Ссылки

  1. ^ ab "Librascope Memories" (PDF) . Librazette . Librascope Inc.
  2. ^ ab Raymond, Eric S. , ed. (1992-07-01). "The Jargon File, Version 2.9.10, 01 Jul 1992 (jargon2910.ascii.gz)" ( GZ ) . line 20505. Архивировано из оригинала 2017-03-09 . Получено 2014-07-01 .
  3. ^ ab Мэтт Кроуфорд (20 ноября 1984 г.). «Самый настоящий программист из всех». Группа новостей : net.jokes. Usenet:  [email protected] . Получено 22 декабря 2019 г.
  4. ^ История Мэла версия вольного стиха
  5. ^ «История Мэла, настоящего программиста, с комментариями». www.cs.utah.edu .
  6. Билл фон Хаген (1 июня 1994 г.). «Новый свет на легенду о Меле». Группа новостей : alt.folklore.computers. Usenet:  [email protected] . Получено 22 декабря 2019 г.
  7. ^ "В частности, Мел Кей из Royal McBee...", FOLDOC, imperial.ac.uk
  8. ^ "Анализировать историю Мэла". www.e-basteln.de . Получено 2024-09-11 .
  9. Royal McBee Corporation (апрель 1957 г.). РУКОВОДСТВО ПО ПРОГРАММИРОВАНИЮ ЭЛЕКТРОННОГО КОМПЬЮТЕРА ROYAL PRECISION LGP - 30. Порт-Честер, Нью-Йорк: Royal McBee Corporation . Получено 17.03.2020 .
  10. ^ "Мел Кей в первом учебном классе LGP-30". Librazette . Librascope Inc.

Дальнейшее чтение