5.6. Розбіжності Нового Світу
В Америці Алгол-60 зустріли прохолодно. Могутня організація SHARE споживачів комп’ютерів фірми IBM перекинулася на сторону Фортрану. Виявилося, що Алгол важко реалізувати.
Європейці одразу прийняли Алгол. Подібно до того, як міністерство оборони США надало рішучу підтримку Коболу, незалежна дослідницька рада ФРН та інші урядові організації західноєвропейських країн підтримали Алгол. Завдяки ним Алгол розповсюдився від Великої Британії до Радянського Союзу. Деякі із спроб реалізації Алголу закінчилися невдачею, але багато компіляторів виявилися вдалими, і незабаром Алгол був визнаний мовою європейських програмістів.
У Радянському Союзі одразу ж після перших публікацій з Алголу-60 почалися роботи зі створення компіляторів для найпоширенішої та наймогутнішої на той час ЕОМ М-20. Оскільки ці роботи мали дуже велике значення для становлення вітчизняних шкіл системного програмування, про них слід розповісти докладніше.
На початку 60-х років в країні були три колективи програмістів, які були здатні вирішити непросту задачу написання компілятора з мови високого рівня. Перший розташовувався на батьківщині машини М-20 – в ІТМ і ОТ Академії Наук і очолювався Святославом Сергійовичем Лавровим. Враховуючи обмежені можливості пам’яті ЕОМ (всього 4096 слів) автори компілятора вирішили спростити завдання, відмовившись від рекурсії та деяких інших, важких для реалізації, властивостей Алголу. Одначе їх транслятор ТА-1, випущений вже у 1962 році, вийшов достатньо ефективним та швидкодіючим, він достатньо широко використовувався у багатьох організаціях європейської частини Союзу.
Другий колектив працював в Інституті прикладної математики АН СРСР, туди був розподілений майже весь перший випуск учнів А.А.Ляпунова, що закінчили у 1954 році механіко-математичний факультет МГУ за фахом «Програмування». Під керівництвом М.Р. Шура-Бури та Едуарда Зіновьєвіча Любімського вони зважилися на реалізацію повної версії Алголу. Весною 1963 року компілятор був готовий, він справлявся з найскладнішими прикладами рекурсивних алгоритмів, але платою за це були гірша швидкодія компілятора та невисока ефективність коду.
Третій колектив сформувався у новосибірському Академмістечку, куди у 1960 році вслід за А.А.Ляпуновим переїхав 28-річний А.П. Ершов, який організував відділ програмування в Обчислювальному центрі Сибірського відділення АН СРСР. Молодіжна команда Єршова зважилася на розробку першого у світі оптимізуючого компілятора із запропонованої ними мови Альфа, яка являла собою Алгол без рекурсій, але проте була розширена комплексними числами та матричними операціями. В результаті закінчений до 1965 року Альфа-транслятор вийшов вельми зручним та ефективним, він широко використовувався при написанні різноманітних програм на М‑20, особливо в сибірських ВНЗ та НДІ.
У США справи йшли інакше. Зрозуміло, що Алгол, врешті-решт, пробився до багатьох американських комп’ютерів, але так і не здолав Фортран. Проте теоретичний вплив Алголу був у США так само сильним, як і в Європі.
Багато мов, що виникли пізніше, базувалися (принаймні, частково) на Алголі, і його внесок в їх розвиток був пов’язаний з декількома основними ідеями. Одна з найбільш важливих – блокова структура, що дозволяє ділити програми на замкнені одиниці, що можуть розроблятися незалежно. Друга ідея – рекурсія, тобто здатність програм повторно звертатися до самої себе. Третя ідея – БНФ, формалізоване визначення синтаксису. Гігант серед виробників комп’ютерів, фірма IBM, приступивши у кінці 1963 р. (одночасно з новою лінією комп’ютерів “Система-360”) до здійснення нового проекту універсальної мови, вельми уважно поставилися до цієї спадщини. Машини лінії “Система-360” проектувалися так, щоб задовольняти потреби як в аналітичних обчислення, так і в обробці даних у сфері бізнесу та спеціальних застосувань.
Природно, що комп’ютер з таким широким спектром можливостей вимагав могутньої універсальної мови високого рівня. Асоціація SHARE, оцінивши перспективність цієї справи, допомогла створити “комітет з розробки передової мови”. До комітету увійшли представники найбільших фірм, а також кращі фахівці з відділів програмування та розробки мов самої IBM.
Не дивлячись на адміністративний тиск (мова повинна була бути розроблена до терміну закінчення робіт по “Системі-360”, квітень 1964 р.), специфікації мови були завершені лише до лютого 1964 р. – нова мова явно запізнювалася до дебюту “Системи-360”. Про результати зусиль, нову мову програмування PL/1 (Programming Language One – мова програмування, перша), комітет доповів асоціації SHARE у березні. Деякі фахівці характеризували мовуPL/1 як дуже складну.
Сподіваючись, що більшість проблем, що були пов’язані з мовою, проясняться у процесі реалізації, фірма IBM дала завдання своїй лабораторії в Харслі (Англія) приступити до роботи над компілятором. Співробітники лабораторії так сильно відредагували мову (точне визначення мови займало близько 200 сторінок), що розробники навряд чи дізналися б, що вийшло в результаті. Проте уточнення перетворили мову на практичний інструмент програмування, який вітали багато програмістів.
Багато того, що було краще у Фортрані, Коболі та Алголі знайшло відображалення у PL/1. Але, як висловився Джон Бекус, перші комерційні мови зробили негативний вплив на розвитокPL/1 та подальших мов програмування. “Оскільки перші мови дуже глибоко проникли в середовище програмістів, – казав Бекус, – вони до цих пір залишаються безвихіддю на шляху до більш досконалих мов”.
Не дивлячись на теоретичну недосконалість, мова PL/1 зіграла виключно важливу роль у практиці програмування для машин класу IBM 360/370. В СРСР в епоху АСУ (70-80-і роки) вона була основною мовою програмування економічних та науково-технічних завдань на ЄС ЕОМ, а також стандартною мовою для навчання програмістів. До того ж наявні у PL/1 механізми низькорівневого програмування (покажчики, засоби зв’язку з обчислювальним середовищем) дозволяли писати вельми ефективні програми. Проте після появи персональних комп’ютерів популярність мови різко впала. Перші покоління мікрокомп’ютерів були дуже слабкими для реалізації компілятора з PL/1, а коли комп’ютери стали достатньо потужніми, було вже пізно – нішу PL/1 зайняли Паскаль та С.
- Міністерство освіти і науки україни
- 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. Битва двох гігантів
- Список літератури