logo
Вступ до спец

1.8. Створення зрозумілих людині кодів

У 1949 р. Джон Моучлі спільно з Еккертом, покинувши Пенсильванський університет, працювали над створенням двох нових комп’ютерів: “Бінак” (BINAC) та “Юніак-1” (UNIAC, Universal Automatic Computer). Моучлі доручив своїм програмістам створити програму, яка б дозволяла машині сприймати рівняння алгебри в традиційній формі. Так, рівняння вигляду А = В + С вводилося у формі 00 S0 03 S1 07 S2, де змінні А, В, С позначалися S0, S1, S2, а операції присвоєння та додавання – 03 і 07 (комбінація 00 визначає початковий номер рядка програми).

Система кодування, що була запропонована Моучлі, з’явилася справжнім відкриттям для програміста з його компанії – енергійної персони на ім’я Грейс Мюррей Хопер(1906-1992).

Трапилося так, що через сто років після Ади Лавлейс другим в історії програмістом знов стала жінка. Здобувши математичну освіту та ступінь доктора математики, у роки другої світової війни Хопер була направлена на роботу у Гарвардський університет, до відділу, що займався обчисленнями для потреб артилерії на “Марк-1”. Слово “програміст” ще не дійшло до них з Англії, тому у цьому відділі фахівців – математиків називаликодувальниками(така назва зберіглася у США і до цього дня, так називають програмістів низької кваліфікації, що займаються кодуванням (написанням програм) деяких завдань за готовими алгоритмами).

Хопер та її колеги Роберт Кемпбел та Річард Блок вперше у світі почали створювати підпрограми. Під цим розумілися послідовності команд, які багаторазово використовувались та побудовані таким чином, щоб з них можна було компонувати крупніші сегменти або блоки всередині програм. Хоча само слово “підпрограма” було вигадане дещо пізніше, можна вважати, що один з головних прийомів сучасного програмування вперше застосовували ще у 1944 р.

Через програмну несумісность у кожній ЕОМ були свої унікальні бібліотеки. Наприклад, для М-20, що випускалась в СРСР, Михайло Романович Шура-Бура (ІПМ – Інститут прикладної математики) з колегами розробили чудову на ті часи (60-і роки) інтерпретуючу систему ІС-2 з багатющою колекцією стандартних програм, що охоплювала всі області обчислювальної математики. Створення бібліотек різко підвищило продуктивність праці програмістів, оскільки з’явилася можливість спертися на працю попередників і не програмувати кожне нове завдання з нуля.

Наступного року Хопер та її колеги ввели інше – таке ж фундаментальне поняття діяльності програміста. Одного разу спекотним літнім днем таємнича несправність змусила зупинитися “Марк-1”. Після ретельної перевірки програмісти встановили, що контакти одного з реле були заблоковані рештками метелика. Цю подію зафіксували у журналі. Супровідний напис свідчив: “Перший достовірний випадок виявлення комахи (bug)”. Пізніше Хопер згадувала: “Коли до нас зайшов офіцер, щоб дізнатися, чим ми займаємося, ми відповіли, що шукаємо несправність, очищаємо комп’ютер від комахи (debugging)”. Термін “дебаггін” (відлагодження)з тих пір прижився і почав використовуватися серед програмістів.

А ось для іншого комп’ютерного терміну “глюк” (glitch), який, як правило, використовується як синонім терміну “збій”, існує низка припущень. Деякі припускають, що цей термін походить від єврейського слова “glitshen”, яке означає “ковзати”. Існує й інша думка з цього приводу. В середині 60-х років програма освоєння космосу йшла повним ходом. Вранці в день запуску ракети з астронавтами одна з компаній, яка займалася виробництвом бортових комп’ютерів та систем для управління польотом, розмістила на сторінках найпопулярніших газет рекламні матеріали, в яких йшлося про те, що комп’ютер благополучно керує польотом астронавтів по ходу їх місії. Того ж дня комп’ютер дав збій, що призвело, практично, до повної втрати контролю над апаратом. Наступного ранку одна з газет ознаменувала цю подію таким чином – “найгучніша невдача в історії компанії”, що англійською мовою звучало як “Greatest Lemon in the Company’s Histоry

У 1949 р. Хопер перейшла в комп’ютерну фірму Еккерта та Моучлі, де взяла участь у створенні машини “Юніак-1”. За час своєї роботи вона невплинно відстоювала думку, що для програмування слід використовувати мови високого рівня, тобто мови, у певному значенні якомога ближчі до природної мови.

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

У жовтні 1951 р. Грейс Хоппер отримала завдання створити набір стандартних математичних підпрограм. До цього при переписуванні фрагментів програм та підпрограм з однієї програми в іншу припускалися помилки, і в програмі доводилося міняти всі числа, що задавали адреси конкретного місцерозташування програми у пам’яті машини. Очевидно, для подібної роботи був потрібний якийсь пристрій, єдиним призначенням якого було б акуратне виконання операцій копіювання та об’єднання.