Історія Мела () — твір, представник комп'ютерного фольклору, що став широковідомим завдяки Usenet і Файлові Жаргону. Головна дійова особа історії — Мел Кей (), приклад Справжнього Програміста, чиї навички і майстерність у програмуванні є предметом захоплення колег. Автором твору є Ед Нейтер ().

Сюжет Нейтер описує надзвичайні здібності до програмування його колишнього колеги Мела, що працює у корпорації . Твір було спочатку написано прозою, але пізніше хтось модифікував його у «поезію вільного стилю», що широко розповсюдилася завдяки комп'ютерним мережам і Usenet.

Про Мела Кея мало що відомо, крім того, що він здійснив «більшість роботи з програмування» компілятора ACT-1 (1959 рік) для комп'ютера фірми Royal McBee.. Нейтер описує Мела як людину, що уникає використання оптимізувального асемблера, натомість надаючи перевагу «ручному» кодуванню з максимальним використанням можливостей машинного коду комп'ютера і деяких його особливостей (таких, наприклад, як реалізація програмної затримки через період обертання магнітного барабану, що слугував головною оперативною пам'яттю машини).

У історії розповідається, як Мелові доручили переписати програму, що грає у блекджек, з LGP-30 на новіший комп'ютер RPC-4000 (терміна «портування програмного забезпечення» тоді не існувало). Щоб відвідувачі на виставках, де мав показуватися новий комп'ютер, не засмучувалися, керівництво компанії наказало Мелові модифікувати програму: вона мала враховувати позицію спеціального перемикача на консолі, щоб у визначеному його положенні користувачі комп'ютера завжди вигравали. Кею така ідея вкрай не сподобалася, втім під тиском менеджменту він все-таки додав таку функціональність — але «з точністю до навпаки»: якщо перемикач активували, то не людина, а комп'ютер завжди вигравав у «блекджек».

Кей звільнився, а Нейтера попросили «полагодити баг». Під час аналізу коду він був спантеличений тим, що програма хоч і мала нескінченний цикл, але лічильник команд постійно виходив з-за меж цього циклу. Врешті-решт він зрозумів, що програма реалізовувала код, який модифікує сам себе під час обробки елементів масиву, і що використовується програмне переповнення. Додавання 1 до адреси інструкції x зазвичай просто збільшувало адресу до x+1, але якщо x було максимальною дозволеною адресою, до відбувалося переповнення і результат ставав 0. На додачу до цього комп'ютер модифікував біти коду операції, так що в підсумку виходила операція «перехід до адреси 0». Така техніка програмування настільки вразила Нейтера, що він вирішив відмовитися від модифікацій, і відрапортував керівництву, що не зміг знайти помилки.

Історія створення

Есей був опублікований у групі Usenet «net.followup» 21 травня 1983 року користувачем utastro!nather (адреса email Еда Нейтера у той час).

Комп'ютери для фірми Royal McBee виготовлялися компанією Librascope, і документація на програму «блекджек» написана самим Мелом Кеєм. У серпневому за 1956 рік номері журналу «Librazette» компанії Librascope є історія навчання роботі на LGP-30, де згадується, що робота деякі інженерів Librascope буде оплачуватися фірмою Royal McBee, і серед цих інженерів є ім'я Мела Кея.

На обкладинці цього номера журналу є фотографія, де знято програмістів-новачків і їх інструкторів, з Мелом Кеєм включно.

Див. також

Джерела

Посилання

(NB. A copy of the original prose version.)

(A completely original copy of Ed Nather's Usenet post, with headers) (NB. Punctuation added/corrected for readability. Contains link to program tape of blackjack for LGP-30) (Mel Kaye's signature] on a coding sheet for the LGP-30.)

(NB. Presumably the subject of the original story.) (Детальний аналіз історії, з поясненням технічних деталей.)

Містить ще більше технічних подробиць.