Покоління мов програмування

Покоління мов програмування — історична класифікація мов програмування по аналогії до поколінь комп'ютерів. Зараз можна знайти згадку про п'ять поколінь мов програмування[1][2][3][4], щоправда даний поділ є спірним і суперечним. В професійній літературі по програмуванню доволі рідко згадують про покоління мов програмування, а більше зосереджуються на функціональній класифікації мов програмування. Крім того різні автори по різному відносять ту чи іншу мову програмування до того чи іншого покоління[5][6]. В зустрічаємих класифікаціях часто не враховуються останні сучасні тенденції розвитку сучасних мов програмування (як то Java, C++, C#, розвиток мови Ada у Ada 2012 і т.п.), які значно покращують можливості мов. З'являються нові елементи в мовах програмування, змінюється дещо синтаксис, з'являються комплексні програмні інфраструктури(фреймворки).

Класифікація 1[ред. | ред. код]

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

Перше покоління[ред. | ред. код]

Початок 1950-х років — мови перших комп'ютерів. Використовувалася машинна мова. Код подавався напряму у комп'ютер за принципом «одна інструкція — один рядок» Основна відмінна риса: орієнтування на конкретний тип комп'ютера (мікропроцесорної системи). Не існувало ні середовищ розробки, ні компіляторів.

Друге покоління[ред. | ред. код]

Кінець 1950-х — початок 1960-х р.р. Розроблено символьний асемблер, в якому з'явилося поняття змінної. Це перша повноцінна мова програмування.

Основна відмінна риса: орієнтування на абстрактний комп'ютер з такою ж системою команд.

Третє покоління[ред. | ред. код]

1960-ті — мови програмування високого рівня. Їхні характеристики:

  • відносна простота;
  • незалежність від конкретного комп'ютера;
  • можливість використання потужних синтаксичних конструкцій.

Простота мов дає змогу писати невеликі програми і людям, які не є професійними програмістами.

Основна відмінна риса мови третього покоління: орієнтування на алгоритм (алгоритмічні мови).

Приклади: Fortran, COBOL, ALGOL.

Всього у світі існує близько 200 популярних мов програмування третього рівня.

Четверте покоління[ред. | ред. код]

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

Деякі автори виділяють різні напрямки розвитку мов програмування четвертого покоління[7]. Одним напрямком розвитком четвертого покоління є об'єктно орієнтовані мови високого рівня: Java, C#. Хоча часто дані мови відносять до третього покоління.

За іншими напрямками виділяють SQL, SGML (HTML, XML), Prolog, та багато інших вузькоспеціалізованих декларативних мов. Щоправда ряд мов, які відносять до четвертого покоління, не є мовами програмування як такими. Наприклад SQL є мовою запитів до баз даних, HTML є мовою розмітки гіпертексту, і не є повноцінними мовами програмування, скоріше вони виступають своєрідними спеціалізованими доповненнями до мов програмування. Теж саме стосується XML.

Основна відмінна риса мови четвертого покоління: наближення до людської мови (декларативні мови).

Деякі мови мають риси одночасно і третього і четвертого поколінь.

П'яте покоління[ред. | ред. код]

П'ятого покоління мов програмування поки що не існує[джерело?].

Виробники пропрієтарних програмних продуктів часто намагаються приписати своїм продуктам якісь маркетингові особливості, і деколи вказують що їхній продукт — це «мова п'ятого покоління». Насправді, всі ці продукти — це просто середовища для прискореного створення продуктів (Rapid Application Development — RAD), і використовують мови третього та четвертого поколінь.

Мова п'ятого покоління витіснить чи суттєво потіснить мови третього (напр. Java) і четвертого покоління (напр. SQL) за рахунок значно збільшеної продуктивності праці програміста — в 10-1000 разів[джерело?]. За прогнозами, 5GL буде оперувати мета-мета-даними.

Наразі існує[джерело?] єдина[джерело?] мова, яка працює з мета-мета-даними, — це мова команд менеджерів пакетів чи менеджерів залежностей, таких як apt, yum, smart, maven, cpan та інші. Вони оперують над метаданими про метадані про дані у пакетах[джерело?]. Використання apt-get, yum та smart дійсно надзвичайно підвищило продуктивність системних адміністраторів — приблизно в 1000-у разів[джерело?]. Використання менеджерів залежностей, таких як maven, cpan, rakudo, pim, easy_install, дійсно значно підвищило[джерело?] продуктивність програмістів, приблизно в 10 разів[джерело?]. Проте, ці мови є мовами командного рядка[джерело?] і не є мовами програмування.

Примітки[ред. | ред. код]

  1. Відеопрезентація на тему «Історія мов програмування»(англ.)
  2. Сергей Бобровский. Пятое поколение — языки программирования или прикладные системы?//PC Week Live. Архів оригіналу за 10 серпня 2011. Процитовано 3 листопада 2015.
  3. Язык программирования. Архів оригіналу за 25 лютого 2011. Процитовано 3 листопада 2015.
  4. Соколов В. В. Эволюция языков программирования. Архів оригіналу за 3 березня 2011. Процитовано 3 листопада 2015.
  5. http://www.csc.villanova.edu/~dmatusze/resources/general/generations.ppt [Архівовано 1 вересня 2006 у Wayback Machine.] Generations of Programming Languages
  6. Generations of Programming Languages. Архів оригіналу за 4 березня 2016. Процитовано 3 листопада 2015.
  7. Голицына О. Л., Попов И. И. Основы алгоритмизации и программирования. Форум, 2008. — 431 стр. ISBN 978-5-91134-214-2.