- •1.2. Алгоритм
- •1.3. Предмет науки програмування
- •1.4. Застосування мов програмування
- •1.5. Стандартизація мов програмування
- •1.6. Середовище розробки
- •1.7. Тестування і верифікація програм
- •Лекція 2. Алгоритми і обчислення
- •2.1. Алгоритми
- •2.2. Обчислювальні машини
- •2.3. Основи фон-нейманівської архітектури
- •Лекція 3. Парадигми програмування
- •3.1. Базові парадигми програмування
- •Процедурне програмування
- •Абстрактна семантика процедурних програм.
- •Денотаційна семантика.
- •Операційна семантика
- •Структурність і модульність
- •3. 3. Модульне програмування
- •3.4. Об’єктно-орієнтовне програмування
- •3.5. Функціональне програмування
- •3.6. Логічне програмування
- •3.6. Алгебраїчна парадигма
- •Висновок
- •Лекція 4. Огляд основних мов програмування
- •4.1. Мова Picmkalkul Конрада Цузе
- •4.1.1. Історичні передумови
- •4.1.2. Огляд мови
- •4.2. Мінімальне програмування на апаратному рівні: псевдокоди
- •4.2.1. Мова Short Code
- •4.2.2. Система Speedcoding
- •4.2.3. Система "компіляції" univac
- •4.2.4. Суміжна робота
- •4.3. Комп'ютер ibm 704 і мова fortran
- •4.3.1. Історична ретроспектива
- •4.3.2. Процес розробки
- •4.3.3. Огляд мови fortran I
- •4.3.4. Огляд мови fortran II
- •4.3.5. Мови fortran IV, fortran 77 і fortran 90
- •4.4. Функціональне програмування: мова lisp
- •4.4.1. Витоки робіт в області штучного інтелекту та обробка списків
- •4.4.2. Процес розробки мови lisp
- •4.4.3. Огляд мови
- •4.4.5. Два нащадки мови lisp
- •4.4.6. Споріднені мови
- •4.5. Перший крок до удосконалення: мова algol 60
- •4.5.1. Історична ретроспектива
- •4.5.2. Початкова стадія розробки
- •4.5.3. Огляд мови algol 58
- •4.5.4. Прийняття звіту про мову algol 58
- •4.5.5. Процес розробки мови algol 60
- •4.5.6. Огляд мови algol 60
- •4.5.7. Оцінка мови algol 60
- •Лекція 5. Трансляція і формальні граматики
- •5.1. Транслятори
- •5.2. Процес трансляції
- •5.3. Формальні граматики. Нбф-граматика
- •Лекція 6. Java - мова ооп
- •6.2. Основні властивості програм і перші приклади
- •6.3. Арифметичні і побітові оператори мови Java
4.5.7. Оцінка мови algol 60
Якщо судити з одних показників, то мова ALGOL 60 мала приголомшливий успіх, якщо з інших — була найбільшим провалом. Успіхом, що проявився практично одразу ж, було те, що вона стала єдиним офіційним засобом представлення алгоритмів у науковій літературі і понад 20 років залишалася ним. Кожна імперативна мова програмування, створена після 1960 року, щось запозичила у мови ALGOL 60. Більшість з них прямо чи опосередковано є нащадками мови ALGOL 60; як приклади можна назвати мови PL/I, SIMULA 67, ALGOL 67, ALGOL 68, З, Pascal, Ada, C++ і Java.
У процесі створення мов ALGOL 58/ALGOL 60 багато чого було зроблено вперше. Вперше інтернаціональна група спробувала розробити мову програмування. Мова ALGOL була першою машинно-незалежною мовою. Вона також була першою мовою з формально описаним синтаксисом. Це успішне використання форми BNF поклало початок декільком важливим галузям теорії обчислювальних систем: формальним мовам, теорії синтаксичного аналізу і теорії розробки компіляторів. У підсумку, структура мови ALGOL 60 вплинула на машинну архітектуру. Одним з найвидатніших прикладів цього є той факт, що розширена версія цієї мови використовувалася як системна мова в серії універсальних обчислювальних машин компанії Burrough: B5000, B6000 і В7000, що були сконструйовані з апаратно-реалізованим стеком для ефективної реалізації блокової структури і рекурсивних процедур мови.
Розглянемо зворотну сторону медалі: у Сполучених Штатах мова ALGOL 60 ніколи не набула широкого поширення чи хоча б значного використання. Навіть у Європі вона так і не стала домінуючою мовою. Можна навести безліч причин, що призвели до цього. По-перше, деякі властивості мови ALGOL 60 сталі занадто гнучкими; вони ускладнювали розуміння і робили реалізацію мови неефективною. Кращим прикладом цього є метод передачі підпрограмам параметрів за ім’ям, докладно описаний у главі 8. Складності реалізації мови ALGOL 60 сформулював Рутішаузер (Rutishauser, 1967), який зазначив, що далеко не всі (якщо такі взагалі є) реалізації містять мова ALGOL 60 повністю.
Відсутність у мові операторів вводу-виводу було ще однією істотною причиною її неприйняття. Залежні від реалізації введення і виведення ускладнювали перенесення програм на інші комп'ютери.
Один з найважливіших пов'язаних з мовою ALGOL 60 внесків у комп'ютерні науки — форма BNF — також не сприяв широкому поширенню мови. Хоча зараз ця форма розглядається як простий і елегантний засіб опису синтаксичної структури, у 1960 році вона здавалася дивною і складною.
На останок відмітимо, що, хоча й існувало безліч інших проблем, мова FORTRAN, що стала звичною у середовищі користувачів, а також відсутність підтримки з боку корпорації IBM, були, імовірно вирішальними факторами провалу мови ALGOL60 як мови широкого застосування.
Робота над мовою ALGOL 60 у дійсності ніколи не закінчувалась в тому розумінні, що неясності і невизначеності завжди були частиною опису цієї мови (Knuth, 1967).
Нижче неведений приклад програми мовою ALGOL 60.
comment Приклад програми мовою ALGOL 60
Введення: Ціле число listlen, менше 100, за яким іде набір цілих чисел у кількості listlen
Виведення: Кількість введених величин, що більше їх середнього арифметичного;
begin
integer array intlist [1:99];
integer listlen, counter, sum, average, result;
sum := 0;
result := 0;
readint (listlen);
if (listlen > 0) ^ (listlen < 100) then
begin
comment Зчитування вхідних величин у масив і обчислення суми;
for counter := 1 step 1 until listlen do
begin
readint (intlist[counter]);
sum := sum + intlist[counter]
end;
comment Обчислення середнього арифметичних;
average := sum / listlen;
comment Обчислення кількості вхідних величин, що більше їх середнього;
for counter := 1 step 1 until listlen do
if intlist[counter] > average
then result := result + 1;
comment Виведення результатів;
printstring("Число величин, що більше їх середнього:);
printint (result)
end
else
printstring ("Помилка — уведена невірна довжина списку");
end
