Історія мов програмування Зміст Початок | Машинна мова |...


Мови програмування


мови програмування високого рівнякомпіляториФортранДжона БекусаТовариство прикладної математики і механікиАсоціація обчислювальної технікиАлголETHМіжнародною федерацією з обробки інформаціїДжон БекусДжон МаккартіПетер НаурЕдсгер ДейкстраКоболКоболЦуземашинна мовапрограмістінструкціямиадресації пам'ятізбирачами программови асемблераZilog Z80Фортранангл.IBM 704LISPALGOL 58Мови високого рівняALGOL 58англ.ПарижірекурсивнихCOBOLПаскальСіструктурного програмуванняЕдсгер ДейкстраGotoпроцедуримодульних програмпрограмні блокичитабельностіLispангл.Prologангл.Класоб'єктно-орієнтованого програмуванняінкапсуляціїполіморфізму підтипівуспадкуванняСімулаSmalltalkObject PascalC ++JavaC#




Прогрес комп'ютерних технологій визначив процес появи нових різноманітних знакових (числових) систем для запису алгоритмів мов програмування. Сенс появи такої мови — спрощення програмного коду.


З кожним днем світ стає більш мобільним і інформаційним. Все більше комп'ютери вступають в повсякденне життя, і щоб полегшити спілкування з ними створюється нове програмне запезпечення (ПЗ) за допомогою різних мов програмування.


Мови програмування прийнято ділити на п'ять поколінь. У перше покоління входять мови, створені на початку 50-х років XX-го сторіччя, коли перші комп'ютери тільки но з'явилися. Це була перша мова асемблера, створена за принципом «одна інструкція — один рядок».




Зміст






  • 1 Початок


    • 1.1 Машинні коди і Асемблер


    • 1.2 Перші мови програмування високого рівня


    • 1.3 Мова програмування FORTRAN


      • 1.3.1 Історія мови


      • 1.3.2 Фортран в СРСР


      • 1.3.3 Сучасний Фортран. переваги мови




    • 1.4 Мова програмування ALGOL 58


      • 1.4.1 Причина появи мови ALGOL


      • 1.4.2 Властивості мови. Її переваги і недоліки




    • 1.5 Мова програмування LISP


      • 1.5.1 Розвиток мови


      • 1.5.2 Основні переваги мови




    • 1.6 Мова програмування COBOL


      • 1.6.1 Переваги та недоліки




    • 1.7 Висновки з даного періоду розвитку мов програмування




  • 2 Машинна мова


  • 3 Мова асемблера


  • 4 Мови високого рівня


  • 5 Поява структурного програмування


  • 6 ООП


  • 7 Примітки


  • 8 Література


  • 9 Посилання





Початок |



Машинні коди і Асемблер |


Фізичні принципи роботи електронних обчислювальних машин (ЕОМ) такі, що комп'ютер може сприймати команди, що складаються тільки з одиниць і нулів — послідовність перепаду напруги, тобто машинний код. На початковій стадії розвитку ЕОМ людині було необхідно складати програми на мові, зрозумілій комп'ютеру, в машинних кодах. Кожна команда складалася з коду операцій та адрес операндів, виражених у вигляді різних поєднань одиниць і нулів. Отже, будь-яка програма для процесора виглядала на той час як послідовність одиниць і нулів.


Як показала практика спілкування з комп'ютером, така мова громіздка і незручна. Користуючись нею легко припуститися помилки, записавши не в тій послідовності 1 або 0. Програму важко контролювати. Крім того, при програмуванні в машинних кодах треба добре знати внутрішню структуру ЕОМ, принцип роботи кожного блоку. Програми такою мовою — дуже довгі послідовності одиниць і нулів є машинно залежними, тобто для кожної ЕОМ необхідно було складати свою програму. Також програмування в машинних кодах вимагає від програміста багато часу та підвищеного уваги.


Виникла потреба автоматизації процесу формування машинного коду. Вже у 1950 році для запису програм почали застосовувати мнемонічну мову — мову assembly. Мова асемблера дозволила уявити машинний код у більш зручній для людини формі: для позначення команд і об'єктів,з якими ці команди виконуються, замість двійкових кодів використовувалися букви або скорочені слова, які відображали суть команди. Наприклад, на мові асемблера команда складання двох чисел позначається словом add, тоді як її машинний код може бути таким: 000010.


Асемблер — мова програмування низького рівня. Мова програмування низького рівня — це мова програмування, яка орієнтована на конкретний тип процесора і враховує його особливості. В даному випадку «низький рівень» не означає «погани». Мається на увазі, що оператори мови близькі до машинного коду і орієнтовані на конкретні команди процесора. Поява мови асемблера значно полегшила життя програмістів, так як тепер замість великої кількості нулів і одиниць, вони могли писати програму командами, що складаються з символів наближених до звичайної мови. Ця мова, коли була нововведенням, користувалася популярністю, так як дозволяла писати програми невеликого розміру.


Складність розробки на ньому великих програмних комплексів призвела до появи мов третього покоління — мов високого рівня. Але на цьому життя асемблера не закінчилася, він користується популярністю у вузьких колах. Зараз його використовують в написанні окремих фрагментів програм або іноді в написанні самих програм. Приклад, це використання асемблера в написанні драйверів, ігр та завантажувачів ОС. Швидкість роботи отриманої програми значно вище швидкості програми написаної на мові програмування високого рівня. Це пояснюється тим, що отриманий розмір програми дуже малий. Розробники антивірусних програм теж використовують асемблер в деяких модулях своїх програм, що забезпечує їх швидкодію, якби не асемблер, деякі програми завантажувалися б близько години[1].



Перші мови програмування високого рівня |


Середина 50-х рр. характеризується стрімкими змінами. Роль програмування в машинних кодах стала зменшуватися, стали з'являтися мови нового типу, що виступають в ролі посередника між машинами і програмістами. Настав час другого і третього поколінь мов програмування.


З середини 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 разом з іншим програмним забезпеченням)



Сучасний Фортран. переваги мови |


Фортран широко використовувався в основному для наукових і інженерних обчислень. Він прекрасно підходить для вирішення численних завдань, так як за час його існування було написано безліч бібліотек. Він використовується і до тепер, але не стільки через вдалий дизайн, скільки в силу великої кількості написаних на ньому програм, змінювати і, тим більше, переписувати які немає сенсу. Його структура сприяє тому, що компілятор може дуже добре оптимізувати обчислення.


Серед вчених ходить така приповідка, що будь-яка математична задача вже має рішення на Фортрані.


Є серед тисяч фортрановскіх пакетів, і пакет для множення матриць, і пакет для вирішення складних інтегральних рівнянь, і багато, багато інших.



Мова програмування ALGOL 58 |



Причина появи мови 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, тощо) не схожі на мову асемблера. Мови високого рівня розроблені спеціально для того, щоб можна було мати справу безпосередньо з завданням що вирішуються програмою. На цій посаді вони іноді називаються процедурними мовами, оскільки описують процедуру, яка використовується для вирішення завдання. Мови високого рівня машинонезалежні. Програми ж на мові асемблера безпосередньо відносяться до тієї машини, на якій вони повинні виконуватися.


Переваги мов програмування високого рівня:



  1. Алфавит мови значно ширше машинного, що робить його набагато більш виразним і істотно підвищує наочність та зрозумілість тексту;

  2. Набір операцій, допустимих для використання, не залежить від набору машинних операцій, а вибирається з міркувань зручності формулювання алгоритмів розв'язання задач певного класу;

  3. Конструкції операторів задаються в зручному для людини вигляді;

  4. Підтримується широкий набір типів даних.


Недоліком мов високого рівня є більший розмір програм в порівнянні з програмами мовою низького рівня. Тому переважно мови високого рівня використовуються для розробок програмного забезпечення комп'ютерів і пристроїв, які мають великий обсяг пам'яті. А різні підвиди асемблера застосовуються для програмування інших пристроїв, де критичним є розмір програми.



Машинна мова |


Невідомо, наскільки б прискорився розвиток програмування, якби напрацювання Цузе стали доступні іншим вченим в кінці 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 (англ. ALGOrithmic Language), за багатьма параметрами що був спадкоємцем Фортрана. У нього були додані нові концепції і узагальнення, формалізована концепція типів даних, дозволено використання ідентифікаторів будь-якої довжини, коли в Фортране було обмеження в 6 символів[7]. Цей варіант мови був швидше чорновим, тому в січні 1960 року в Парижі відбулися другі збори комітету з розробки законопроекту, де було вирішено внести значні зміни. Новий варіант отримав назву ALGOL 60, основними нововведеннями в ньому були: концепція блокової структури, можливість створення рекурсивних процедур, автоматичні масиви[8]. Незважаючи на свої численні гідності, ALGOL так і не набув великого поширення, в першу чергу через складність в його реалізації та відсутності підтримки від корпорації IBM[9].


Надалі з'явилися COBOL (1959), Паскаль (1970), Сі (1972).



Поява структурного програмування |


До кінця 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# та ін.


ООП дозволяє оптимально організовувати програми, розбиваючи проблему на складові частини, і працюючи з кожною окремо. Програма на об'єктно-орієнтованої мови, вирішуючи деяку задачу, по суті, описує частину світу, що відноситься до цього завдання.



Примітки |




  1. Р.Богатырев. Природа и эволюция сценарных языков. — Мир ПК, 2001.


  2. Е. К. Хеннера. Информатика под редакцией Е.К. Хеннера. — Академия, 2004.


  3. Себеста, 2001, с. 61


  4. Себеста, 2001, с. 65


  5. Себеста, 2001, с. 63-64


  6. Себеста, 2001, с. 68


  7. Себеста, 2001, с. 76


  8. Себеста, 2001, с. 78


  9. Себеста, 2001, с. 79


  10. David R. Tribble (37.11.2005). Go To Statement Considered Harmful: A Retrospective (en). Процитовано 2015-02-13. 


  11. Edsger W. Dijkstra (04.1970). Notes on Structured Programming (en). Техаський університет. Процитовано 2015-02-13. 


  12. Йодан Е. Структурний проектування і конструювання програм. - Пер. з англ. - М.: Світ, 1979. - 415с. - С. 174.



  13. Себеста, 2001, с. 92-93


  14. Себеста, 2001, с. 111



Література |


  • Роберт У. Себеста. Основные концепции языков программирования. — 5-е изд. — М. : Вильямс, 2001. — 672 с. — ISBN 5-8459-0192-8.


Посилання |


  • Еволюція мов програмування








Popular posts from this blog

As a Security Precaution, the user account has been locked The Next CEO of Stack OverflowMS...

Українські прізвища Зміст Історичні відомості |...

Список ссавців Італії Природоохоронні статуси | Список |...