- •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.3.4. Огляд мови fortran II
Компілятор FORTRAN II почав поширюватися навесні 1958 року. Він виправив безліч помилок системи компіляції мови FORTRAN I, а також додав у мову кілька істотних властивостей, найважливішою з яких була незалежна компіляція підпрограм. При відсутності такої властивості будь-яка зміна вимагала перекомпіляції всієї програми. Відсутність у мові FORTRAN 1 можливості незалежної компіляції разом з низькою надійністю комп'ютера IBM 704 обмежувало обсяг програми, що повинен був не перевищувати 300^00 рядків (Wexelblat, 1981). Програми, які мали більший обсяг, мали мало шансів завершити компіляцію до збою в роботі машини. Можливість включення в програму підпрограм, попередньо відкомпільованих на машинних мовах, значно скорочувала процес компіляції.
4.3.5. Мови fortran IV, fortran 77 і fortran 90
Мова FORTRAN III була розроблена, але так ніколи і не одержала широкого поширення. Мова FORTRAN IV, навпаки, стала однією з найвикористовуваніших у той час мов програмування. Розвиток цієї мови відбувався в період з 1960 по 1962 рік, і вона залишалася стандартною версією мови FORTRAN аж до виходу в 1978 році повідомлення про випуск мови FORTRAN 77 (ANSI, 1978a). За багатьма параметрами мова FORTRAN IV була значно краще мови FORTRAN II. Серед найважливіших її нововведень було явне оголошення типів змінних, логічний оператор IF, а також можливість передавати одні підпрограм іншим у якості їхніх параметрів.
Мова FORTRAN 77 підтримувала більшість властивостей мови FORTRAN IV, крім того, у неї були додані обробка символьних рядків, логічні оператори керування циклами, а також можливість використання оператора ELSE у структурі вибору IF.
Назва FORTRAN 90 використовується для позначення пізнішої версії мови FORTRAN (ANSI, 1992). Мова FORTRAN 90 разюче відрізняється від мови FORTRAN 77. Найзначущі зміни коротко описуються нижче.
Вбудовано набір функцій, який виконує дії з масивами. В їхнє число входять: DOTPRODUCT, MATMUL, TRANSPOSE, MAXVAL, MINVAL, PRODUCT і SUM, про призначення яких можна догадатися по назвах ("скалярний добуток", "множення матриць", "транспонування", "максимальна величина", "мінімальна величина", "добуток" і "сума"). Це тільки деякі з найбільш корисних доступних функцій.
Якщо масиви були оголошені як ALLOCATABLE, то вони можуть по команді динамічно розміщуватися в пам'яті і видалятися з її. Остання можливість є радикальною зміною в порівнянні з попередніми версіями мови FORTRAN, які мали лише статичні дані. Була введена форма записів, названих похідними типами. Частиною мови FORTRAN 90 стали також покажчики.
Були додані нові керуючі оператори: оператор різноманітного розгалуження CASE, оператор EXIT — для передчасного виходу й оператор CYCLE — для передачі керування на початок циклу без виходу з циклу.
Підпрограми можуть бути рекурсивними, а також мати необов'язкові і ключові параметри.
Була додана можливість використання модулів, аналогічних пакетам мови Ada. Модулі можуть містити оголошення даних і підпрограми, кожну з яких для керування зовнішнім доступом можна описати за допомогою специфікаторів PRIVATE або PUBLIC.
В описі мови FORTRAN 90 з'явилася нова концепція, що дозволяла видаляти властивості мови, які були присутні у ранніх версіях. Хоча мова FORTRAN 90 і мала усі можливості мови FORTRAN 77, було складено два списки властивостей, що могли бути ліквідовані в наступній (після мови FORTRAN 90) версії мови FORTRAN. У цьому списку були вказані такі оператори, як арифметичний оператор IF і призначений оператор GOTO. Список властивостей, які не рекомендуються до вживання, включав властивості, від яких планувалося відмовитися в другій версії, яка піде за мовою FORTRAN 90. У цьому списку знаходилися оператори COMMON, EQUIVALENCE, обчислюваний оператор GOTO, а також операторні функції.
4.3.6. Оцінка
Команда розробників первісного варіанта мови FORTRAN вважала, що розробка мови — тільки необхідна прелюдія перед насущною задачею розробки транслятора. Більш того, їм ніколи не спадало на думку, що мова FORTRAN мігла б використовуватися на комп'ютерах виробництва інших корпорацій, а не корпорації IBM. Дійсно, вони були змушені продумувати побудову компіляторів мови FORTRAN для інших машин, створюваних корпорацією IBM, тільки тому, що спадкоємець комп'ютера IBM 704, комп'ютер IBM 709, був випущений до випуску компілятора мови FORTRAN, призначеного для комп'ютера IBM 701. Той факт, що мова FORTRAN була реально використана на комп'ютерах, а всі наступні мови програмування своєю появою в тій чи іншій мірі зобов'язані мові FORTRAN, є дійсно вражаючим у світлі скромних домагань його розробників.
Однїєю з властивостей мови FORTRAN I і всіх її наступних версій, за винятком мови FORTRAN 90, які дозволяли створення високо оптимізованих компіляторів, було те, що типи і комірки пам'яті для всіх змінних фіксувалися до виконання програми. У процесі виконання програми нові змінні не вводилися, і розподіл пам'яті не відбувався. Таким чином, гнучкість програмування була принесена в жертву простоті й ефективності. Подібне рішення виключило можливість створення рекурсивних підпрограм і ускладнило реалізацію структур даних, що могли б динамічно збільшуватися чи змінювати вигляд. Зрозуміло, програми, створювані під час розробки ранніх версій мови FORTRAN, були обчислювальними по своїй природі і простими в порівнянні із сучасними програмними проектами. Отже, жертва була не такою вже й великою.
Важко переоцінити глобальний успіх мови FORTRAN: вона дійсно разюче і навічно змінила спосіб використання комп'ютерів. Це, зрозуміло, відбулося значною мірою завдяки тому, що вона виявилася першою широко використовуваною мовою високого рівня. У порівнянні з концепціями і мовами, розробленими пізніше, ранні версії мови FORTRAN значно програють, як і належало очікувати. Усе-таки випущеному Фордом у 1910 році автомобілю "Model Т" далеко до створеного в 1998 році автомобіля "Ford Mustang". Проте, незважаючи на недостатність мови FORTRAN, рушійна сила вкладених у неї величезних інвестицій, крім інших факторів, вивела її в число найвикористовуваніших мов високого рівня.
Алан Перліс (Alan Perlis), один з розробників мови ALGOL 60, у 1978 році сказав: "Мова FORTRAN — це lingua franca (змішана мова з елементів романських, грецької і східних мов, що використовується для спілкування в східному Середземномор'ї; також мова із широкою сферою вживання, жаргон.— Прим.переїв) комп'ютерного світу. Це мова вулиць, у кращому, а не вульгарному змісті цього слова. Вона вижила і буде жити, оскільки вона була створена для того, щоб бути чудово корисною частиною життєво важливої комерційної діяльності" (Wexelblat, 1981).
Нижче наведено приклад програми мовою FORTRAN 90.
С ПРИКЛАД ПРОГРАМИ МОВОЮ FORTRAN 90
С ВВЕДЕННЯ: ЦІЛЕ ЧИСЛО LIST^LEN, МЕНШЕ 100, ЗА ЯКИМ С ВИПЛИВАЄ НАБІР ЦІЛИХ ЧИСЕЛ, У КІЛЬКОСТІ
С LIST_LEN
С ВИСНОВОК: КІЛЬКІСТЬ УВЕДЕНИХ ВЕЛИЧИН, ЩО БІЛЬШЕ ЇХ СЕРЕДНЬОГО С АРИФМЕТИЧНОГО
INTEGER INTLIST(99)
INTEGER LIST^LEN, COUNTER, SUM, AVERAGE, RESULT RESULT =* 0 SUM = 0
READ *, LIST_LEN IF ((LIST_LEN .GT. 0) .AND.
(LIST_LEN .LT. 100)) THEN
С ЗЧИТУВАННЯ ВХІДНИХ ВЕЛИЧИН У МАСИВ І ОБЧИСЛЕННЯ ЇХНЬОЇ СУМИ
DO 10 COUNTER = 1, LIST_LEN READ *, INTLIST(COUNTER) SUM = SUM + INTLIST(COUNTER)
10 CONTINUE
С ОБЧИСЛЕННЯ СЕРЕДНЬОГО
AVERAGE = SUM / LIST LEN
С ПІДРАХУНОК ЧИСЛА ВЕЛИЧИН, ЩО БІЛЬШЕ СЕРЕДНЬОГО
DO 20 COUNTER = 1, LISTJLEN
IF (INTLIST(COUNTER) .GT. AVERAGE) THEN
RESULT = RESULT +1 END IF
CONTINUE
С ВИВІД РЕЗУЛЬТАТІВ
PRINT *,'ЧИСЛО ВЕЛИЧИН,ЩО БІЛЬШЕ СЕРЕДНЬОГО,ДОРІВНЮЄ', *RESULT ELSE
PRINT *,'ПОМИЛКА - ВВЕДЕНА НЕВІРНА ДОВЖИНА СПИСКУ' END IF STOP END
