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

01.09.2015

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

Не секрет що мови програмування зобов’язані своєю появою необхідністю примусити ЕОМ ефективно працювати, тому цілком логічно розпочати нашу розмову з короткого екскурсу в історію розвитку високорівневих мов програмування.

  1. Асемблерні мови — є символьним поданням машинних мов конкретного комп’ютера.
  2. Метаязыки — мови, що використовуються для формального опису інших мов.
  3. Імперативні мови — це мови, що оперують командами, що змінюють значення елементів даних, розташовують операціями присвоювання і циклами. До них відносяться всі сучасні мови програмування.
  4. Декларативні мови — мови, що оперують даними інструкціями і відносинами між ними. Алгоритм ховається семантикою мови. Це аппликативные мови, мови логіки і об’єктно-орієнтовані мови. Приклади декларативних властивостей — складні множини та інструкції пошуку за шаблоном.
  5. Процедурні мови — дозволяють визначати окремі методи обчислення якої-небудь проблеми. Включають в себе імперативні і функціональні мови.
  6. Аппликативные мови — функції застосовуються до значень без побічного ефекту. Це Функціональні мови у всьому своєму різноманітті.
  7. Функціональні мови — оперують функціями вищого порядку. У них маніпуляції відбуваються безпосередньо функціями, а не даними. До категорії функціональних мов відносяться Lisp, FP, APL, Nial, Krc.
  8. Об’єктно-орієнтовані мови — мови, в яких дані і функції, що мають доступ до них розглядаються як один модуль. Приклад: Object Pascal, С++, Java, Objective Caml.
  9. Мови запитів — забезпечують інтерфейс до баз даних.
  10. Мови четвертого покоління (4GL) — високорівневі мови, можуть використовувати природний англійську мову або візуальні конструкції. Алгоритми та структури даних зазвичай вибираються компілятором.
  11. Мови логіки — мови, що оперують предикатами та їх відносинами p(x, Y). Програми складаються з набору висновків Хорна, які можуть бути:
  12. фактами — p(X,Y) є істина;
  13. правилами — p істинно, якщо q1, q2 і qn істинні;
  14. запитами — чи вірні q1, g2 і gn? Де gi — мета.

Відомі мови логічного програмування: Prolog, KLO, Mandala і Mercury.

На практиці мови програмування не є чисто процедурними, функціональними, логічними, або об’єктно-орієнтованими. Вони містять у собі риси різних мов. Тому часто на процедурному мові можна написати функціональну або об’єктно-орієнтовану програму. З-за цього типу замість мови точніше говорити про стилі (або метод) програмування. Звичайно не всі мови підтримують вищеперелічені стилі в рівній мірі. Miranda і Haskell, наприклад, створені в 1985-87 рр. визначаються саме як чисто функціональні (purely functional).

Першим загальновизнаним мовою високого рівня можна по праву назвати Fortran, версія якого з’явилася в листопаді 1954 року. Пізніше в жовтні 1956 року з’явилася версія Fortran I, а через рік Fortran II, ще через рік вийшов Fortran III, але здавався монополізм цієї мови був порушений з появою більш продуманих мов, таких як Cobol (1957), Lisp (1958), Algol’58 (1958), APL (1960).На етапі розвитку мов виникла необхідність впровадження в сучасні мови нових ідей. Результатом такого пошуку стала наростаюча хвиля появи мов, які купують кращі якості інших мов. У 1964-му році з’явився PL/I(«схрещена» версія Cobol, Fortran IV і Algol’60), Basic, Simula I (на основі того-ж Algol’60).

При розробці операційної системи UNIX використовувався мова BCPL (1967), і мови які були створені на його основі: B (1968) і його перероблена версія — C (1971).

Якщо говорити про інші мови вплинули на історію розвитку програмування, то в 1969-му з’явився мова Forth і SmallTalk (в останньому помітно впливом Lisp). Потім, вже через рік, розроблений мову логіки Prolog і процедурний мова Pascal.

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

Структурне програмування передбачає точно позначені керуючі структури, програмні блоки, відсутність операторів GOTO, автономні підпрограми, в яких підтримується рекурсія і локальні змінні. У структурному програмуванні з’явилася можливість розбиття програми на складові елементи.

У програмістів стояли кожен раз нові завдання, для розв’язання кожної задачі вивчати нову мову програмування було просто нерозумно. Більшу перевагу віддавалася універсальних мов програмування, здатним надавати ефективний інструментарій для вирішення різноманітних завдань. Не дивно що всі сучасні реалізації широко поширених мов володіють схожими характеристиками: починаючи від швидкості написання програм і кінчаючи продуктивністю отриманого коду.

У написанні ефективних багатоцільових мов пробують використовувати різні техології програмування. З ростом продуктивності ЕОМ від платформно-орієнтованих послідовних процедурних мов з одним входом і одним виходом у 1975-му прийшли до створення Modula(розвиток Pascal) і Scheme(малий побратим мови Lisp).

У 1978-му з’явився стандарт C від Кернигана і Рітчі, з’являється і AWK, що успадкував дещо від С. Під впливом популярності Pascal в 1979-му з’явилися мови Modula 2 та ADA.

У 1983-му з’являється ML-прабатько таких мов як O’Caml і Standard ML, відомий З++ замислюється саме в цьому році, удосконалюються інші мови (ADA’83, Prolog II).

У 1987-му прийнятий в якості стандарту ADA ISO, творець мови Pascal зі своїм колегою незадоволені малим увагою до європейських мов програмування і випускають на ринок Oberon — операційну систему нового покоління (тут мова є частиною компонентної ОС). У тому ж році з’являються об’єктно-орієнтована мова OO Forth, стабільна версія Perl 1.0(гібрид sh і awk), з’явився Caml.

У 1988-му вже існував Modula 3 і Perl 2.0. У 1989-му: Tcl. ANSI C (C89), Perl 3.0, bash. В 1990-м: Scheme IEEE, ISO C (C90), SML’90. У 1991-му: Fortran’90 ISO, Python. Java, Perl 4.0, NetRexx, Tcl/Tk. У 1992-му розроблений мова принтерів — PostScript level 2, з’явився фактичний стандарт мови Oberon-2. У 1994-му: Perl 5.0, Common Lisp ANSI. У 1995-му: ADA’95, Delphi, Java 1. У 1996-му: PostScript level 3, APL’96, ISO C (C95), Objective Caml. 1997-ой — досить багатий на мови рік: Object Rexx, Prolog IV, OO Cobol, Modula 2 ISO, SML’97. Також компанія Oberon Мicrosystems внесла в Oberon-2 невеликі доповнення і розробивши комерційний компілятор промислового рівня випустила її у світ під назвою Component Pascal.

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

В 1998-му році затверджено стандарт на C++ ANSI/ISO, Java 2 (v1.2), O’Caml 2. Втім кругла дата і функціонального мови Haskell’98 .

У 1999-му нічого істотного не з’явилося. Як зазвичай заточувалися такі мови як TCL/TK 8.1, Python 1.5.2, Delphi 5, ISO C (C99), NetRexx 1.150.

А ось в 2000-му році з’явився до того моменту Java 2(v1.3) з’явився конкурент — C#. З’явилася по-моєму найстабільніша з існуючих версія Perl 5.6. Заточується отримав широке поширення в Європі функціональний, об’єктно-орієнтована мова O’Caml 3.

У 1990-х роках модно скрізь де це можливо додавати візуальні засоби розробки. До таких систем можна віднести такі системи проектування AutoCAD, системи лабораторних изследований LabView, MATLAB, математичний пакет Maple. Всі вони є лідерами у своїй галузі (хоча і не монополії; ? ).

В середовищі системних програмістів візуальний інтерфейс отримав свій сучасний вигляд в основному завдяки протистоянню в 1990-их з Microsoft фірм Borland і Watcom, яке вилилося в появу сімейств мов Microsoft Visual Studio, який став найпотужнішим інструментом у руках Microsoft для пропаганди міграції на платформу Windows, і розрізненого безлічі систем від Borland(що лише посилювало бражение в умах користувачів), — таких середовищ як Delphi, Kylix, СBuilder і JBuilder. Крім того флагманським продуктом Borland проголошується все-таки система, заснована на досить старому мовою Object Pascal — Delphi(крім Borland, Object Pascal ніхто так широко не використовують).

Коротше Microsoft домоглася свого. Залишилася перешкода у вигляді Java 2, проти якого починає «хрестовий похід» мова нового покоління — C#.

Хоча серед всіляких мильних бульбашок загубився досить гідна об’єктна модель пакета IBM VisualAge.

Майбутнє належить кросплатформним інструментів розробки, і до них можна віднести wxWindows, Qt і кілька інших пакетів.

У порівнянні з бібліотеками тих же Borland, Microsoft або Sun у wxWindows історія багатший(перша версія з’явилася ще 1993-го). На відміну від інших бібліотек подібного типу в поставку wxWindows входять не даремні приклади одноразового застосування, а досить рідкісні(на мій погляд) програми. Наприклад є конвертер документів з формату TeX RTF.

Зрозуміло вдосконалення систем програмування сьогодні і в Росії не зупиняється. Мою увагу привернули матеріали конференції «Індустрія програмування’96». В одному з доповідей конференції говорилося про реалізованої при розробці МКС «Буран» системи програмування СИПРОЛ, позволявщей отримувати виконавчий код у формі З-програм, що в свою чергу дозволяло переносити розроблені системи управління практично на всі сучасні ЕОМ. Відмітна особливість системи — графічний редактор і відладчик, які були інтегровані в єдину «турбо-систему». Розроблення систем управління можна вести як засобами графічного, так і звичайного (текстового) програмування. Серйозну увагу приділено «рівнем зрілості» (maturity level) процесу розробки, тобто питань підвищення якості створюваного ЗА і процесу його розробки.

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

В Інституті прикладної математики ім. М. В. Келдиша РАН в ході досліджень і розробки засобів підтримки розробникам для великих управляючих систем реального часу розроблений підхід ієрархічного конфігураційного управління(ІКУ), який дозволив вирішити наступні завдання:

Короткий опис статті: мова програмування с++

Джерело: Мови програмування

Також ви можете прочитати