Найстаріша мова програмування. Еволюція мов програмування

💖 Подобається?Поділися з друзями посиланням

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

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

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

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

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

Що таке мови програмування?

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

Мови програмування у кількості майже трьох тисяч були вигадані під час створення перших програмованих апаратів. Їхнє число з кожним роком збільшується, і список поповнюється новими. Є деяка частина мов, якими вміють користуватися лише мала кількість творців, які займалися їхньою розробкою, інші стають відомими великою кількістю користувачів. У своїй роботі фахівці-програмісти використовують більше десяти різних мов програмування.

Для чого потрібні мови програмування?

Процес роботи ПК – це виконання програми. Якщо висловитися більше простою мовою, тобто пакет команд, які йдуть у певному порядку. Вигляд команди машинного типу, що складається з нулів та одиниць, вказує, які повинен виконувати дії центрального процесора. З цього випливає: щоб задати ПК послідовність дій, що виконуються, задається послідовність кодів двійкового типу відповідних команд. У машинних кодах софти складаються з багатьох команд. Написання такого софту є справою трудомісткою, важкою та стомлюючою. Програміст зобов'язаний знати комбінацію одиниць та нулів коду двійкового типу кожної програми, крім цього він повинен пам'ятати коди двійкового типу адрес даних, які використовуються при її виконанні. Набагато простіше писати софт на мові, яка ближча до людської природної мови, і доручити ПК переведення цієї програми в коди машинного типу. Саме так і з'явилися мови програмування, які призначаються спеціально для написання софту.

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

Мови програмування поділяються на 2 групи

Є мови, які мають низький рівень та мови, які мають високий рівень.

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

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

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

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

От ми й підійшли, можна сказати до головного. Нині ми розповімо, які бувають мови програмування.

Які бувають мови програмування

Фортран

Ще в середині п'ятдесятих років вчені почали створювати мови програмування. І перша мова такого типу була названа Фортран, і розробили її в 1957 році. Він використовується для опису алгоритму розв'язання задач науково-технічного типу за допомогою ЦВМ. Крім цього, як і перші обчислювальні агрегати, мова даного типувикористовувався для того, щоб проводити природничі та математичні розрахунки. Ця мова в удосконаленому типі збереглася і до нашого часу, і є вона серед сучасних мов, які мають високий рівень, що найбільш використовується при проведенні досліджень наукового характеру. Найпоширеніші варіанти на сьогоднішній день: Фортран-I2, Фортран-I4, EASIC Fortran та їх узагальнення.

Алгол

Продовжуємо нашу тему мови програмування. Як ви вже зрозуміли, зараз йтиметься про таку мову програмування, як Алгол, яка з'явилася у 1958-1960 роках. У 1964-1968 він був удосконалений, так з'явився Алгол – 68. Мова такого типу розробила комітет, до якого входили вчені Америки та Європи, та віднесли його до мов, які мають високий рівень. За допомогою мови такого типу можна було легко переводити в програмні команди алгебраїчні формули. Алгол був популярним у країнах Європи, а й у Росії. На всі створені згодом мови програмування, цей вид мови справив помітний вплив, і зокрема, це торкнулося мови Паскаль. Цей видмови, в принципі, так само, як і мова Фортран, створили для вирішення завдань науково-технічного вигляду. Крім цього, мову застосовували у вигляді засобу навчання основ програмування, тобто мистецтву складання софту.

Кобол

Мова програмування Кобол створили в 1959-1960 роках, і належить ця мова до третього покоління. Насамперед, він призначається для розробки додатків для бізнесу та для вирішення завдань економічного типу, для обробки банківських даних, для компаній зі страхування та інших установ. «Винахідник» Кобола – Грейс Хоппер. Зазвичай, за громіздкість і багатослівність, КОБОЛ критикується, оскільки одна з цілей творців цієї мови була максимальне наближення до англійській мові. У той же час, мова програмування мала для свого часу відмінні засоби для здійснення діяльності зі структурами даних та файлами і це, до речі, і забезпечило їй у додатках для бізнесу довге життя. Принаймні, у США – точно.

Лісп

Наступна у нас на черзі, мова програмування Лісп. Мова програмування Лісп була розроблена майже одночасно з мовою програмування Кобол. Заснована ця мова на представленні програми системних лінійних списків символів, які є основною структурою даних мови. Це друга мова програмування після Фортрана за віком. Він використовується в широкому обсязі для обробки інформації у вигляді символів і використовується для того, щоб створювати програмне забезпечення, яке імітує діяльність мозку людини.

Програма, створена Липе, складається з послідовностей виразів, тобто форм. Результатом роботи програми є обчислення цих виразів, що записуються у вигляді списку – однією з основних структур даного виду мови. Головне значення програми Лісп «життя» у символьному просторі.

Бейсік

Мова програмування бейсік розробили програмісти Дартмутського коледжу США у середині шістдесятих років. Мова заснували частково на Фортрані 2 і частково на Алгол - 60, також були внесені додавання, які зробили його для роботи в режимі поділу часу більш зручним, а через кілька років він став і зручним для текстових обробок та матричної арифметики. Цей вид мови програмування спочатку реалізували на мейнфреймі GE-265, який підтримує велику кількість терміналів. У момент своєї появи, всупереч поширеному переконанню, він був компілюваною мовою.

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

Форт

Мова програмування Форт виникла наприкінці шістдесятих років на початку сімдесятих. Даний вид мови застосовували в завданнях управління різними системами після того, як його творець Мур Чарльз написав на ньому софт, який призначався для управління радіотелескопами обсерваторії Арізони.

Багато властивостей, таких як гнучкість, інтерактивність і простота «винаходу», зробили Форт ефективним і привабливим мовою в дослідженнях прикладного роду і при створенні засобів інструментального типу. Очевидні сфери застосування цього виду мови програмування - це вбудовувані системи управління. Крім всього сказаного, він також знайшов застосування при програмуванні ПК під управлінням різного роду операційних систем.

Паскаль

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

З усіх його особливостей можна назвати головні – це найсуворіша типізація та наявність засобів програмування структурного типу. Паскаль став однією з перших подібних мов. Мова програмування Паскаль вчить правильності написання програми та правильності розробки методів вирішення завдань, а також він допомагає навчитися тому, як правильно підібрати варіанти подання та організації даних, які використовуються в задачі. Мова Паскаль з 1983 року була введена до навчальних курсів інформатики середніх освітніх шкілСША.

Продовжуючи тему мови програмування, ми вирішили розповісти про ще один вид мови - це мова Ада. Мова програмування Ада була створена на основі Паскаля в кінці сімдесятих років і назвали його на честь Ади Лавлейс, обдарована жінка математика. Саме ця талановита жінка в 1843 пояснила всьому світу можливості Аналітичного агрегату Чарльза Беббіджа. Цей вид мови розробили на замовлення, яке зробило Міністерство оборони США, і спочатку він використовувався для вирішення завдань управління космічними польотами.

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

Мова програмування Сі на сьогоднішній день є серед програмістів найпопулярнішим і найпопулярнішим. Своє початок цей вид мови програмування бере від двох мов, зокрема, BCPL і B. Мартін Річардс в 1967 році створив BCPL як мову, яка призначалася для написання системного програмного забезпечення та компіляторів. Що це таке, ми розкажемо нижче. Кен Томпсон в 1970 році для створення більш ранніх версійОС UNIX використовував ПК DEC PDP-7. І в першій і в другій мові типи не поділялися змінні - у кожного значення даних було в пам'яті одне слово.

Вперше реалізували мову програмування СІ 1972 року на ПК DEC PDP-11. Але свою популярність і популярність він зумів отримати як операційну систему UNIX. Усі основні ОС сьогодні написані на Сі чи СІ++. Мова програмування Сі після кількох десятиліть є у великій кількості ПК. І до речі, варто відзначити, він повністю не залежить від апаратної частини.

У традиційну мову програмування - мова Сі перетворилася наприкінці сімдесятих років. Даний вид мови оснащений багатими засобами, які дають можливість писати гнучкий софт, який використовується у всіляких сучасних ПК.

Пролог

Ну ось, ми й добігли кінця. Нашу тему мови програмування ми закінчимо розповіддю про останню мову у цій сфері – і називається він Пролог. Цей вид мови вважається мовою програмування майбутнього і створили його на початку сімдесятих років. У розробці брали участь спеціалісти Марсельського університету. Назвали його від слів «Програмування мовою ЛОГіки». Мова програмування було створено з урахуванням законів математичної логіки. Даний вид мови, на відміну від мов програмування, які були описані вище, не є алгоритмічним і відноситься до так званих дескриптивних, тобто мов описового роду.

А зараз піде розмова про те, що є компілятором і інтерпретатором?

Компілятор та інтерпретатор

Розробити мову, яка була б зручною для написання програми – недостатньо. Кожна мова повинна мати перекладача, який є спеціальною програмою - транслятором.

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

Є ще один спосіб, який може поєднувати в собі процеси трансляції та виконання програм, і зветься він інтерпретація. Суть процесу полягає в наступному: спочатку перекладається в коди машинного типу, потім виконується перший рядок софту. Коли виконання першого рядка закінчено, починається переклад другого рядка тощо.

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

Ну ось, здається і все на сьогодні, зараз ви знаєте які бувають мови програмування, і що вони являють собою.

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

До написання цієї статті мене спонукала дискусія, що розгорілася на одному з форумів dotSITE після появи повідомлення, що різко критикує C# - одну з основних складових нової платформи.NET від Microsoft. Повідомлення містило в собі вже банальну критику Microsoft взагалі і зокрема (я тут не стверджую, що критикувати Microsoft нема за що, просто ця критика вже порядно набила оскому), а також деякі висловлювання конкретно про C#. У ході дискусії, що розгорнулася, було висловлено кілька цікавих зауважень, деякі ж питання залишилися незайманими. Все це і спонукало мене написати статтю, в якій робиться спроба «примирити» певною мірою носіїв думок про винятковість тієї чи іншої мови програмування. Я намагатимусь дати певний історичний нарис розвитку різних мов і пояснити на прикладах деякі загальні тенденції. Можливо, мені вдасться переконати когось у марності проведення дискусій, аналогічних до вищезазначеної. Я не претендую ні на об'єктивність (хоча намагатимусь бути таким), ні на повноту викладу. Це лише спроба «встати навшпиньки і озирнутися»…

1. Перші універсальні мови

Тож почнемо. Звернемося до витоків розвитку обчислювальної техніки. Згадаймо найперші комп'ютери та програми для них. Це була ера програмування безпосередньо в машинних кодах, а основним носієм інформації були перфокарти та перфострічки. Програмісти мали знати архітектуру машини досконально. Програми були досить простими, що зумовлювалося, по-перше, дуже обмеженими можливостями цих машин, і, по-друге, великою складністю розробки та, головне, налагодження програм безпосередньо машинною мовою. Натомість такий спосіб розробки давав програмісту просто неймовірну владу над системою. Ставало можливим використання таких хитромудрих алгоритмів та способів організації програм, які й не снилися сучасним розробникам. Наприклад, могла застосовуватися (і застосовувалася!) така можливість, як код, що самомодифікується. Знання двійкового представлення команд дозволяло іноді не зберігати деякі дані окремо, а вбудовувати в код як команди. І це далеко не повний списокприйомів, володіння хоча б одним із яких зараз відразу ж просуває вас до рівня «гуру» екстра-класу.

2. Асемблер

Першим значним кроком є ​​перехід до мови асемблера (дозволимо собі маленький ліричний відступ: англійська назва assembly language, або assembler, російською перекладають саме тим терміном, який був використаний вище. При цьому у новачка складається враження, що мова названа на честь якоїсь людини за імені асемблер. Досить кумедна ситуація, чи не так?). Не дуже помітний, начебто, крок - перехід до символічного кодування машинних команд - мав насправді велике значення. Програмістові не треба було більше вникати в хитромудрі способи кодування команд на апаратному рівні. Більше того, найчастіше однакові по суті команди кодувалися абсолютно по-різному залежно від своїх параметрів (широко відомий приклад зі світу сучасних комп'ютерів - це кодування інструкції mov в процесорах Intel: Існує кілька абсолютно по-різному кодованих варіантів команди; вибір того чи іншого варіанту залежить від операндів, хоча суть операції незмінна: помістити вміст (або значення) другого операнда в перший). З'явилася також можливість використання макросів та міток, що також спрощувало створення, модифікацію та налагодження програм. З'явилося навіть таке собі подібність переносимості - існувала можливість розробки цілого сімейства машин зі схожою системою команд і якогось спільного асемблера їм, у своїй був потреби забезпечувати двійкову сумісність.

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

3. Фортран

У 1954 році в надрах корпорації IBM групою розробників на чолі з Джоном Бекусом (John Backus) було створено мову програмування Fortran.

Значення цієї події важко переоцінити. Це перша мова програмування високого рівня. Вперше програміст міг по-справжньому абстрагуватись від особливостей машинної архітектури. Ключовою ідеєю, що відрізняє нова мовавід асемблера, була концепція підпрограм. Нагадаємо, що це сучасні комп'ютерипідтримують підпрограми на апаратному рівні, надаючи відповідні команди та структури даних (стек) прямо на рівні асемблера, в 1954 ж це було зовсім не так. Тому компіляція Fortran'у була процесом аж ніяк не тривіальним. Крім того, синтаксична структура мови була досить складною для машинної обробки насамперед через те, що прогалини як синтаксичні одиниці взагалі не використовувалися. Це породжувало безліч можливостей для прихованих помилок, таких, наприклад:

У Фортрані наступна конструкція описує « цикл forдо мітки 10 при зміні індексу від 1 до 100 »: DO 10 I = 1,100 Якщо ж тут замінити кому на точку, то вийде оператор присвоєння: DO10I = 1.100 Кажуть, що така помилка змусила ракету вибухнути під час старту!

Мова Фортран використовувався (і використовується досі) для наукових обчислень. Він страждає від відсутності багатьох звичних мовних конструкцій та атрибутів, компілятор практично не перевіряє синтаксично правильну програму з погляду семантичної коректності (відповідність типів та ін.). У ньому немає підтримки сучасних способів структурування коду та даних. Це усвідомлювали й розробники. За визнанням самого Бекуса, перед ними стояло завдання скоріше розробки компілятора, ніж мови. Розуміння самостійного значення мов програмування прийшло пізніше.

Поява Фортрана було зустрінуто ще більш лютою критикою, ніж використання асемблера. Програмістів лякало зниження ефективності програм з допомогою використання проміжного ланки як компілятора. І ці побоювання мали під собою підстави: дійсно, хороший програміст, швидше за все, при вирішенні будь-якої невеликої задачі вручну напише код, який працює швидше, ніж код, отриманий як результат компіляції. Через деякий час прийшло розуміння, що реалізація великих проектів неможлива без застосування мов високого рівня. Потужність обчислювальних машин зростала, і з тим падінням ефективності, яке раніше вважалося загрозливим, стало можливим упокоритися. Переваги ж мов високого рівня стали настільки очевидними, що спонукали розробників до створення нових мов, дедалі більше досконалих.

4. Cobol

У 1960 році було створено мову програмування Cobol. Він замислювався як мова для створення комерційних додатків, і він став таким. На Кобол написані тисячі прикладних комерційних систем. Відмінною рисою мови є можливість ефективної роботиз великими масивами даних, що характерно саме для комерційних додатків. Популярність Кобола настільки висока, що навіть зараз, за ​​всіх його недоліків (за структурою та задумом Кобол багато в чому нагадує Фортран) з'являються нові його діалекти та реалізації. Так нещодавно з'явилася реалізація Кобола, сумісна з Microsoft .NET, що вимагало, ймовірно, внесення в мову деяких характеристик об'єктно-орієнтованої мови.

У 1964 році все та ж корпорація IBM створила мову PL/1, яка була покликана замінити Cobol і Fortran в більшості додатків. Мова мала виняткове багатство синтаксичних конструкцій. У ньому вперше з'явилася обробка виняткових ситуацій та підтримка паралелізму. Слід зазначити, що синтаксична структура мови була вкрай складною. Прогалини вже використовувалися як синтаксичні роздільники, але ключові словабули зарезервовані. Зокрема, наступний рядок- це цілком нормальний оператор PL/1: IF ELSE=THEN THEN THEN; ELSE ELSE

У силу таких особливостей розробка компілятора для PL/1 була виключно складною справою. Мова так і не стала популярною поза світом IBM.

6. BASIC

У 1963 році в Дартмурському коледжі (Dartmouth College) було створено мову програмування BASIC(Beginners' All-Purpose Symbolic Instruction Code - багатоцільова мова символічних інструкцій для початківців). Мова замислювався в першу чергу як засіб навчання і як перший мову програмування, що вивчається. Він передбачався легко інтерпретованим та компілюваним. Треба сказати, що BASIC справді став мовою, якою навчаються програмувати (принаймні, так було ще кілька років тому; зараз ця роль відходить до Pascal). Було створено кілька потужних реалізацій BASIC, що підтримують найсучасніші концепції програмування (найяскравіший приклад – Microsoft Visual Basic).

7. Algol

В 1960 командою на чолі з Петером Науром (Peter Naur) була створена мова програмування Algol. Ця мова дала початок цілому сімейству Алгол-подібних мов (найважливіший представник – Pascal). 1968 року з'явилася Нова версіямови. Вона не знайшла такого широкого практичного застосуванняяк перша версія, але була дуже популярна в колах теоретиків. Мова була досить цікава, тому що мала багато унікальних на той момент характеристик.

8. Подальший розвитокмов програмування

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

Відомості про пізніші мови я наводитиму у вигляді опису сімейств мов. Це дозволить краще простежити взаємозв'язки між окремими мовами.

9. Pascal-подібні мови

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

Негативною рисою мови була відсутність у ньому засобів для розбиття програми на модулі. Вірт усвідомлював це і розробив мову Modula-2 (1978), в якій ідея модуля стала однією з ключових концепцій мови. У 1988 році з'явилася Modula-3, до якої були додані об'єктно-орієнтовані риси. Логічним продовженням Pascal та Modula є мова Oberon та Oberon-2. Вони характеризуються рухом у бік об'єктно-і компонентно-орієнтованості.

10. C-подібні мови

У 1972 році Керніганом і Рітчі була створена мова програмування C. Він створювався як мова для розробки операційної системи UNIX. C часто називають «перенесеним асемблером», маючи на увазі те, що він дозволяє працювати з даними практично так само ефективно, як на асемблері, надаючи при цьому структуровані керуючі конструкції та абстракції високого рівня (структури та масиви). Саме з цим пов'язана його величезна популярність і досі. І саме це є його ахіллесовою п'ятою. Компілятор C дуже слабко контролює типи, тому дуже легко написати зовні правильну, але логічно помилкову програму.

У 1986 Б'ярн Страуструп створив першу версію мови C++, додавши в мову C об'єктно-орієнтовані риси, взяті з Simula (див. нижче), і виправивши деякі помилки і невдалі рішення мови. C++ продовжує вдосконалюватися і в даний час, так в 1998 вийшла нова (третя) версія стандарту, що містить в собі деякі досить істотні зміни. Мова стала основою для розробки сучасних великих та складних проектів. У нього є, однак, і слабкі сторони, які з вимог ефективності.

У 1995 році в корпорації Sun Microsystems Кеном Арнольдом та Джеймсом Гослінгом був створений мова Java. Він успадковував синтаксис C і C++ і був позбавлений деяких неприємних рис останнього. Відмінною особливістю мови є компіляція в код абстрактної машини, для якої потім пишеться емулятор (Java Virtual Machine) для реальних систем. Крім того, Java немає покажчиків і множинного успадкування, що сильно підвищує надійність програмування.

У 1999-2000 роках у корпорації Microsoft була створена мова C#. Він достатньо схожий з Java (і замислювався як альтернатива останньому), але має й відмінні риси. Орієнтований переважно на розробку багатокомпонентних Інтернет-додатків.

11. Мови Ada та Ada 95

У 1983 році під егідою Міністерства Оборони США було створено мову Ada. Мова чудова тим, що дуже багато помилок може бути виявлено на етапі компіляції. Крім того, підтримується багато аспектів програмування, які часто віддаються на відкуп операційній системі (паралелізм, обробка винятків). У 1995 році було прийнято стандарт мови Ada 95, який розвиває попередня версія, Додаючи в неї об'єкно-орієнтованість і виправляючи деякі неточності. Обидві ці мови не набули широкого поширення поза військовими та іншими великомасштабними проектами (авіація, залізничні перевезення). Основною причиною є складність освоєння мови та досить громіздкий синтаксис (значно громіздкіший, ніж Pascal).

12. Мови обробки даних

Всі вищеперелічені мови є мовами загального призначення у тому сенсі, що вони не орієнтовані та не оптимізовані під використання будь-яких специфічних структур даних або застосування в будь-яких специфічних областях. Було розроблено велику кількість мов, орієнтованих на специфічні застосування. Нижче наведено короткий оглядтаких мов.

У 1957 році було зроблено спробу створення мови для опису математичної обробки даних. Мова була названа APL (Application Programming Language). Його відмінною особливістю було використання математичних символів (що ускладнювало застосування на текстових терміналах; поява графічних інтерфейсівзняло цю проблему) і дуже потужний синтаксис, який дозволяв робити безліч нетривіальних операцій прямо над складними об'єктами, не вдаючись до розбиття їх на компоненти. Широкому застосуванню завадило, як зазначалося, використання нестандартних символів як елементів синтаксису.

14. Snobol та Icon

У 1962 році з'явилася мова Snobol (а 1974 - його наступник Icon), призначений для обробки рядків. Синтаксис Icon нагадує С та Pascal одночасно. Відмінність полягає в наявності потужних вбудованих функцій роботи з рядками та пов'язана з цими функціями спеціальна семантика. Сучасним аналогом Icon і Snobol є Perl - мова обробки рядків і текстів, до якої додані деякі об'єктно-орієнтовані можливості. Вважається дуже практичною мовою, проте йому бракує елегантності.

15. SETL

У 1969 році була створена мова SETL – мова для опису операцій над множинами. Основною структурою даних у мові є безліч, а операції аналогічні математичним операціям над множинами. Корисний при написанні програм, що мають справу зі складними абстрактними об'єктами.

16. Lisp та йому подібні мови

У 1958 році з'явилася мова Lisp – мова для обробки списків. Набув досить широкого поширення в системах штучного інтелекту. Має кілька нащадків: Planner (1967), Scheme (1975), Common Lisp (1984). Багато його рис були успадковані сучасними мовамифункціональне програмування.

17. Скриптові мови

У Останнім часому зв'язку з розвитком Інтернет-технологій, широким поширенням високопродуктивних комп'ютерів та низкою інших факторів набули поширення так звані скриптові мови. Ця мови спочатку орієнтувалися використання як внутрішніх управляючих мов у різноманітних складних системах. Багато хто з них, однак, вийшли за межі сфери свого початкового застосування і використовуються нині в зовсім інших сферах. Характерними рисами цих мов є, по-перше, їх інтерпретованість (компіляція або неможлива, або небажана), по-друге, простота синтаксису, а по-третє, легка розширюваність. Таким чином, вони ідеально підходять для використання в часто змінюваних програмах, дуже невеликих програмахабо у випадках, коли для виконання операторів мови витрачається час, несумісний з часом їх розбору. Було створено досить велику кількість таких мов, перерахуємо лише основні та найчастіше використовувані.

18. JavaScript

Мова була створена в компанії Netscape Communications як мова для опису складної поведінки веб-сторінок. Спочатку називався LiveScript, причиною зміни назви отримали рекламні міркування. Інтерпретується браузером під час відображення веб-сторінки. За синтаксисом схожий на Java і (віддалено) з C/C++. Має можливість використовувати вбудовану в браузер об'єктну функціональність, проте справді об'єктно-орієнтованою мовою не є.

19. VBScript

Мова була створена в корпорації Microsoft багато в чому як альтернатива JavaScript. Має схожу сферу застосування. Синтаксично схожий з мовою Visual Basic (і є усіченою версією останнього). Так само, як і JacaScript, виконується браузером при відображенні веб-сторінок і має той самий рівень об'єктно-орієнтованості.

20. Perl

Мова створювалася на допомогу системному адміністраторуопераційної системи Unix для обробки різноманітних текстів та виділення потрібної інформації. Розвинувсь до потужного засобу роботи з текстами. Є мовою, що інтерпретується, і реалізований практично на всіх існуючих платформах. Використовується для обробки текстів, а також для динамічної генерації веб-сторінок на веб-серверах.

21. Python

Інтерпретована об'єктно-орієнтована мова програмування. За структурою та сферою застосування близький до Perl, проте менш поширений і суворіший і логічний. Є реалізації більшості існуючих платформ.

22. Об'єктно-орієнтовані мови

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

23. Simula

Першою об'єктно-орієнтованою мовою була мова Simula (1967). Ця мова була призначена для моделювання різних об'єктів і процесів, і об'єктно-орієнтовані риси з'явилися в ній саме для опису властивостей модельних об'єктів.

24. Smalltalk

Популярність об'єктно-орієнтованого програмування принесла мова Smalltalk, створена в 1972 році. Мова призначалася для проектування складних графічних інтерфейсів і була першою по-справжньому об'єктно-орієнтованою мовою. У ньому класи та об'єкти – це єдині конструкції програмування. Великим недоліком Smalltalk є великі вимоги до пам'яті та низька продуктивністьотриманих програм. Це з не дуже вдалою реалізацією об'єктно-орієнтованих особливостей. Популярність мов C++ та Ada 95 пов'язана саме з тим, що об'єктно-орієнтованість реалізована без істотного зниження продуктивності.

25. Eiffel

Існує мова з дуже гарною реалізацією об'єктно-орієнтованості, яка не є надбудовою ні над якоюсь іншою мовою. Це мова Eiffel (1986). Як чиста мова об'єктно-орієнтованого програмування, вона, крім того, підвищує надійність програми шляхом використання «контрольних тверджень».

26. Мови паралельного програмування

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

27. Мова Оccam

Мова Оccam була створена в 1982 році і призначена для програмування трансп'ютерів - багатопроцесорних систем розподіленої обробки даних. Він визначає взаємодію паралельних процесів як каналів - способів передачі від одного процесу до іншого. Зазначимо особливість синтаксису мови Щccam - у ньому послідовний та паралельний порядки виконання операторів рівноправні, і їх необхідно явно вказувати ключовими словами PAR та SEQ.

28. Модель паралельних обчислень Linda

У 1985 році було запропоновано модель паралельних обчислень Linda. Основним її завданням є організація взаємодії між процесами, що паралельно виконуються. Це досягається з допомогою використання глобальної кортежної області (tuple space). Процес може помістити туди кортеж з даними (тобто сукупність декількох, можливо різнорідних даних), а інший процес може очікувати появи в кортежній області деякого кортежу і, після його появи, прочитати кортеж з можливим подальшим його видаленням. Зауважимо, що процес може, наприклад, помістити кортеж в область і завершитися, а інший може через деякий час скористатися цим кортежем. У такий спосіб забезпечується можливість асинхронної взаємодії. Очевидно, що за допомогою такої моделі може бути семульована і синхронна взаємодія. Linda - це модель паралельних обчислень, вона може бути додана до будь-якої мови програмування. Існують досить ефективні реалізації Linda, що обходять проблему існування глобальної кортежної області з потенційно необмеженим обсягом пам'яті.

29. Неімперативні мови

Усі мови, про які йшлося раніше, мають одну загальну властивість: вони є імперативними. Це означає, що програми на них, зрештою, є покроковий описрозв'язання того чи іншого завдання. Можна спробувати описувати лише постановку проблеми, а вирішувати завдання доручити компілятор. Існує два основних підходи, що розвивають цю ідею: функціональне та логічне програмування.

30. Функціональні мови

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

З мов з енергійною семантикою згадаємо ML і два його сучасні діалекти - Standard ML (SML) та CaML. Останній має об'єктно-орієнтованого нащадка – Objective CaML (O'CaML).

Серед мов із лінивою семантикою найбільш поширені дві: Haskell та його простіший діалект Clean.

Докладніші відомості про функціональні мови наведено ТУТ:

31. Мови логічного програмування

Програми мовами логічного програмування виражені як формули математичної логіки, а компілятор намагається отримати наслідки їх.

Родоначальником більшості мов логічного програмування є мова Prolog (1971). У нього є ряд нащадків - Parlog (1983, орієнтований на паралельні обчислення), Delta Prolog та ін. Логічне програмування, як і функціональне, - це окрема сфера програмування, і за більш детальними відомостями ми надсилаємо читача до спеціальної літератури.

32. Замість ув'язнення

Дозволю собі виділити деяку загальну тенденцію у розвитку мов програмування. Проникливий читач, мабуть, уже давно здогадався, про що я маю намір сказати. Мови розвиваються у бік дедалі більшої абстракції. І це супроводжується падінням ефективності. Питання: а чи варта цього абстракція? Відповідь: варто. Варто, оскільки підвищення рівня абстракції спричиняє підвищення рівня надійності програмування. З низькою ефективністю можна боротися шляхом створення більш швидких комп'ютерів. Якщо вимоги до пам'яті надто високі, можна збільшити її обсяг. Це, звичайно, вимагає часу та коштів, але це можна вирішити. А ось з помилками у програмах можна боротися лише одним способом: їх треба виправляти. А ще краще – не робити. А ще краще максимально ускладнити їхнє вчинення. І саме на це спрямовані всі дослідження у галузі мов програмування. А зі втратою ефективності доведеться змиритися.

Метою даного огляду була спроба дати читачеві уявлення про всю різноманітність існуючих мов програмування. Серед програмістів часто існує думка про «загальну застосовність» тієї чи іншої мови (C, C++, Pascal тощо). Ця думка виникає з кількох причин: нестача інформації, звичка, інертність мислення. Я спробував трохи компенсувати перший фактор. З приводу інших можу лише сказати, що справжній професіонал має постійно прагнути підвищувати свою професійну кваліфікацію. А для цього слід не боятися експериментувати. Ну і що все навколо пишуть на C/С++/VB/Pascal/Perl/Java/… (потрібне підкреслити)? А чому б не спробувати щось новеньке? А раптом це виявиться ефективнішим? Зрозуміло, перш ніж прийматись використовувати нову мову, потрібно уважно вивчити всі її особливості, включаючи наявність ефективної реалізації, можливості взаємодії з існуючими модулями і т.п., і тільки після цього приймати рішення. Зрозуміло, завжди є ризик піти не тим шляхом, але… Не помиляється лише той, хто нічого не робить.

І ще. Мені доводилося чути, а часом і брати участь у дискусіях виду «мова A краща, ніж мова B». Я сподіваюся, що, прочитавши цей огляд, багато хто переконається в безглуздості таких суперечок. Максимум, про що може йтися - це про переваги однієї мови над іншою при вирішенні того чи іншого завдання в тих чи інших умовах. Ось тут справді іноді є про що посперечатися. І рішення часом зовсім не очевидне. Проте сперечатися «взагалі» - очевидна дурість.

Ця стаття замислювалася як відповідь тим, хто кричить "мова X MUST DIE". Сподіваюся, що відповідь вийшла достатньо адекватною та переконливою. Сподіваюся також, що стаття має, окрім полемічної, і пізнавальну цінність.

Матеріал із Вікіпедії

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

У цей же час, в 1940-ті роки, з'явилися електричні цифрові комп'ютери і була розроблена мова, яку можна вважати першою високорівневою мовою програмування для ЕОМ – «Plankalkül», створеною німецьким інженером К. Цузе в період з 1945 по 1945 рік.

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

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

Вдосконалення

Важливим напрямом робіт стають візуальні (графічні) мови програмування, у яких процес «написання» програми як тексту замінюється процес «малювання» (конструювання програми як діаграми) на екрані ЕОМ. Візуальні мови забезпечують наочність та краще сприйняття логіки програми людиною.

Стандартизація мов програмування

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

Типи даних

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

Особлива система, за якою дані організуються у програмі, - це система типівмови програмування; розробка та вивчення систем типів відома під назвою теорія типів. Мови можна розділити на ті, що мають статичну типізаціюі динамічну типізацію, а також безтипові мови(наприклад, Forth).

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

Структури даних

Системи типів у мовах високого рівня дозволяють визначати складні, складові типи, звані структури даних . Як правило, структурні типи даних утворюються як декартовий добуток базових (атомарних) типів і раніше певних складових типів.

Основні структури даних (списки, черги, хеш-таблиці, двійкові дерева та пари) часто представлені особливими синтаксичними конструкціями у мовах високого рівня. Такі дані структуруються автоматично.

Семантика мов програмування

Існує кілька підходів щодо визначення семантики мов програмування.

Найбільш широко поширені різновиди наступних трьох: операційного, дериваційного (аксіоматичного) та денотаційного (математичного).

  • При описі семантики в рамках операційногопідходу зазвичай виконання конструкцій мови програмування інтерпретується за допомогою деякої уявної (абстрактної) ЕОМ.
  • Аксіоматична семантика описує наслідки виконання конструкцій мови за допомогою мови логіки та завдання перед- та постумов.
  • Дентаційнасемантика оперує поняттями, типовими для математики - множини, відповідності, а також судження, твердження та ін.

Парадигма програмування

Мова програмування будується відповідно до тієї чи іншої базової моделі обчислень і парадигмою програмування.

Незважаючи на те, що більшість мов орієнтована на імперативну модель обчислень, що задається фон-нейманівською архітектурою ЕОМ, існують інші підходи. Можна згадати мови зі стіковою обчислювальною моделлю (Форт, Factor, PostScript та ін), а також функціональне (Лісп, Haskell,,,, РЕФАЛ, заснований на моделі обчислень, введеної радянським математиком А. А. Марковим-молодшим та ін.) та логічне програмування (Пролог).

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

Способи реалізації мов

Мови програмування можуть бути реалізовані як компілювані, інтерпретовані та вбудовані.

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

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

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

Для будь-якої інтерпретованої мови можна створити компілятор - наприклад, мова Лісп, що спочатку інтерпретується, може компілюватися без будь-яких обмежень. Код, що створюється під час виконання програми, може також динамічно компілюватися під час виконання.

Як правило, скомпіловані програми виконуються швидше і не вимагають виконання додаткових програм, тому що вже переведені на машинна мова. Разом з тим, при кожній зміні тексту програми потрібна її перекомпіляція, що уповільнює процес розробки. Крім того, скомпільована програма може виконуватися тільки на тому самому типі комп'ютерів і, як правило, під тією самою операційною системою, на яку було розраховано компілятор. Щоб створити файл для машини іншого типу, потрібна нова компіляція.

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

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

Подібний підхід у певному сенсі дозволяє використовувати плюси як інтерпретаторів, і компіляторів. Слід згадати, що є мови, які мають інтерпретатор і компілятор (Форт).

Мови програмування низького рівня

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

Прикладом мови низького рівня є асемблер. Мови низького рівня орієнтовані конкретний тип процесора і враховують його особливості, для переносу програми на асемблері в іншу апаратну платформу її потрібно майже повністю переписати. Певні відмінності існують і в синтаксисі програм під різні компілятори. Щоправда, центральні процесори для комп'ютерів фірм AMD та Intel практично сумісні та відрізняються лише деякими специфічними командами. А ось спеціалізовані процесори для інших пристроїв, наприклад відеокарт і телефонів містять суттєві відмінності.

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

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

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

Зараз у середовищі розробників вважається, що мови програмування, які мають прямий доступ до пам'яті та регістрів або мають асемблерні вставки, слід вважати мовами програмування з низьким рівнем абстракції. Тому більшість мов, які вважалися мовами високого рівня до 2000 року, нині вже такими не вважаються.

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

Використовувані символи

Сучасні мови програмування розраховані використання ASCII , тобто доступність всіх графічнихсимволів ASCII є необхідною та достатньою умовою для запису будь-яких конструкцій мови. Керівникисимволи ASCII використовуються обмежено: допускаються лише повернення каретки CR, переклад рядка LF та горизонтальна табуляція HT (іноді вертикальна табуляція VT і перехід до наступної сторінки FF).

Ранні мови, що виникли в епоху 6-бітових символів, використовували більш обмежений набір. Наприклад, алфавіт Фортрана включає 49 символів (включаючи пробіл): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ " :

Помітним винятком є ​​мова APL, в якій використовується дуже багато спеціальних символів.

Використання символів за межами ASCII (наприклад, символів KOI8-R або символів Юнікоду) залежить від реалізації: іноді вони дозволяються тільки в коментарях та символьних/рядкових константах, а іноді і в ідентифікаторах. У СРСР існували мови, де всі ключові слова писалися російськими літерами, але великої популярності подібні мови не завоювали (виняток складає Вбудована мова програмування 1С:Підприємство).

Розширення набору символів стримується тим, що багато проектів з розробки програмного забезпечення є міжнародними. Дуже складно було працювати з кодом, де імена одних змінних записані російськими літерами, інших - арабськими, а третіх - китайськими ієрогліфами. Разом про те, до роботи з текстовими даними мови програмування нового покоління (Delphi 2006 , , Java) підтримують Unicode .

Категорії мов програмування

Математично обґрунтовані мови програмування

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



Розповісти друзям