Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Огляд мови ALGOL 60



Хоча збори 1960 року тривали лише шість днів, зміни, внесені в мову ALGOL 58, були значними. Серед найважливіших нових розробок були наступні.

• Була введена концепція блокової структури. Це дозволило програмістам локалізувати частини програм, вводячи нові середовища даних, чи області видимості.

• З'явилася можливість передавати параметри підпрограмам двома новими способами: передача за значенням і передача за ім’ям.

• З'явилася можливість створення рекурсивних процедур. В описі мови ALGOL 58 це питання було висвітлене не зовсім ясно. Відмітимо, що, хоча для імперативних мов подібна рекурсія і була новою, мова LISP у 1959 році вже містила рекурсивні функції.

• З'явилися автоматичні (stack-dynamic) масиви. Автоматичним масивом називається такий масив, для якого діапазон чи діапазони зміни індексів визначаються значеннями змінних. Розмір масиву встановлюється під час його розміщення в пам'яті. Це відбувається в процесі виконання програми при оголошенні масиву. Автоматичні масиви докладно описані в главі 5.

Були запропоновані, але не прийняті ще кілька властивостей, що могли б значно вплинути або на успіх, або на провал даної мови. Найважливішими серед них були оператори вводу-виводу з форматуванням, які не були прийняті, оскільки вважалося, що вони будуть сильно машинно-залежними.

Звіт про мову ALGOL 60 був опублікований у травні 1960 року (Naur, 1960). В описі мови усе ще залишалося багато невизначеностей, і на квітень 1962 року в Римі були призначені треті збори комітету, на розгляд якого і передавалися всі питання. На цих зборах група займалися тільки вирішенням ускладнень, ніяких нових доповнень у мову не вносилося. Результати зборів були опубліковані за назвою "Revised Report on the Algorithmic Language ALGOL 60" ("Перероблений звіт про алгоритмічну мову ALGOL 60") (Backus at al., 1962).

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

Лекція 5.

on_load_lecture() Трансляція і формальні граматики





Дата публикования: 2015-09-18; Прочитано: 251 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...