- •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.1.2. Огляд мови
Мова Plankalkul була незвичайно повною і володіла декількома дуже перспективними властивостями в області структур даних. Найпростішим типом даних у мові Plankalkul був окремий біт. На основі цього типу створювалися типи для представлення цілих чисел і чисел із плаваючою крапкою. Для представлення чисел із плаваючою крапкою, використовувалися додатковий код числа у двійковій системі і схема "прихованого біта", у даний час застосовувана для того, щоб не зберігати в пам'яті старший значущий біт у нормалізованій мантисі числа.
Крім цих звичайних скалярних типів, мова Plankalkul містила масиви і записи. При роботі з записами для включення в них інших записів як елементи допускалося використання рекурсії.
Хоча мова і не містила явного оператора goto, вона мала оператор циклу, подібний до оператора for мови Pascal. У мові також була команда Fin, верхній індекс якої означав вихід із внутрішнього циклу на зазначене число вкладених ітераційних циклів чи до початку нового ітераційного циклу. Мова Plankalkul містила оператор галуження, який не містив оператора else.
Найцікавішою особливістю програм Конрада Цузе було включення математичних виразів, що показують відношення між змінними в програмі. Ці вирази встановлювали, що саме в процесі виконання повинно бути істинним у тих точках програми, де знаходилися дані вирази. Самі ці вирази дуже схожі на твердження, використовувані в сучасній мові програмування Eiffel (Meyer, 1992) і аксіоматичній семантиці.
Рукопис Цузе містив програми, що були значно складніші програм, написаних до 1945 року! У ньому були наведені програми сортування масивів цілих чисел; перевірки зв’язності заданого графа; програми, які виконують дії з цілими числами і з числами з плаваючою крапкою, у тому числі добування квадратного кореня; програми, які робили синтаксичний аналіз логічних формул, що містять дужки й оператори із шістьма різними рівнями пріоритету. Ймовірно, найпримітнішими були 49 сторінок алгоритмів гри в шахи (гри, у якій сам Цузе фахівцем не був).
Якби на початку 1950-х років який-небудь фахівець з комп'ютерних наук знайшов створений Цузе опис мови Plankalkul, то єдиним аспектом, який би ускладнив реалізацію цієї мови в описовому вигляді, була би форма запису. Кожен оператор складався з двох-трьох рядків команд. Перший рядок був дуже схожий на оператори сучасних мов програмування. Другий рядок, який був необов'язковим, містив список індексів масивів, що згадуються в першому рядку. Цікаво відзначити, що той же метод вказування індексів використовувався Чарльзом Бебіджем (Charles Babbage) у програмах, написаних ним для його "аналітичної машини" у середині XIX сторіччя. Останній рядок кожного виразу мовою Plankalkul містив назви типів змінних, які згадувалися в першому рядку. На перший погляд, подібний запис виглядає лякливо.
Зараз ми можемо тільки здогадуватись, по якому шляху пішов би розвиток мов програмування і комп'ютерів, якби робота Конрада Цузе стала б широко відомою в 1945 чи навіть у 1950 році. Також цікаво припустити, як відрізнялася б зроблена Цузе робота, якби вона виконувалася в мирний час у колективі вчених, а не у фактичній ізоляції в Німеччині 1945 року.
