- •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
3.6. Алгебраїчна парадигма
Дані представляються за допомогою термів або позначених графів, а алгоритми - системами правил переписування (орієнтованих рівностей чи умовних рівностей, співвідношень алгебри даних). Об’єкт, який визначається системою рівностей, за допомогою яких виражаються правила переписування, є відношенням конгруентності на множині всіх термів абсолютно вільної алгебри термів, що породжується константами. Це відношення визначається як конгруентне замикання співвідношень переписування, які розглядаються як тотожності алгебри термів.
Елементарним кроком обчислень в алгебраїчній парадигмі є мeтчінг (відповідність зразку), перевірка умов і підстановка. Стратегія переписування визначає, в якому порядку застосовуються правила переписування і підтерми (підвирази) поточного терма для співставлення з лівими частинами співвідношень. Для канонічних систем правил переписування результат не залежить від стратегії. Якщо система правил не є канонічною, то стратегія визначає не тільки час переписування, але й результат. В будь-якому випадку результат переписування, за умови закінчення обчислень, є термом, який еквівалентний висхідному термові за відношенням конгруентності, що визначається системою правил переписування. Тобто, стратегія вибирає результат в класі конгруентних термін. Відповідна алгебраїчна програма обчислення НСД наведена нижче.
RS(х,у) (
(x, х) = x,
(х > у) ((x, у) = (х - у, у)),
(x < у) ((x у) = (x, у - х))
).
Висновок
Завершуючи вступ і короткий історичний екскурс, зазначимо, що роботи останніх років в області інтелектуалізації мов програмування показують тенденцію до інтеграції розглянутих вище парадигм. Ідеалом методології програмування є принцип: простий алгоритм для ефективного розв’язання складної задачі. Існує багато шляхів для досягнення цієї мети, один з яких можна виразити формулою
алгоритм = означення + стратегія обчислень,
яку можна доповнити відомою формулою Вірта
програма = алгоритм + структури даних.
Лекція 4. Огляд основних мов програмування
У цій лекції хронологічно простежується розвиток деяких мов програмування, досліджується середовище, у якому кожна з них розроблялася, особлива увага звертається на внесок мови в комп'ютерні науки і причини, що призвели до його виникнення. Тут не міститься повного опису мов, розглядаються лише нові властивості, якими вони відрізняються одна від одної. Особливий інтерес викликають властивості, що зробили найбільший вплив на мови програмування, розроблені пізніше, чи на комп'ютерні науки в цілому.
4.1. Мова Picmkalkul Конрада Цузе
Перша з мов обговорення у деякій мірі досить незвичайна. По-перше, вона ніколи не була реалізована. Більш того, хоча вона була розроблена у 1945 році, її опис не публікувався аж до 1972 року. Через загальне ігнорування мови Plankalktll деякі її можливості не використовувалися в інших мовах програмування протягом 15 років після її розробки.
4.1.1. Історичні передумови
Між 1936 і 1945 роками німецький учений Конрад Цузе (Konrad Zuse) на основі електромеханічних реле створив ряд складних і витончених комп'ютерів. До 1945 року війна призвела до руйнування всіх цих комп'ютерів, за винятком однієї з останніх моделей— комп'ютера Z4. Цузе відправився у віддалене баварське селище Хинтерштейн (Hinterstein), а інші члени його дослідницької групи роз'їхалися в різні сторони.
Працюючи самостійно, Цузе направив свої зусилля на розробку мови для вираження обчислень, продовживши проект, початий ним у 1943 році з метою написання докторської дисертації. Нову мову він назвав Plankalkul, що означає "програмне числення". В об'ємному рукописі, датованому 1945 роком, але не опублікуваній до 1972 року (Zuse, 1972), Цузе дав визначення мови Plankalkul і використовував цю мову для написання алгоритмів розв’язку безлічі задач.
