Реферат: Еволюція мов програмування

Розвиток обчислювальної техніки супроводжується створенням нових і вдосконаленням існуючих мов програмування (МП)—засобів спілкування програмістів з ЕОМ. Під МП розуміють правила подання даних і запису алгоритмів їх обробки, що автоматично виконуються ЕОМ. У більш абстрактному вигляді МП є засобом створення програмних моделей об’єктів і явищ зовнішнього світу. На сьогодні вже створено десятки різних МП (як примітивних, так і близьких до мови людини). Щоб розібратися в розмаїтті МП, потрібно знати їх класифікацію, а також історію створення, еволюцію і тенденції розвитку. Ця стаття і присвячена розгляду зазначених питань. Рушійні сили еволюції МП Щоб розуміти тенденції розвитку МП, потрібно знати рушійні сили їх еволюції. Для з’ясування цього питання будемо розглядати МП з різних точок зору. По-перше, МП є інструментом програміста для створення програм. Для створення якісних програм потрібні зручні МП. Тому однією з рушійних сил еволюції МП є прагнення розробників до створення більш досконалих програм. По-друге, процес розроблення програми можна порівнювати з промисловим виробництвом, в якому визначальними чинниками є продуктивність праці колективу програмістів, собівартість і якість програмної продукції. Створюються різноманітні технології розроблення програм (структурне, модульне, об’єктно-орієнтоване програмування та ін. ), що повинні підтримуватися МП. Тому другою рушійною силою еволюції МП є прагнення до підвищення ефективності процесу виробництва програмної продукції. По-третє, програми можна розглядати як аналог електронних приладів обробки інформації, в яких замість радіодеталей і мікросхем використовують конструкції МП (елементна база програми). Як і електронні прилади, програми можуть бути найпростішими (рівня детекторного приймальника) і дуже складними (рівня автоматичної космічної станції), при цьому рівень інструменту повинен відповідати складності виробу. Крім того, людині зручніше описувати об’єкт, що моделюється, використовуючи терміни предметної галузі, а не мовою цифр. Тому третьою рушійною силою, що веде до створення нових, спеціалізованих, орієнтованих на проблемну галузь, потужних МП, є збільшення різноманітності і підвищення складності задач, які розв’язуються за допомогою ЕОМ. По-четверте, вдосконалення самих ЕОМ призводить до необхідності створення мов, що максимально реалізують нові можливості ЕОМ. По-п’яте, програми є інтелектуальним продуктом, який потрібно накопичувати і примножувати. Але програми, як і технічні вироби, мають властивість морального старіння, однією з причин якого є їх залежність від типу ЕОМ і операційного середовища. З моральним старінням програм борються шляхом їх модернізації і випуску нових версій, проте в умовах частої зміни типів ЕОМ і операційних середовищ розробники будуть тільки тим і займатися, що модернізувати старі програми. Мова програмування повинна забезпечувати тривалий життєвий цикл програми. Прагнення до цього є п’ятою рушійною силою розвитку МП. Історія розвитку МПВідомо, що першим програмістом була жінка—леді Ада Лавлейс, дочка лорда Байрона. Вона розробляла програми для одного з перших механічних комп’ютерів, створеного на початку минулого століття англійським ученим Чарльзом Беббіджом. Однак програмування в сучасному розумінні почалося з моменту створення першої електронної обчислювальної машини. Але незважаючи на це, ім’я цієї видатної жінки—Ada—присвоєно одній з найпотужніших сучасних МП, що є базовою для Міністерства оборони США. Перші ЕОМ, створені людиною, мали невеликий набір команд і вбудованих типів даних, але дозволяли виконувати програми на машинній мові. Машинна мова (ММ)—єдина мова, яку розуміє ЕОМ. Вона реалізується апаратно: кожну команду виконує певний електронний пристрій. Програма на ММ являє собою послідовність команд і даних, заданих у цифровому вигляді. Наприклад, команда вигляду 1А12 або 0001101000010010 означає операцію додавання (1А) вмісту регістрів 1 і 2. Машинною мовою дані представляються числами і символами. Операції є елементарними і з них будується вся програма. Введення програми в цифровому вигляді виконувалося безпосередньо в пам’ять з пульту ЕОМ або з примітивних пристроїв введення. Природно, що процес програмування був дуже трудомістким, розібратися в програмі навіть автору було досить складно, а ефект від застосування ЕОМ був незначним. Цей етап в розвитку МП показав, що програмування є складною проблемою, що важко піддається автоматизації, а саме програмне забезпечення визначає ефективність застосування ЕОМ. Тому на всіх наступних етапах зусилля спрямовувалися на вдосконалення інтерфейсу між програмістом і ЕОМ—мови програмування. Прагнення програмістів оперувати не цифрами, а символами, призвело до створення мнемонічної мови програмування, що називають асемблером, мнемокодом, автокодом. Ця мова має певний синтаксис запису програм, в якому зокрема цифровий код операції замінений мнемонічним кодом. Наприклад, команда додавання записується у вигляді AR 1,2 й означає додавання (Addition) типу регістр-регістр (Register) для регістрів 1 і 2. Тепер програма має зручнішу для читання форму, але її не розуміє ЕОМ. Тому потрібно було ще створити спеціальну програму-транслятор, що перетворює програму з мови асемблера на ММ. Ця проблема вимагала, в свою чергу, глибоких наукових досліджень і розроблення різноманітних теорій, наприклад, теорії формальних мов, що лягли в основу створення трансляторів. Практично будь-який клас ЕОМ має свою мову асемблера. Тепер мова асемблера використовується для створення системних програм, що використовують специфічні апаратні можливості цього класу ЕОМ. Наступний етап характеризується створенням мов високого рівня (МВР). Ці мови є універсальними (дають змогу створювати будь-які прикладні програми) й алгоритмічно повними, мають більш широкий спектр типів даних і операцій, підтримують технології програмування. Цими мовами створюється безліч різноманітних прикладних програм. Принциповими відмінностями МВР від мов низького рівня є:&використання змінних;&можливість запису складних виразів;&можливість розширення набору типів даних за рахунок конструювання нових типів з базових;&можливість розширення набору операцій за рахунок підключення бібліотек підпрограм;&низька залежність від типу ЕОМ. З ускладненням МП модернізуються й транслятори для них. Тепер у набір інструментів програміста, окрім транслятора, входить текстовий редактор для введення тексту програм, налагоджувач для усунення помилок, бібліотекар для створення бібліотек програмних модулів і багато інших службових програм. Усе це разом називається системою програмування. Найбільш яскравими представниками МВР є FORTRAN, PL/1, Pascal, C, Basic, Ada. Може виникнути питання: чому створено стільки різноманітних мов одного класу? Чому не можна створити одну мову, яка відповідала б усім вимогам? Відповідь може бути такою, як і на питання про різноманітні мови народів світу: так вийшло. Кожен з розробників МВР прагнув створити найкращу і найуніверсальнішу мову, що давала б змогу швидко одержувати найефективніші, надійні і безпомилкові програми. Однак в процесі цього пошуку з’ясувалося, що результат залежить не від самої мови, а від технології її використання. Тому подальший розвиток мов став визначатися новими технологіями програмування. Водночас з розвитком універсальних МВР стали розвиватися проблемно-орієнтовні МП, що вирішували економічні задачі (COBOL), задачі реального часу (Modula-2, Ada), символьної обробки (Snobol), моделювання (GPSS, Simula, SmallTalk), чисельно-аналітичні задачі (Аналітик) та ін. Ці спеціалізовані мови давали змогу адекватніше описувати об’єкти і явища реального світу, наближаючи мови програмування до мови фахівця в проблемній галузі. Особливо слід відзначити мову Аналітик, яка була розроблена Київським інститутом кібернетики для вітчизняної ЕОМ “Мир-2”. Крім звичайних засобів МВР, ця мова використовувала загальну математичну символіку, виконувала диференціювання, інтегрування та спрощення виразів. Іншим напрямом розвитку МП є створення мов надвисокого рівня (МНВР). Мовою високого рівня програміст задає процедуру (алгоритм) одержання результату на основі відомих вихідних даних, тому вони називаються процедурними МП. На МНВР програміст задає відношення між об’єктами в програмі, наприклад, систему лінійних рівнянь, і визначає, що потрібно знайти, але не вказує як отримати результат. Такі мови називають також непроцедурними, оскільки сама процедура пошуку розв’язку вбудована в мову (в її інтерпретатор). Вони використовуються, наприклад, для розв’язування задач штучного інтелекту (Lisp, Prolog) і дають змогу моделювати розумову діяльність людини в процесі пошуку розв’язків. До непроцедурних мов можна віднести і мови запитів систем управління базами даних (QBE, SQL). Класифікація МПВиходячи з вищезазначеного, МП можна класифікувати за такими ознаками:1. За ступенем орієнтації на специфічні можливості ЕОМ МП поділяються на:&машинно-залежні;&машинно-незалежні. До машинно-залежних МП відносяться машинні мови, асемблери і автокоди, що використовуються в системному програмуванні. Програма на машинно-залежній МП може виконуватися лише на ЕОМ даного типу. Програма на машинно-незалежній МП після трансляції на машинну мову стає машинно-залежною. Ця ознака МП визначає мобільність одержуваних програм (можливість перенесення на ЕОМ іншого типу). 2. За ступенем деталізації алгоритму одержання результату МП поділяються на:&мови низького рівня;&мови високого рівня;&мови надвисокого рівня. Рівень МП визначається на основі складності елементів мови, з яких будується програма. Найнижчим рівнем є машинна мова, а найвищим, мабуть, рівень природної мови людини, якою формулюється задача типу “Дано:. . . Треба:. . . ”. До мов низького рівня належать машинні мови, асемблери та автокоди. До мов високого рівня належать мови, які мають типи даних (наприклад, масиви) та програмні конструкції (наприклад, цикли), що безпосередньо не реалізуються машинною мовою. Взагалі, одному оператору мови високого рівня відповідає певна програма машинною мовою. Традиційно до мов високого рівня відносять мови класу FORTRAN, PL/1, Pascal, C, Basic, Ada. До мов надвисокого рівня відносять мови, які мають найбільш абстрактні механізми опису задачі та вбудовані засоби її розв’язування. Ці мови дають змогу зосередитися на самій задачі, а не на деталях її розв’язування. До таких мов належать мови класу Lisp, Prolog. 3. За ступенем орієнтації на розв’язування задач певного класу МП поділяються на:&проблемно-орієнтовані;&універсальні. Проблемно-орієнтовані МП містять спеціалізовані засоби опису та розв’язування задач певного класу. Універсальні ж МП не містять таких засобів, дозволяють розв’язувати будь-які задачі, але більшими зусилями. 4. За можливістю доповнення новими типами даних і операціями МП поділяються на такі:&що розширюються;&що не розширюються. МП, що дозволяють розширювати склад типів даних і операцій, фактично містять механізм адаптації мови для розв’язування певних задач. Вони є замкнутими МП. 5. За можливістю управління реальними об’єктами і процесами МП поділяються на:&мови систем реального часу;&мови систем умовного часу. Мови систем реального часу забезпечують створення систем управління реальними об’єктами, в яких час є важливим чинником. Однією з таких мов є мова Ada, що використовується в системах військового призначення США. 6. За засобом одержання результату МП поділяються на:&процедурні;&непроцедурні. Процедурні МП потребують задання певного алгоритму одержання результату, а непроцедурні мають вбудований механізм пошуку розв’язку. 7. За типом задач, що розв’язуються, МП поділяються на:&мови системного програмування;&мови прикладного програмування. Як правило, мови системного програмування є мовами низького рівня і забезпечують найповніше використання апаратних можливостей ЕОМ. Для розв’язування прикладних задач використовуються мови вищих рівнів. 8. Непроцедурні мови за типом вбудованої процедури пошуку розв’язків поділяються на:&реляційні;&функціональні;&логічні. Тип вбудованої процедури пошуку розв’язків визначає парадигму обчислень і структуру програми. Тенденції розвитку МПМови системного програмування, на яких створюються операційні системи, транслятори й інші системні програми, розвиваються в напрямку підвищення їхнього рівня та незалежності від ЕОМ. У наш час майже 90% системного програмного забезпечення створюється не мовою асемблера, а мовою C. Наприклад, операційна система Unix практично повністю написана мовою C. Ця мова дає змогу одержувати програми, які за своєю ефективністю не поступаються програмам, що написані мовою асемблера. Щоправда, збільшується обсяг програм, зате ефективність їх створення значно вища. Машинна незалежність досягається використанням стандарту мови, що підтримується всіма розробниками трансляторів, а також використанням так званих крос-систем для еквівалентного перетворення програм з однієї мови низького рівня на іншу. Іншим напрямом є підвищення рівня самої машинної мови. Наприклад, відомі Lisp-машини, в яких машинною мовою є мова Lisp (реалізована апаратно). Іншим прикладом є ЕОМ 5-ї ґенерації з машинною мовою штучного інтелекту Prolog. МВР розвиваються в напрямку підтримки технологій програмування, забезпечення низькорівневих операцій (рівня асемблера), забезпечення нових інформаційних технологій (НІТ) і незалежності від середовища реалізації. Слід зазначити, що за своїми можливостями МВР поступово зближаються і програмістам стає все складніше визначати переваги тієї чи іншої мови. Останнім часом широкого розповсюдження набула технологія об’єктно-орієнтованого програмування (ООП): практично всі сучасні МВР підтримують ООП. Й усі сучасні програмні системи побудовані на її принципах. Сьогодні кожний студент, що програмує, знає, що таке інкапсуляція (приховання деталей реалізації об’єкта), успадкування (побудова нових об’єктів з існуючих) і поліморфізм (позначення одним ім’ям різних елементів програми, які обираються динамічно). Для позначення факту підтримки ООП до назви мови додають слово Object (наприклад, ObjectPascal) або інші (наприклад, C++). Windows, мережі ЕОМ, сервери, бази даних та Internet, як основа НІТ, найбільше впливають на сучасні МП. Розробники МП тепер зобов’язані включати в мови засоби підтримки НІТ, щоб привернути програмістів на свою сторону. Для підтримки Windows створюються системи візуального програмування з додатковою назвою Visual, наприклад, Visual C++, Visual Basic (принципово відрізняється від простого Basic) й ін. Для роботи з БД, мережами та Internet у МП включаються спеціальні внутрішні або зовнішні засоби. Прагнення до створення програм, що не залежать від типу ЕОМ і операційної системи, призвело до створенню мови Java. Основне завдання мови Java—забезпечити виконання програм, що розповсюджуються через Web-сторінки Internet, на будь-якій робочій станції. Крім того, Java підтримує всі засоби НІТ і незабаром, мабуть, стане найпопулярнішою МП. Популярність мов штучного інтелекту за останні 5 років, на жаль, помітно знизилася. Це пов’язано передусім з психологічними проблемами, яких зазнають програмісти в процесі використання цих мов. Наприклад, в найпотужнішій мові Lisp програма має дуже складну для розуміння спискову структуру і невеликий за обсягом проект дуже швидко виходить з-під контролю. В мові Prolog програміст повинен точно знати логіку роботи вбудованої машини логічного виведення, а робота програми залежить від структури і змісту бази знань (БЗ). Якщо з проектуванням програми і структури БЗ програміст справляється, то для заповнення БЗ йому потрібно бути експертом в предметній галузі або постійно спілкуватися з експертом й використовувати його знання, що є складним завданням. Отже, щоб мови штучного інтелекту набули широкого використання, потрібно створити додаткові програмні засоби підтримки програмістів. Вивчення питань еволюції МП спрямоване на полегшення вибору мови для розв’язання певних задач. Проте слід усвідомлювати, що не потрібно вивчати всі існуючі МП. Достатньо вивчити по одній мові кожного класу в міру потреби, адже в процесі еволюції мови одного класу зближаються. І пам’ятати головне: найкращою є та мова, яку знаєш досконало.



  • Сторінка:
  • 1