Історія мов програмування
Прогрес комп'ютерних технологій визначив процес появи нових різноманітних числових систем для запису алгоритмів мов програмування. Сенс появи такої мови — спрощення програмного коду.
Мови програмування прийнято ділити на п'ять поколінь. У перше покоління входять мови, створені на початку 50-х років XX-го сторіччя, коли перші комп'ютери тільки но з'явилися. Це була перша мова асемблера, створена за принципом «одна інструкція — один рядок».
Початок
Машинні коди і Асемблер
Фізичні принципи роботи електронних обчислювальних машин (ЕОМ) такі, що комп'ютер може сприймати команди, що складаються тільки з одиниць і нулів — послідовність перепаду напруги, тобто машинний код. На початковій стадії розвитку ЕОМ людині було необхідно записувати програми мовою, зрозумілій комп'ютеру, в машинних кодах. Кожна команда складалася з коду операцій та адрес операндів, виражених у вигляді різних поєднань одиниць і нулів. Отже, будь-яка програма для процесора виглядала на той час як послідовність одиниць і нулів.
Як показала практика спілкування з комп'ютером, така мова громіздка і незручна. Користуючись нею легко припуститися помилки, записавши не в тій послідовності 1 або 0. Програму важко контролювати. Крім того, при програмуванні в машинних кодах треба добре знати внутрішню структуру ЕОМ, принцип роботи кожного блоку. Програми такою мовою — дуже довгі послідовності одиниць і нулів є машинно-залежними, тобто для кожної ЕОМ необхідно було складати свою програму. Також програмування в машинних кодах вимагає від програміста багато часу та підвищеної уваги.
Виникла потреба автоматизації процесу формування машинного коду. Вже у 1950 році для запису програм почали застосовувати мнемонічну мову — мову assembly. Мова асемблера дала змогу записати машинний код у більш зручній для людини формі: для позначення команд і об'єктів,з якими ці команди виконуються, замість двійкових кодів використовувалися букви або скорочені слова, які відображали суть команди. Наприклад, мовою асемблера команда складання двох чисел позначається словом add, тоді як її машинний код може бути таким: 000010.
Асемблер — мова програмування низького рівня. Мова програмування низького рівня — це мова програмування, яка орієнтована на конкретний тип процесора і враховує його особливості. Тут «низький рівень» не означає «погани». Мається на увазі, що оператори мови близькі до машинного коду і орієнтовані на конкретні команди процесора. Поява мови асемблера значно полегшила життя програмістів, оскільки тепер замість великої кількості нулів і одиниць, вони могли писати програму командами, що складаються з символів наближених до звичайної мови. Ця мова, коли була нововведенням, мала популярність, бо давала змогу писати програми невеликого розміру.
Складність розробки на ньому великих програмних комплексів призвела до появи мов третього покоління — мов високого рівня. Але на цьому життя асемблера не закінчилася, він має популярність серед вузьких кіл. Зараз його використовують в написанні окремих фрагментів програм або іноді в написанні самих програм. Приклад, це використання асемблера в написанні драйверів, ігор та завантажувачів ОС. Швидкість роботи отриманої програми значно вище швидкості програми написаної мовою програмування високого рівня. Це пояснюється тим, що отриманий розмір програми дуже малий. Розробники антивірусних програм теж використовують асемблер в деяких модулях своїх програм, що забезпечує їх швидкодію, якби не асемблер, деякі програми завантажувалися б близько години[1].
Перші мови програмування високого рівня
Середина 50-х років XX ст. характеризується стрімкими змінами. Роль програмування в машинних кодах стала зменшуватися, стали з'являтися мови нового типу, що виступають в ролі посередника між машинами і програмістами. Настав час другого і третього поколінь мов програмування.
З середини 50-хроків XX ст. почали створювати перші мови програмування високого рівня (high-level programming languages). Ці мови не були прив'язані до певного типу ЕОМ (машинонезалежні). Для кожної з них були розроблені власні компілятори. Компіляція — трансляція програми, складеної мовою оригіналу високого рівня, в еквівалентну програму мовою низького рівня, близькій до машинного коду (абсолютний код, об'єктний модуль, іноді мова асемблера).
Мова програмування FORTRAN
Перша мова високого рівня Фортран була створена в період з 1954 по 1957 рік групою програмістів під керівництвом Джона Бекуса в корпорації IBM. Вона призначалася для наукових і технічних розрахунків. Назва Fortran є скороченням від FORmula TRANslator (перекладач формул).
Історія мови
Наприкінці 1953 р. Джон Бекус запропонував почати розробку ефективної альтернативи асемблеру для програмування на комп'ютері IBM 704. Вже до середини 1954 р. була закінчена чорнова специфікація мови Fortran. Перша специфікація для Fortran з'явилася в жовтні 1956 р. разом з першим компілятором, поставленим у квітні 1957 року. Компілятор був оптимізувальним, тому що клієнти відмовлялися використовувати мову програмування високого рівня, яка була не в змозі генерувати код з продуктивністю нижче, ніж у асемблера.
У той час суспільство ставилося скептично до нового способу програмування і не вірило в те, що Fortran дасть змогу програмувати швидше і ефективніше. За словами самого Джона Бекуса, велика частина його роботи була спрямована на те, щоб «бути лінивим». Йому страшенно не подобалося писати програми під IBM 701 на асемблері.
Мова була широко прийнята вченими для написання програм з інтенсивними обчисленнями. Включення комплексного типу даних зробило її особливо придатною для технічних застосунків.
До 1960 р. існували версії Fortran для комп'ютерів IBM 709, 650, 1620, 7090. Її велика популярність спонукала конкуруючих виробників ПК створювати компілятори Fortran для своїх комп'ютерів. Таким чином, вже до 1963 р. існувало понад 40 компіляторів для різних платформ. Саме тому Fortran вважають першою широко вживаною мовою програмування[2].
Фортран в СРСР
Фортран в СРСР з'явився пізніше, ніж на Заході, оскільки спочатку тут більш перспективним мовою вважався Алгол. У запровадженні Фортрану велику роль зіграло спілкування радянських фізиків зі своїми колегами з CERN, де в 1960-х роках майже всі розрахунки велися з використанням програм на Фортрані.
Перший радянський компілятор з Фортрану був створений в 1967 р. для машини «Мінськ-2», однак він не отримав великої популярності. Широке впровадження Фортрану почалося після створення в 1968 р компілятора ФОРТРАН-ДУБНА для машини БЕСМ-6. Машини ЕС ЕОМ, що з'явилися в 1972 р, вже з самого початку мали транслятор Фортрану («запозичений» з IBM/360 разом з іншим програмним забезпеченням)
Сучасний Фортран
Фортран широко використовувався в основному для наукових і інженерних обчислень. За час його існування було написано безліч бібліотек, тому Фортран добре підходить для виконання числових обчислень. Через велику кількість написаних програм Фортран використовується і у 21-му столітті: змінювати такі програми, і тим більше, переписувати їх, немає сенсу.[джерело?] Його структура сприяє тому, що компілятор може дуже добре оптимізувати обчислення.
Серед вчених ходить така приповідка, що будь-яка математична задача вже має рішення на Фортрані.
Серед тисяч бібліотек на Фортрані є, наприклад, пакет для множення матриць, пакети для розв'зання складних інтегральних рівнянь, і багато інших.
Причина появи мови ALGOL
Оскільки Фортран виявився настільки успішною мовою, в Європі виникли побоювання, що IBM буде домінувати в комп'ютерній галузі. Німецьке Товариство прикладної математики і механіки (GAMM) створило комітет з розробки універсальної мови. У той же час Асоціація обчислювальної техніки (ACM) організувала схожий комітет в США. Незважаючи на те, що у європейців було деяке занепокоєння з приводу панування американців, обидва цих комітети злилися в один.
Алгол був розроблений в 1958 році на тижневій конференції в ETH (Цюріх, Швейцарія) як універсальна мова програмування для широкого кола застосування, а згодом доопрацьована комітетом, створеним Міжнародною федерацією з обробки інформації. До комітету увійшли ряд провідних європейських та американських вчених і інженерів-розробників мов, серед яких були Джон Бекус, Джон Маккарті, Петер Наур, Едсгер Дейкстра і Джозеф Уегстіл, який згодом очолив комітет із розробки мови Кобол.
В ході роботи виникали труднощі непринципового характеру. Так, наприклад, один з членів комітету згадував «десяткову бурю» — вкрай різку дискусію між американськими і європейськими учасниками з приводу того, який саме символ повинен бути використаний як роздільник цілої і дробової частин числа. Американці наполягали на крапці, європейці ж вимагали застосовувати традиційну для Європи кому. Щоб уникнути конфліктів з дрібних питань, було вирішено, що опис Алголу буде трирівневим, що містить рівень описів, публікацій та реалізації. Дрібні питання, типу вибору між крапкою і комою, або використання алфавіту, були винесені на другий-третій рівень, що дало змогу відносно швидко вирішити принципові питання. На рівні публікацій, узгодженому пізніше, допускалося використання національних ключових слів і стандартів подання даних (у тому числі і десяткового дробу), рівень реалізації визначав мову абсолютно строго — згідно з ним повинні були будуватися транслятори.
Спочатку назву що пропонувалася "ALGOL" (ALGOrithmic Language) було відкинуто. Але, оскільки вона стала загальновживаною, офіційне ім'я IAL довелося згодом змінити на ALGOL 58.
Нова версія з'явилася в 1960 р, і ALGOL 60 (з невеликими змінами, зробленими в 1962 р.) з 60-х і до початку 70-х рр. минулого століття був стандартом академічного мови програмування.
У нової мови знайшлися як прихильники, так і критики. В США Алгол прийняли прохолодно, він був популярний лише в академічному середовищі, і то не скрізь. Ті, хто спробував реалізувати Алгол, зіткнулися з цілою низкою складнощів.
Так, наприклад, виявилося, що жоден з існуючих на той час комп'ютерів не підтримував введення-виведення всіх 116 літер, з яких складався алфавіт Алгола.
А ось в Європі Алгол прийняли з ентузіазмом. Він швидко завоював популярність в академічному середовищі, повсюдно йшла розробка компіляторів, багато з яких, незважаючи на складності реалізації, виявилися доволі успішними. Алгол поширився від Великої Британії до Далекого сходу СРСР, ставши як універсальною мовою опису алгоритмів в наукових публікаціях, так і засобом реального програмування.
Властивості мови. Її переваги і недоліки
В Алголі з'явилося уявлення про програму не як про вільну послідовності команд, а як про блокову структуру, що складається з чітко описаних та відокремлених одна від одної частин. Основний блок програми на Алголі — це сама головна програма. Вона містить свою виконувану частину, укладену в блок, обмежений парою ключових слів begin і end, а також опису підпрограм. Кожна підпрограма — це програма в мініатюрі, що має власні, описані всередині неї дані, однозначно визначений інтерфейс у вигляді імені та списку формальних параметрів, і блок коду.
При цьому в блоці можуть виділятися підблоки.
Були виділені структурні упаравляючі конструкції: розгалуження, цикли, послідовні ділянки, які виконують умовно або багаторазово вкладені набори операторів, також обмежені тими ж ключовими словами begin і end.
Сучасним програмістам подібна структура програми здається очевидною, де в чому застарілою і не завжди зручною, але на момент появи Алголу все це було помітним кроком вперед. Програми ставали регулярними, це давало можливість нарощувати їх за обсягом, зберігаючи оглядовими, зрозумілими, доступними аналізу і виправлення. Саме на базі Алголу і його мов-нащадків були виконані успішні роботи з аналітичного доведення правильності програм.
В Алголі було запропоновано два способи передачі параметрів в підпрограму — за ім'ям та за значенням. Якщо другий спосіб заперечень не викликає (він широко використовується в абсолютній більшості мов донині), то перший (він передбачає, що в процедуру передається ім'я фактичного параметра, і процедура працює так, як ніби в точці звернення записаний її код, де замість формального параметра написано ім'я фактичного) приводив до труднощів реалізації компіляторів і появи складно виявлюваних помилок.
Мова програмування LISP
Мова Лісп була запропонована Дж. Маккарті в роботі 1960 року і орієнтована на розробку програм для розвязання завдань не чисельного характеру. Англійська назва цієї мови — LISP є абревіатурою виразу LISt Processing (обробка списків) і добре підкреслює основну область її застосування. Поняття «список» виявилося дуже ємним.
У вигляді списків зручно представляти алгебраїчні вирази, графи, елементи кінцевих груп, множини, правила виведення і багато інших складні об'єкти. Списки є найбільш гнучкою формою подання інформації в пам'яті комп'ютерів. Тому не дивно, що зручна мова, спеціально призначена для обробки списків, швидко завоювала популярність.
Розвиток мови
Протягом майже сорокарічної історії його існування з'явилася низка діалектів цієї мови: Common LISP, Mac LISP, Inter LISP, Standard LISP та ін.
Відмінності між ними не носять принципового характеру і в основному зводяться до кількох наборів вбудованих функцій і певну різницю в формі запису програм. Тому програміст, яка навчилася працювати з одним з них, без зусиль зможе освоїти і будь-який інший.
Основні переваги мови
Великою перевагою Ліспа є його функціональна спрямованість, тобто програмування ведеться за допомогою функцій. Причому функція розуміється як правило, зіставляє елементам деякого класу відповідні елементи іншого класу. Сам процес співставлення не робить ніякого впливу на роботу програми, важливий тільки його результат — значення функції. Це дає змогу відносно легко писати і налагоджувати великі програмні комплекси. Ясність програм, чітке розмежування їх функцій, відсутність каверзних побічних ефектів при їх виконанні є обов'язковими вимогами до програмування таких логічно складних завдань, якими є завдання штучного інтелекту.
Дисципліна в програмуванні стає важливою, коли над програмою працює не одна людина, а ціла група програмістів.
Мова програмування COBOL
Кобол був розроблений в 1959 році і призначався насамперед для написання програм для розробки бізнес-застосунків, а так само для роботи в економічній сфері.
Специфікація мови була створена в 1959 році. Творці мови ставили собі за мету зробити її машинонезалежною і максимально наближеною до природної англійської мови. Обидві цілі були успішно досягнуті; програми на COBOL вважаються зрозумілими навіть неспеціалістам, оскільки тексти цією мовою програмування не потребують будь-яких спеціальних коментарів (самодокументуючі програми).
Переваги та недоліки
COBOL — мова дуже стара і свого часу використовувалася вкрай активно, тому існує безліч реалізацій і діалектів. Для мови був затверджений ряд стандартів: у 1968, 1974, 1985 і 2002 роках. Останній стандарт додав в мову підтримку об'єктно-орієнтованої парадигми.
Мова дає змогу ефективно працювати з великою кількістю даних, вона насичена різноманітними можливостями пошуку, сортування та розподілу. До числа інших плюсів COBOL зазвичай відносять її структурованість. Досить потужні компілятори з цієї мови, розроблені для персональних комп'ютерів. Деякі з них настільки ефективні, що програму, налагоджену на персональному комп'ютері, неважко перенести на великі ЕОМ.
Перераховуючи мінуси, не можна не згадати про те, що на Коболі можна запрограмувати лише найпростіші алгебраїчні обчислення. Для складних інженерних розрахунків ця мова не згодиться.
Висновки з даного періоду розвитку мов програмування
На зорі комп'ютеризації (на початку 1950-х р.р.), машинна мова була єдиною мовою, більшого людина до того часу не придумала. Мови низького рівня мало схожі на нормальну, звичну людині мову. Великі, громіздкі програми на таких мовах пишуться рідко. Зате, якщо програма буде написана такою мовою, то вона буде працювати швидко, займаючи маленький обсяг і допускаючи мінімальну кількість помилок. Чим нижче і ближче до машинного рівень мови, тим менше і конкретніше завдання, які ставляться перед кожною командою.
Для порятунку програмістів від суворої машинної мови програмування, були створені мови високого рівня (тобто немашинні мови), які стали своєрідним зв'язуючим містком між людиною і машинною мовою комп'ютера. Мови високого рівня працюють через трансляційні програми, які вводять «вихідний код» (гібрид англійських слів і математичних виразів, який зчитує машина), і в кінцевому підсумку змушує комп'ютер виконувати відповідні команди, які даються машинною мовою.
З появою мов високого рівня програмісти отримали можливість більше часу приділяти вирішенню конкретної проблеми, не відволікаючись особливо на дуже тонкі питання організації самого процесу виконання завдання на машині. Крім того, поява цих мов ознаменувала перший крок на шляху створення програм, які вийшли за межі науково-дослідних лабораторій і фінансових відділів.
Підбиваючи підсумок даного періоду розвитку мов програмування, можна зробити висновок, що мови програмування високого рівня (FORTRAN, ALGOL, LISP, COBOL, тощо) не схожі на мову асемблера. Мови високого рівня розроблені спеціально для того, щоб можна було мати справу безпосередньо з завданням що вирішуються програмою. На цій посаді вони іноді називаються процедурними мовами, оскільки описують процедуру, яка використовується для вирішення завдання. Мови високого рівня машинонезалежні. Програми ж на мові асемблера безпосередньо відносяться до тієї машини, на якій вони повинні виконуватися.
Переваги мов програмування високого рівня:
- Алфавіт мови значно ширше машинного, що робить його набагато більш виразним і істотно підвищує наочність та зрозумілість тексту;
- Набір операцій, допустимих для використання, не залежить від набору машинних операцій, а вибирається з міркувань зручності формулювання алгоритмів розв'язання задач певного класу;
- Конструкції операторів задаються в зручному для людини вигляді;
- Підтримується широкий набір типів даних.
Недоліком мов високого рівня є більший розмір програм в порівнянні з програмами мовою низького рівня. Тому переважно мови високого рівня використовуються для розробок програмного забезпечення комп'ютерів і пристроїв, які мають великий обсяг пам'яті. А різні підвиди асемблера застосовуються для програмування інших пристроїв, де критичним є розмір програми.
Машинна мова
Невідомо, наскільки б прискорився розвиток програмування, якби напрацювання Цузе стали доступні іншим вченим в кінці 40-х років, але на практиці з розвитком комп'ютерної техніки спочатку набула поширення машинна мова. З її допомогою програміст міг задавати команди, оперуючи з осередками пам'яті, повністю використовуючи можливості машини. Суть цієї мови — набір кодів, обов'язково зрозумілих процесору, до якого звертаються. Частини («слова») цієї мови називаються інструкціями, кожна з яких представляє собою одну елементарне дію для центрального процесора, як, наприклад, зчитування інформації з комірки пам'яті. Лише при розумінні пристрою комп'ютерного обладнання і знання цих цілочисельних кодів можна було безпосередньо управляти процесором. Тоді ще комп'ютери були простими обчислювальними машинами, які застосовуються для різних математичних розрахунків. Але вони розвивалися, а використання більшості комп'ютерів на рівні машинної мови важко, особливо складним було читання і модифікація подібних програм, що ускладнювався використанням абсолютної адресації пам'яті[3]. Тому з часом від використання машинних кодів довелося відмовитися.
Наприклад, для організації читання блоку даних з гнучкого диска програміст може використовувати 16 різних команд, кожна з яких вимагає 13 параметрів, таких як номер блока на диску, номер сектора на доріжці, тощо. Коли виконання операції з диском завершується, контролер повертає 23 значення, що відображають наявність і типи помилок, які необхідно аналізувати. Вже одне звернення до процесора громіздке, а аналіз помилок і зовсім видається неймовірним, особливо, якщо не саме з цим процесором доводитися працювати. Таким чином, набір команд машинної мови сильно залежить від типу процесора.
Мова асемблера
Протягом 1950-х років запити на розробку програмного забезпечення зросли і програми стали дуже великими. Доводилося писати дуже багато коду, хоча забезпечення і було досить простим. Однак, програми ускладнювалися все більше, їх структура також ускладнилася, тому що весь час розвивалася комп'ютерна техніка. Тоді стали користуватися спеціальними програмами — збирачами програм з маленьких шматочків кодів — асемблер. Почався новий етап розвитку.
Тепер, коли була потрібна ефективна програма, замість машинних мов використовувалися близькі до них машиноорієнтовані мови асемблера. До таких належали, наприклад, Autocode, з 1954 р. — IPL (попередник мови LISP), з 1955 — FLOW-MATIC. Тепер люди стали використовувати мнемонічні команди замість машинних команд.
Але навіть робота з асемблером досить складна і вимагає спеціальної підготовки. Наприклад, для процесора Zilog Z80 машинна команда 00000101 наказує процесору зменшити на одиницю свій регістр B
. В асемблері це ж буде записано як DEC B
.
Мови високого рівня
Наступний крок був зроблений в 1954 році, коли була розпочата розробка мови високого рівня — Фортран (FORTRAN, англ. FORmula TRANslator), компілятор для якого вперше з'явився в квітні 1957 року[4]. До розробки такого мови підштовхнули нові можливості впровадженого в 1954 році комп'ютера IBM 704, в якому на апаратному рівні були реалізовані індексна адресація і операції з плаваючою крапкою[5]. Слідом за ним з'явилися і деякі інші мови, наприклад: LISP, ALGOL 58, FACT.
Мови високого рівня імітують природні мови, використовуючи деякі слова розмовної мови і загальноприйняті математичні символи. Ці мови більш зручні для людини, за допомогою них можна писати програми до декількох тисяч рядків довжиною. Умовними словами можна було, як звично людині, набагато простіше висловити складну програмну операцію з бітів. Однак ранні варіанти Фортрану значно поступаються пізнім концепціям і мов, використовувався він для створення відносно простих за сучасними мірками програм[6].
У другій половині 50-х інтернаціональна команда розробників спробувала створити універсальну мову програмування. В результаті з'явився ALGOL 58 ({{lang-en>ALGOrithmic Language}}), за багатьма параметрами що був спадкоємцем Фортрану. У нього були додані нові концепції і узагальнення, формалізована концепція типів даних, дозволено використання ідентифікаторів будь-якої довжини, коли в Фортрані було обмеження в 6 символів[7]. Цей варіант мови був швидше чорновим, тому в січні 1960 року в Парижі відбулися другі збори комітету з розробки законопроекту, де було вирішено внести значні зміни. Новий варіант отримав назву ALGOL 60, основними нововведеннями в ньому були: концепція блокової структури, можливість створення рекурсивних процедур, автоматичні масиви[8]. Незважаючи на свої численні переваги, ALGOL так і не набув великого поширення, в першу чергу через складність в його реалізації та відсутності підтримки від корпорації IBM[9].
Поява структурного програмування
До кінця 1960-х років у зв'язку з ростом складності програм і подальшим розвитком програмних засобів виникла необхідність збільшити продуктивність праці програмістів, що призвело до розробки структурного програмування. Основоположником цієї методології вважається Едсгер Дейкстра, який в 1968 році опублікував свій знаменитий лист «Оператор Goto вважається шкідливим»[10], а також описав основні принципи структурного програмування[11]. З розвитком структурного програмування наступним досягненням були процедури і функції. Тобто, якщо є завдання, яке виконується кілька разів, то її можна оголосити як функцію або як процедуру і в виконанні програми просто викликати її. Загальний код програми в даному випадку стає менше. Це сприяло створенню модульних програм.
Наступним досягненням було об'єднання різнорідних даних, які використовуються в програмі в зв'язці, в структурі.
Структури — це складові типи даних, побудовані з використанням інших типів даних. Наприклад, структура часу розбивається на: години, хвилини, секунди. У свою чергу і годинник, і хвилини, і секунди описані за допомогою більш простих і елементарних типів даних. І замість роботи з окремими змінними, в яких легко заплутатися, можна перейти до структури «час», що включає в себе вже години, хвилини і секунди, і працювати з нею, як з єдиним типом одного формату.
Структурне програмування передбачає точно позначені керувальні структури, програмні блоки, відсутність інструкцій безумовного переходу (GOTO
), автономні підпрограми, підтримку рекурсії і локальних змінних. Суть такого підходу полягає в можливості розбиття програми на складові елементи зі збільшенням читабельності програмного коду[12].
Також створювалися функціональні (аплікативні) мови (Приклад: Lisp — англ. LISt Processing, 1958) і логічні мови (приклад: Prolog — англ. PROgramming in LOGic, 1972).
Хоча впровадження структурного програмування дало позитивний результат, навіть воно виявлялося неспроможним тоді, коли програма досягала певної довжини. Для того щоб написати більш складну і довгу програму, потрібен був новий підхід до програмування.
ООП
При використанні структур даних в програмі виробляються і відповідні їм функції для роботи з ними. Це призвело до думки їх об'єднати і використовувати спільно, так з'явилися класи.
Клас — це структура даних, що містить в собі не тільки змінні, але і функції, які працюють з цими змінними.
Це досягнення в області програмування було дуже великим. Тепер програмування можна було розбити на класи і тестувати не всю програму, що складається з 10 000 рядків коду, а розбити програму на 100 класів, і тестувати кожен клас. Це істотно полегшило написання програмного продукту.
У підсумку, наприкінці 1970-х — початку 1980-х були розроблені принципи об'єктно-орієнтованого програмування. ООП поєднує кращі принципи структурного програмування з новими концепціями інкапсуляції, поліморфізму підтипів і успадкування.
Першою об'єктно-орієнтованою мовою програмування є Сімула-67, в якій вперше з'явилися класи[13]. Концепції ООП отримали подальший розвиток в мові Smalltalk, в якій також були закладені основи систем з віконним управлінням[14]. Більш пізніми прикладами об'єктно-орієнтованих мов є Object Pascal, C ++, Java, C# та ін.
ООП дає змогу оптимально організовувати програми, розбиваючи проблему на складові частини, і працюючи з кожною окремо. Програма, написана об'єктно-орієнтованою мовою, розв'язуючи певну задачу, по суті, описує частину світу, що відноситься до цього завдання.
Примітки
- Р.Богатырев. Природа и эволюция сценарных языков. — Мир ПК, 2001.
- Е. К. Хеннера. Информатика под редакцией Е.К. Хеннера. — Академия, 2004.
- Себеста, 2001, с. 61.
- Себеста, 2001, с. 65.
- Себеста, 2001, с. 63-64.
- Себеста, 2001, с. 68.
- Себеста, 2001, с. 76.
- Себеста, 2001, с. 78.
- Себеста, 2001, с. 79.
- David R. Tribble (37.11.2005). Go To Statement Considered Harmful: A Retrospective (англ.). Процитовано 13 лютого 2015.
- Edsger W. Dijkstra (04.1970). Notes on Structured Programming (англ.). Техаський університет. Процитовано 13 лютого 2015.
- Йодан Е. Структурний проектування і конструювання програм. - Пер. з англ. - М.: Світ, 1979. - 415с. - С. 174.
- Себеста, 2001, с. 92-93.
- Себеста, 2001, с. 111.
Література
- Роберт У. Себеста. Основные концепции языков программирования. — 5-е изд. — М. : Вильямс, 2001. — 672 с. — ISBN 5-8459-0192-8.