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 р. Грейс Хоппер отримала завдання створити набір стандартних математичних підпрограм. До цього при переписуванні фрагментів програм та підпрограм з однієї програми в іншу припускалися помилки, і в програмі доводилося міняти всі числа, що задавали адреси конкретного місцерозташування програми у пам’яті машини. Очевидно, для подібної роботи був потрібний якийсь пристрій, єдиним призначенням якого було б акуратне виконання операцій копіювання та об’єднання.
- Міністерство освіти і науки україни
- 9.12. Огляд WinDev 154
- 10. Історія операційних систем 169
- Список літератури 187
- Передмова
- 1. Передвісники комп’ютерної ери
- 1.1. Комп’ютерна програма–що це?
- 1.2. Доелектронна історія обчислювальної техніки
- Логарифмічна лінійка
- 1.3. Можливості двійкового коду
- 1.4. Розвиток двійкової системи
- 1.5. Винахід перших комп’ютерів
- Перша в історії працююча програмнокерована універсальна обчислювальна машина z-3 (1941 р.)
- 1.6. Гарвардська архітектура
- 1.7. Архітектура фон Неймана
- 1.8. Створення зрозумілих людині кодів
- 1.9. Крок на благо програмування
- 1.10. Можливості програмного управління
- 2. Нові мови програмування
- 2.1. Поневіряння пакетної обробки
- 2.2. Універсальна мова програмування
- 2.3. Усунення неоднозначності
- 2.4. Заклик до дотримання математичної строгості
- 2.5. Пошук та усунення помилок
- 2.6. Нелегке мистецтво програмування
- 2.7. Обчислювальна техніка та програмування в срср
- 3. Розквіт та хаос програмного забезпечення
- 3.1. Місце народження хакерів
- 3.2. Два чародії програмування
- 3.3. Перші промислові стандарти
- 3.4. Дружній інтерфейс
- 3.5. Прообраз сучасного «ноутбука»
- 4. Болісний шлях розвитку програмування
- 4.1. Плануюче обчислення
- 4.2. Внесок Великої Британії
- 4.3. Програмування англійською мовою
- 5. Три комерційні гіганти
- 5.1. Перша комерційна мова програмування
- 5.2. Обчислювальна техніка приходить у бізнес
- 5.3. Народження codasyl
- 5.4. Конференція в Цюріху
- 5.5. На шляху до сумісності комп’ютерів
- 5.6. Розбіжності Нового Світу
- 6. Десятиліття динамічного розвитку
- 6.1. Перші кроки непроцедурної мови
- 6.3. Алфавітне хрещення
- 6.4. Успіх та суперечки
- 6.5. Інженерний підхід
- 6.6. Структурний підхід
- 6.7. Поява мови “Ада”
- 7. Програмування приходить у наші домівки
- 7.1. Розквіт Бейсіка
- 7.2. Поява мови Модула-2
- 7.3. Музикальний француз
- 7.4.Довгожитель Lisp – інструмент функціонального програмування
- 7.5. Prolog – нездійснена мрія еом V покоління
- 7.6. Революція на ім’я Java
- 8. Історія і шляхи розвитку супер-еом
- 8.1. Усе починалося з менфреймов
- 8.2. Напрями розвитку обчислювальної техніки
- 8.3. Розвиток елементної бази. Закон Мура
- 8.4. Вдосконалення архітектури
- Звичайна послідовн обробка
- Конвеєрна обробка
- 9. Сучасний стан та перспективи розвитку програмування
- 9.1. Криза у програмуванні
- 9.2. Методологія процедурно-орієнтованогопрограмування
- 9.3. Методологія об’єктно-орієнтованогопрограмування
- 9.4. Методологія об’єктно-орієнтованогоаналізу та проектування
- 9.5. Технології програмування
- 9.6. Case –засоби
- 9.7. Методологія rad
- 9.11.1. Знайомство с LightSwitch
- 9.11.2. Архитектура LightSwitch
- 9.11.3. Створення проекту в Microsoft Visual Studio LightSwitch
- 9.11.4. Дванадцять основних переваг LightSwitch
- 9.12. Огляд WinDev
- 9.12.1. ПризначенняWinDev
- 9.12.2. Деякі характеристики wLanguage
- 9.13. Технологія model checking
- 9.14. NeoBook – программирование для непрограммистов
- 9.14.1. Введення для секретарок
- 9.14.3. Можливості та області застосування
- 9.15. Файлові системи найближчого майбутнього
- 9.15.1. Зетта-повінь настає
- 9.15.2. Файлова система zfs
- 9.15.3. Файлова системаBtrfs
- 9.15.4. Файлова системаHammer
- 10. Історія операційних систем
- 10.1. Послідовна обробка даних
- 10.2. Прості пакетні системи
- 10.3. Багатозадачні пакетні системи
- 10.4. Системи з режимом розподілу часу
- 10.5. Основні досягнення
- 10.6. Сучасні системи unix
- 10.7. Os/2. Битва двох гігантів
- Список літератури