Історія Мела (англ.The Story of Mel) — твір, представник комп'ютерного фольклору, що став широковідомим завдяки Usenet і Файлові Жаргону. Головна дійова особа історії — Мел Кей (англ.Mel Kaye), приклад Справжнього Програміста, чиї навички і майстерність у програмуванні є предметом захоплення колег. Автором твору є Ед Нейтер (англ.Ed Nather).
Сюжет
Нейтер описує надзвичайні здібності до програмування його колишнього колеги Мела, що працює у корпорації Royal McBee[en].[1][2] Твір було спочатку написано прозою, але пізніше хтось модифікував його у «поезію вільного стилю», що широко розповсюдилася завдяки комп'ютерним мережам і Usenet.[3][4]
Про Мела Кея мало що відомо, крім того, що він здійснив «більшість роботи з програмування» компілятора ACT-1 (1959 рік) для комп'ютера LGP-30[en] фірми Royal McBee.[5][6].
Нейтер описує Мела як людину, що уникає використання оптимізувального асемблера, натомість надаючи перевагу «ручному» кодуванню з максимальним використанням можливостей машинного коду комп'ютера і деяких його особливостей (таких, наприклад, як реалізація програмної затримки через період обертання магнітного барабану, що слугував головною оперативною пам'яттю машини).
У історії розповідається, як Мелові доручили переписати програму, що грає у блекджек, з LGP-30 на новіший комп'ютер RPC-4000 (терміну «портування програмного забезпечення» тоді не існувало). Щоб відвідувачі на виставках, де мав показуватися новий комп'ютер, не засмучувалися, керівництво компанії наказало Мелові модифікувати програму: вона мала враховувати позицію спеціального перемикача на консолі, щоб у визначеному його положенні користувачі комп'ютера завжди вигравали.
Кею така ідея вкрай не сподобалася, втім під тиском менеджменту він все-таки додав таку функціональність — але «з точністю до навпаки»: якщо перемикач активували, то не людина, а комп'ютер завжди вигравав у «блекджек».
Кей звільнився, а Нейтера попросили «полагодити баг». Під час аналізу коду він був спантеличений тим, що програма хоч і мала нескінченний цикл, але лічильник команд постійно виходив з-за меж цього циклу. Врешті-решт він зрозумів, що програма реалізовувала код, який модифікує сам себе під час обробки елементів масиву, і що використовується програмне переповнення. Додавання 1 до адреси інструкції x зазвичай просто збільшувало адресу до x+1, але якщо x було максимальною дозволеною адресою, до відбувалося переповнення і результат ставав 0. На додачу до цього комп'ютер модифікував біти коду операції, так що в підсумку виходила операція «перехід до адреси 0». Така техніка програмування настільки вразила Нейтера, що він вирішив відмовитися від модифікацій, і відрапортував керівництву, що не зміг знайти помилки.
Історія створення
Есей був опублікований у групі Usenet «net.followup» 21 травня 1983 року користувачем utastro!nather (адреса email Еда Нейтера у той час).[1][2]
Комп'ютери для фірми Royal McBee виготовлялися компанією Librascope, і документація на програму «блекджек» написана самим Мелом Кеєм.
У серпневому за 1956 рік номері журналу «Librazette» компанії Librascope є історія навчання роботі на LGP-30, де згадується, що робота деякі інженерів Librascope буде оплачуватися фірмою Royal McBee, і серед цих інженерів є ім'я Мела Кея.[7]
На обкладинці цього номера журналу є фотографія, де знято програмістів-новачків і їх інструкторів, з Мелом Кеєм включно.[8]
utastro!nather (21 травня 1983), re: Real Programmers ..., Rob Stampfli, архів оригіналу за 12 лютого 2018, процитовано 11 лютого 2018 (A completely original copy of Ed Nather's Usenet post, with headers)
Nather, Ed (12 вересня 2003) [1983-05-21], The story of Mel, a Real Programmer, FOLDOC, архів оригіналу за 9 березня 2017, процитовано 9 березня 2017 (NB. Punctuation added/corrected for readability. Contains link to program tape of blackjack for LGP-30)
Seibel, James (8 квітня 2015), «The Story of Mel» Explained(англ.), архів оригіналу за 18 травня 2018, процитовано 18 лютого 2018 (Детальний аналіз історії, з поясненням технічних деталей.)