Мова програмування: відмінності між версіями

[перевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
мНемає опису редагування
Рядок 1:
{{Otheruses|Мова (значення)}}
'''Мо́ва програмува́ння''' ({{lang-en|Programming language}}) — це [[Формальна мова|штучна мова]], створена для передачі [[Команда (програмування)|команд]] [[машина]]м, зокрема [[комп'ютер]]ам. Мови програмування використовуються для створення [[комп'ютерна програма|програм]], котріякі контролюють поведінку машин, та для запису [[алгоритм]]ів.
 
Більш строге визначення: '''мова програмування'''&nbsp;— це система позначень для опису [[алгоритм]]ів таі [[структура даних|структур даних]]<ref>(Пратт, розділ І)</ref>, певна штучна формальна система, засобами якої можна виражати [[алгоритм]]иалгоритми<ref>(Gabrielli, С. 27)</ref>. Мову [[програмування]] визначає набір [[лексика|лексичних]], [[синтаксис|синтаксичних]] і [[семантика|семантичних]] правил, що задають зовнішній вигляд програми і дії, які виконує виконавець ([[комп'ютер]]) під її управлінням.{{fact}}
 
З часу створення перших програмованих машин було створено понад дві з половиною тисячі мов програмування.<ref>{{cite web|url=http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm|title=Список мов програмування|archiveurl=http://www.webcitation.org/6HZt8VX9t|archivedate=2013-06-23}} {{ref-en}}</ref> Щороку їхдо кількістьних поповнюєтьсядодаються новиминові. Деякими мовами вміє користуватись тільки невелике число їх власнихїхніх розробників, інші стають відомі мільйонам людей. Професійні програмісти зазвичай застосовують у своїй роботі декілька мов програмування.
 
== Означення ==
Рядок 12:
{{main|Історія мов програмування}}
[[Файл:Programming language textbooks.jpg|thumb|250пкс|Підручники мов програмування]]
Власне першіПерші мови програмування з'явилися задовго до появи перших комп'ютерів. Ще в 19-му столітті існували «програмовані» ткацькі верстати та піаніно-програвачі, спосіб програмування яких нагадує так звані [[предметно-орієнтована мова програмування|предметно-орієнтовані мови програмування]]. На початку 20-го століття починають використовуватисьвикористовувати [[перфокарта|перфокарти]], та механічнамеханічну обробкаобробку даних. В 1930 −1940&nbsp;рр. виникає [[лямбда-числення]] та [[машина Тюринга]], які застосовували математичну абстракцію для опису алгоритмів. Лямбда-числення згодом здійснило вплив на проєктування мов програмування.<ref>Benjamin C. Pierce writes:
: «… the lambda calculus has seen widespread use in the specification of programming language features, in language design and implementation, and in the study of type systems.» {{cite book
| last=Pierce
Рядок 24:
}}</ref>
 
В 1940 роках створюються перші електричні, двійкові комп'ютери. Вважається, що першу мову [[програмування]] високого рівня&nbsp;— [[Планкалькюль]] ({{lang-de|Plankalkül}}) розробив німець [[Конрад Цузе]] в період [[1943]]–[[1945]] років, але в той час вона не була реалізована і нею не одержала увагизацікавилися. Реалізацією мови зайнялися і здійснили її лише в 1998—2000 роках<ref>
[[Raúl Rojas|Rojas, Raúl]], et al. (2000). «Plankalkül: The First High-Level Programming Language and its Implementation». Institut für Informatik, Freie Universität Berlin, Technical Report B-3/2000. [http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Plankalkuel-Report/Plankalkuel-Report.htm (full text)]</ref>.
 
Наприкінці 40-их&nbsp;— початку 50-их застосовувалисязастосовували [[інтерпретатор|інтерпретовані]] системи кодування, коли певні команди мови програмування кодувалисякодували числами, які вже інтерпретувалися [[Машинний код|машинним кодом]]. Ці системи називалися «автоматичним програмуванням» і були простішими для програмування, ніж машинні коди, але могли мати значно меншу (до 50 разів) швидкодію, через що перевагу часто надавали перевагу машинним [[код]]ам. До таких систем належали&nbsp;— [[Short Code (мова програмування)|Short Code]] для [[BINAC]] ([[1949]]) і [[UNIVAC I]] ([[1952]]), {{нп|Speedcoding|Speedcoding|en|Speedcoding}} для [[IBM 701]], розроблена [[Джон Бекус|Джоном Бекусом]] у [[1954]].
 
{{Вичитати|дата=березень 2021}}
 
Першою багатоконцептуальною (императивною та декларативною) мовою програмування високого рівня була [[Адресне програмування|Адресна мова програмування]] (реалізована у1955 1955р.року на [[ЕОМ «Київ»]]). Мова має опосередковану адресацію вищих рангів ([[Вказівник|вказівники]] - являють собоює аналоганалогом). В [[ЕОМ «Київ»]]) апаратно була реалізована "штрих-пераціяоперація", аналогом якої є розіменування вказівників. Операція багатократного розіменуванярозіменування вказівників (Multiple indirection) була реалізаванареалізована груповими операціями модернізації адрес задля прискорення обробки деревообразнихдеревоподібних форматів ([[Абстрактний тип даних|Абстрактні типи даних]] - являють собоює частковийчастковим випадоквипадком, оскільки деревообразнідеревоподібні формати припучскаютьприпускають наявність у вузлах "дерева" процедур обробки даних, як у [[Об'єктно-орієнтоване програмування|ООП]]). Адресна мова програмування має вичерпні засоби декларативного програмування. До найпотужнішого декларативного засобу відноситьсяналежить "мінус штрих-операція", яка є оберненооберненою до розіменування вказівника. Використання "мінус штрих-операції" нагадує використання первинних таі зовнішніх ключів в реляційних базах даних: по заданому первинному ключу визначити місцезнаходженнямісцерозташування (адреси) в іншій таблиці, зовнішні ключі, яких збігаються з заданим первинним ключем.{{Джерело|дата=березень 2021}}
 
Першою широковживаною [[компілятор|компільованою]] мовою став розроблений групою ''Джона Бекуса'' [[Фортран]], анонсований 1954 року йта випущений [[1957]] року для [[IBM 704]]. Основним призначенням Фортрану були швидкі наукові обчислення, оголошувалося, що швидкодія згенерованого [[компілятор]]ом коду майже не відрізнятиметься від написаного вручну машинного коду. Уже у квітні [[1958]] близько половини програм для [[IBM 704]] були написані на Фортрані. Випущений у 1958 роціроку Фортран II дозволяв незалежну компіляцію [[Підпрограма|підпрограм]], що дозволилодавало змогу створювати більші програми, оскільки низькачерез низьку надійність [[IBM]] 704 не дозволяламожна було скомпілювати без збоїв велику програму (понад 300—400 рядків) одразу. Розроблений у [[1960]]–[[1962]] роках Фортран IV був однією з найпоширеніших мов того часу і лишався стандартною версією Фортрану до появи [[1978]] року [[Фортран 77|Фортрану 77]].
 
1958 року в [[MIT]] розробили [[LISP]]&nbsp;— першу [[функційна мова програмування|функційну мову]], яка понад чверть століття домінувала у програмуванні задач [[штучний інтелект|штучного інтелекту]].
 
Наприкінці 1950-их почали розроблятисярозробляти різні мови програмування. 1958 року декілька значних груп комп'ютерних користувачів у [[Сполучені Штати Америки|США]], включаючи SHARE&nbsp;— групу науковців-[[користувач]]ів IBM і [[USE]] ([[UNIVAC Scientific Exchange]], група науковців-користувачів [[UNIVAC]]) запропонували [[ACM]] заснувати робочу групу зі створення [[універсальна мова програмування|універсальної мови програмування]]. Також ще 1955 року німецьке Товариство прикладної математики і механіки ([[GAMM]]) заснувало комітет зі створення універсальної мови програмування. В кінці травня 1958 року було проведено зустріч у Цюриху між ACM і GAMM, на матеріалах якої у грудні опубліковано «[[ALGOL]] 58 Report». На його основі було створено 3 значні реалізації&nbsp;— MAD ([[1961]]), NELIAC ([[1963]]), [[JOVIAL]] ([[1963]]). З них лише JOVIAL отримав поширення, ставши на чверть століття офіційною мовою програмування у [[Військово-морські сили США|Військово-морських силах США]]. SHARE і IBM почали створення власної реалізації ALGOL, але припинили, врахувавши витрати на створення і просування Фортрану.
 
Впродовж [[1959]] року ALGOL 58 широко обговорювався, була запропонована нотація для опису синтаксису мов програмування&nbsp;— [[форма Бекуса — Наура]]. 1960 року проведено чергову зустріч і опубліковано ALGOL 60 Report. ALGOL вплинув на багато мов програмування і став стандартною мовою для публікації алгоритмів, але через ряд причин не одержав широкого поширеннярозповсюдження&nbsp;— він був заскладним, і не було реалізацій, які підтримували його повністю, відсутність стандартного введення-виведення привелазумовила до появипояву різних несумісних реалізацій, деякі неоднозначності опису мови так і не були розв'язані. ТакожОкрім того, широкого вжитку уже набув Фортран, і IBM не підтримала ALGOL.
 
1959 року було проведено зустріч у [[Пентагон]]і для створення мови CBL (Common Business Language), засновано комітет з йогоїї створення, і 1960 року опубліковано початкову специфікацію [[COBOL]] 60, який невдовзі став першою мовою, прийнятою у [[Міністерство оборони США|Міністерстві оборони США]]. [[1968]] року COBOL було стандартизовано [[ANSI]].
 
[[1964]] року було створено спрощену мову [[BASIC]] ''(Beginners All-purpose Symbolic Instruction Code'') для навчання програмуванню студентів, які переважно спеціалізувалися у [[Вільні мистецтва|вільних мистецтвах]], а не технічних науках.
 
Тоді як науковці переважно використовували Фортран, а бізнес&nbsp;— ''COBOL'', 1963 року в IBM вирішили створити універсальну платформу [[IBM/360]] і мову програмування. У стислі терміни до 1965 року було розроблено мову [[PL/I]], яка поєднувала можливості ФортранФортрану, ALGOL і ''COBOL'', і виявилась заскладною, хоча і була у широкому вжитку ув 1970-их у наукових і бізнес -задачах, також її підмножини ([[PL/C]], [[PL/CS]]) використовувалися для навчання програмуванню.
 
На початку 1960-их було створено перші мови із динамічною типізацією&nbsp;— [[APL]] і [[SNOBOL]].
Рядок 64:
1976 року випущено мову для статистичного програмування [[S (мова програмування)|S]], на базі якої 1993 року створено [[R (мова програмування)|R]].
 
1977 року випущено [[Bourne shell|''Bourne shell'']] і [[awk|''awk'']].
 
1975 року [[Міністерство оборони США]] утворило міжнародну групу для створення нової мови програмування для власних потреб, конкурс 1979 року виграла мова [[Ада (мова програмування)|Ада]].
Рядок 70:
1981 року випущено [[dBASE]] II.
 
1984 року з метою об'єднання різних діалектів Ліспу створено [[Common Lisp|''Common Lisp'']]. Випущено ''[[MATLAB]]''
 
1985 року [[Б'ярн Страуструп]] опублікував реалізацію мови [[C++]].
Рядок 100:
2010 року створено [[Kotlin|Kotlin]].
 
2010 року була офіційно представлена мова програмування [[Rust (мова програмування)|Rust]] на Mozilla Summit 2010.<ref name="future-tense">{{cite web|url=http://www.slideshare.net/BrendanEich/future-tense-7782010|title=Future Tense|date=2011-04-29|accessdate=2012-04-17|quote=At Mozilla Summit 2010, we launched Rust, a new programming language motivated by safety and concurrency for parallel hardware, the “manycore” future which is upon us.|archiveurl=https://www.webcitation.org/6AlZGgr8a?url=http://www.slideshare.net/BrendanEich/future-tense-7782010|archivedate=2012-09-18|deadurl=no}}</ref>. Робота над мовою була розпочата [[Грейден Гоаром|ГрейдономГрейдон ГоаромГоар]] розпочав ще в 2006 роціроку.
 
2012 року створено [[Elm (мова програмування)|Elm]].
Рядок 113:
 
=== Синтаксис ===
[[Синтаксис (програмування)|Синтаксис мови програмування]] визначає те, як буде виглядати програма нацією цій мовімовою, зокрема, як пишуться [[Оператор (програмування)|оператори]], оголошення ій інші мовні конструкції<ref>Пратт Т., Зелкович М.- C. 42</ref>. Наприклад, оголошення [[Масив (структура даних)|масиву]] V з десяти елементів у форматі цілих чисел у мові [[С]] буде виглядати так:
<syntaxhighlight lang="java"> int V[10]; </syntaxhighlight>
На мові [[Pascal]]: