Эволюция.сом Історія розвитку мов програмування

19.07.2015

Все почалося в далекому 1959 році, близько півсотні років тому. Саме в цей рік майбутній засновник фірми Intel Роберт Нойс винайшов спосіб виготовлення мікросхем, застосування яких дозволило в сотні разів зменшити розміри обчислювальних машин, їх вартість, а також істотно підвищити їх надійність. З тих пір комп’ютери стали набувати все більшої популярності, кількість їх зростала, а значить, зростала й потреба в програмах і програмістів.

Як відомо, перший мікропроцесор з’явився на світ у 1970 році — Intel 4004. Його спроектував Маршиан Едвард Хофф — один з інженерів фірми Intel, яка і донині є лідером виробництва чіпів, процесорів і контролерів. Фактично це пристрій володіло можливостями, притаманними зараз кожному «калькулятору», і не більше. Судіть самі: він міг обробляти тільки 4 біти інформації, так і команд у нього було небагато, а значить, програмування під нього було досить простим завданням, і потреба в мовах високого рівня не виникало. Але всього через чотири роки, в 1973 році, був створений процесор 8008, який працював з восьмиразрядными машинними словами, а також, трохи пізніше — 8080, який дозволяв підключати пам’ять об’ємом до 64 кілобайт.

1978 з’явився 16-розрядний мікропроцесор 8086 з пам’яттю до 1 мегабайта, а з ним і сучасний асемблер, який досі в тій чи іншій мірі підтримується у всіх мікропроцесорах x86 при роботі в реальному часі. І якщо з попередніми процесорами автор цих рядків знаком швидше чуток, то перший досвід програмування він отримав, працюючи саме з 8086. Власне, більшість сучасних процесорів базуються саме на його основі. Невеликі розміри самого процесора і також основних компонентів комп’ютера в ті роки привели до того, що з’явилися так звані PC — Personal Computer, або, простіше кажучи, «персоналки», тобто машини, розраховані на використання однією людиною. Вони займали небагато місця, могли розміщуватися на звичайному письмовому столі і при цьому володіли значною обчислювальною потужністю. Все це прискорило велике поширення PC, особливо в США.

Однак це зовсім не означає, що до появи PC не було потреби в засобах програмування. Ще в середині 50-х років обчислювальні машини отримали широке поширення в університетах і науково-дослідних інститутах США і Західної Європи, і тоді ж настав час стрімкого прогресу в області програмування. І нові розробки не заперечують всього того, що було зроблено раніше. Компілятори та інтерпретатори мов асемблера залишилися важливим засобом програмування для будь-якого комп’ютера. Але, незважаючи на можливість використовувати ці кошти, програмісти вирішили полегшити собі роботу.

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

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

mov AL,0

mov AH,0Ch

int 21h

не кажучи вже про те, що ассемблеры були апаратно залежні — тобто, якщо планувалося використовувати програми на комп’ютері від Dec, а не Intel, їх доводилося переписувати заново. Тому програмісти самі для себе намагалися спростити життя і намагалися створювати все більш і більш досконалі мови. З появою мов нового рівня, вони отримали можливість проводити розробку алгоритму рішення задачі, не витрачаючи зусиль на програмну реалізацію. Крім того, поява цих мов ознаменувало перший крок на шляху створення програм, які вийшли за межі науково-дослідних лабораторій. Але мови програмування, разом з тим, ставали все більш і більш складними. Якщо в асемблері основна проблема полягала в постійному запам’ятовуванні непотрібних, по суті, дані по ходу написання програми і утомляющем кодуванні найдрібніших подробиць роботи програми, чого ще можна було навчити середньої людини, то в сучасному C++ міститься така кількість лексем, що далеко не кожен може освоїти цю мову, а це, в свою чергу, призводить до появи пакетів типу Visual Basic (Visual Basic, а не VBS), які, по суті, марні, так як в них за рахунок сильного зменшення можливостей і загальної гнучкості мови спрощується інтерфейс. В результаті, вивчає їх людина, якщо він не вміє толком програмувати, так і не навчиться це робити, все життя користуючись плодами творчості інших програмістів, втиснутий в ті рамки, які вони йому відвели.

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

Отже, першим був Fortran. Він з’явився, як вже згадувалося, у 1957 році. Але роботи по його розробці почалися набагато раніше. З 1954 років група інженерів всім відомої (тепер) компанії IBM під керівництвом Джона Бекуса займалася створенням компілятора для Fortran. Ці роботи велися більше 2-х років і, зрештою, призвели до створення нової мови. Fortran — це скорочення від двох англійських слів FORmula TRANslator — що перекладається як «транслятор формул». Як видно з назви, первісно мова створювався з метою використання при математичних розрахунках. Він призначався для написання програм, використовуваних при вирішенні прикладних технічних завдань. Основу мови становили арифметичні оператори, відповідні за своїм синтаксису традиційної запису математичних виразів. На додаток до цього в мові малися кошти розбиття складних алгоритмів на більш прості за рахунок явного визначення підпрограм (SUBROUTINE) і функцій (FUNCTION). Описання даних у Fortran були орієнтовані на подання головним чином числової інформації, тому і типи даних були прості: це цілі й дійсні числа, а також масиви з таких чисел.

Проте програмування на Фортране являло собою непросту задачу. Наприклад, оператор DO 150 I=1,10 визначає початок циклу виконання команд, що йдуть безпосередньо за ним аж до рядка з відміткою 150, причому параметр I при кожному новому початку циклу збільшується на 1, і так до 10. А якщо замість коми між 1 і 10 поставити крапку, то замість циклу ми отримаємо привласнення змінної DO150I значення 1.10. Але оскільки Fortran має добре розвинутим математичним апаратом, і під нього за час його існування було написано безліч зручних і корисних бібліотек, він до цих пір іноді використовується при програмуванні складних обчислень. Перша версія була призначена спеціально для комп’ютера IBM-704, який працював на лампах (!). Пізніше з’явилися більш опрацьовані версії: Фортран II дозволяв приєднувати шматки коду на асемблері, Фортран III і Фортран IV, який вийшов у світ у 1962 року, а також Фортран V, який вмів працювати з комплексними числами. Великою незручністю було те, що на різних машинах стояли Fortran»и різних версій і між ними не було ніякої сумісності, тому у 1966 році вирішено було прийняти єдиний стандарт.

Наступна стандартизація була проведена в 1977, і версія стандарту Fortran77 стала особливо популярна. Варто зауважити, що це був перший приклад комерційно успішного мови. Fortran не помер і сьогодні, як думають багато хто, хоча сфера його застосування залишається досить специфічною. З’явилися навіть пакети Visual Fortran, що дозволяють писати програми з графічним інтерфейсом користувача під середовище Windows. До того ж Fortran досі продовжують вивчати при підготовці за деякими фізико-математичних спеціальностей у багатьох університетах, де він залишається профілюючих мовою програмування.

Але Fortran приносив радість і втіху лише вченим, які вирішували з його допомогою свої специфічні наукові та інженерні завдання. ЕОМ між тим розвивалися, і ставало зрозумілим, що з їх допомогою можна вирішувати найрізноманітніші проблеми, часто не пов’язані з науковими програмами. Тому поступово розроблялися і компілятори інших мов програмування. Так в кінці 1959 року в США група розробників представила абсолютно новий універсальна мова програмування COBOL — це абревіатура від Common Business Oriented Language — універсальна мова, орієнтований на завдання бізнесу. У Коболе, на відміну від більшості інших мов, всі дані описуються в окремій секції, яка не збігається з секцією команд. Це дозволяє використовувати одні і ті ж описи даних в різних програмах. COBOL був апаратно незалежним, і це також сприяло його неймовірної популярності у 60-х — 70-х роках, особливо після виходу у 1962 році його нової версії. Особливо ефективно програми, написані на COBOL»е, виробляють прості арифметичні операції з великими масивами даних, що досить часто доводиться робити в бухгалтерських розрахунках. У нашій країні ця мова теж досить широко використовувався, причому він, один з небагатьох, був переведений на російську мову.

Тим не менш, мов програмування було все ще мало, та й ті, що були, не завжди влаштовували вибагливих розробників. Тому ряд провідних програмістів в Цюріху представили у 1958 році своє нове дітище — Алгол (скорочення від ALGOrithmic Language — алгоритмічна мова програмування). Перша версія мови так і називалася — Алгол 58, а пізніше, в 60 році, вже в Парижі, був прийнятий стандарт Алгол 60, який і став основним на довгі роки, і хоча кілька разів вносилися нові поправки і доповнення, це назва залишалося незмінним до 1968.

Мова прийняли неоднозначно, як вдало зауважила Грейс Хоппер — один з найбільших фахівців з мов високого рівня (якщо не сказати «хрещена мати» мов програмування) — «Алгол схожий на велику поему: простий і ясний з точки зору математики, але аж ніяк не практичний». У США Алгол не отримав широкого розповсюдження, натомість європейці одразу прийняли Алгол. Він дав можливість європейської комп’ютерної індустрії здобути незалежність від американської технології і поширився від Великобританії до Радянського Союзу. На початку 80-х безліч радянських програмістів працювали на Алголі-60. Але основна заслуга цього мови в іншому — він заклав базу для подальшого розвитку программистской думки, і багато мови програмування, розроблені згодом і отримали широке розповсюдження як у колі професіоналів, так і серед любителів, містять багато ідеї та рішення, взяті з Algol’у.

В першу чергу, це створення спеціальної нотації для визначення синтаксису алгоритмічних мов (нотації Бекуса-Наура). По-друге, доведення до логічного завершення самої концепції операторних алгоритмічних мов із заздалегідь фіксованими типами даних і блоковою структурою. З додаткових нововведень можна виділити можливість розробки окремих модулів проекту незалежно один від одного, а також реалізацію викликів фрагментів коду програми, способів передачі параметрів між процедурами та функціями. Досить сказати, що саме в Алголі з’явилися поняття блоку рекурсивного виклику функції.

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

Батьки-засновники BASIC»а (розшифровується як Basic Beginner»s All-purpose Symbolic Instruction Code — універсальний код символьних інструкцій для початківців) — два яскравих представника програмістів старшого покоління, співробітники математичного факультету Дармутского коледжу Томас Курц і Джон Кемені. Курц мав ступінь доктора з математичної статистики. Вперше з комп’ютерами він познайомився у 1951 році у Каліфорнійському університеті. Кемені був на два роки молодший Курця. З комп’ютерами він був, що називається, «ти». Ще під час навчання в Прінстоні, він їздив у 1945 році в Лос-Аламос, де брав участь у роботі над особливо секретним «Манхеттенським проектом» зі створення атомної бомби. Наставником Кемені був сам Джон фон Нейман, чиї ідеї в області комп’ютерних обчислень зробили серйозний вплив на всі подальші розробки в цьому напрямку.

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

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

У перший час Кемені і Курц були змушені працювати зі своїми математичними програмами за 215 км від Дармутского коледжу. Найближчий доступний їм обчислювальний центр знаходився в Массачусетському технологічному інституті. Це був новітній комп’ютер IBM-704, який мав феноменальний за тих часів обсяг пам’яті 8192 слова за 365 розрядів кожне. Але, навіть проробивши довгий шлях, Курц і Кемені не могли самостійно працювати на машині, з-за існуючої тоді системи пакетної обробки (batch processing). Так як комп’ютери були нечисленні і страшно дороги, доступ до них мали тільки обрані. Програмісту потрібно підготувати завдання на перфокартах і передати його в обчислювальний центр оператору. Він вводив карти в машину у великому пакеті, який містив сотні програм, що належать різним користувачам.

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

Але проблеми не обмежувалися лише незручностями пакетної обробки. Крім цього перші програми для машини IBM-704 доводилося писати на мові асемблера. І якщо програма починала вести себе «дивно», то єдиним способом виправлення помилки було вивчення дампа пам’яті — довгої паперової стрічки, що містить числові коди. Своє программистское майстерність Кемені і Курц відточували, вивчаючи мову асемблера і розбираючись з нескінченними дампами, плекаючи надію про встановлення комп’ютера в Дартмуті. Не уявляли вони собі лише того, як навчити програмуванню колег і студентів, адже сам процес програмування був надзвичайно складним.

До початку 60-х років Кемені і Курц добилися деяких успіхів. Спочатку Дармутский коледж отримав власний маленький комп’ютер LGP-30 з об’ємом пам’яті удвічі менше, ніж у IBM-704. Курц очолив новоспечений обчислювальний центр, і протягом декількох років два молодих професори займалися розробкою простих мов, призначених для роботи на машині LGP-30. Один студент, що займався до цього програмуванням, розробив мову «ДАРТ». Успіхи студента підтвердили переконання Курця і Кемені — робота з комп’ютером цілком по силам студентам. Нарешті настала пора висунути ідею, яку вони виношували багато років. Їх пропозиція була дуже сміливим: навчати азам програмування всіх студентів, незалежно від спеціальностей, будь то гуманітарні чи природничі науки. Поставлена мета вже сама по собі була досить незвичайною, але наміри Кемені і Курця цим не обмежувалися. На відміну від своїх колег, яких цілком влаштовувала методика навчання студентів програмуванню шляхом читання лекцій, Кемені хотів, щоб студенти працювали з машиною «наживо», створюючи для неї реальні програми. Але багато студентів, а комп’ютер лише один, і, хоча студентам не доводилося подорожувати в інше місто, утомительность роботи з пакетною обробкою несла з собою розчарування. Майбутніх інженерів і математиків необхідно було змусити змиритися з багатогодинним і навіть багатоденним очікуванням результатів.

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

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

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

Деякі ідеї Кемені і Курця відрізнялися від існуючих тоді «принципів». Наприклад, введення в мову оператора INPUT, що дозволяє вести якесь інтерактивна взаємодія. Це дозволяло змінювати програму в процесі її роботи. Крім того, мова, розроблений Кемені і Курцом, не передбачав поділу чисел на цілі і речові, як у мові Фортран. Бейсік виявився універсальним мовою на відміну від, наприклад, COBOL». А його простота дозволяла використовувати переваги ЕОМ як математикам і інженерам, так і філологам і соціологам.

Влітку 1963 року Кемені почав розробляти першу версію компілятора для мови Бейсік. Восени того ж року студенти приступили до проектування і кодування операційної системи для машин, на яких Кемені і Курц планували реалізувати свої ідеї. Це були машини General Electric-225 і Datanet-30. У лютому 1964 року обладнання було доставлено в коледж, і робота закипіла з подвоєною силою. Нарешті, 1 травня 1964 року в 4 години ранку в напівпідвалі будівлі коледжу Кемені і його колеги почали набирати програми, кожен на своєму терміналі. Нарешті-то все запрацювало! Одночасно народилися мова Бейсік та система поділу часу.

Але це був тільки початок. Довгий час BASIC не мав компілятора або інтерпретатора, який би дозволяв створювати повноцінні програмні exe-файли. І лише в кінці 1975 році був створений перший його інтерпретатор. Він був створений двома програмістами-початківцями — Дикому Уипплом і Джоном Арнольдом. У тому ж 1975 році фірма Micro Instrumentation and Telemetry Systems випустила свою версію мови BASIC. Її творці — хто б ви думали? — нікому не відомі програміст фірми «Хониуэл» (Honeywell) і студент молодших курсів Гарвардського університету Пол Аллен, а також його недбайливий приятель Білл Гейтс.

Один час популярність BASIC»була настільки велика, що PC випускалися з його інтерпретатором, прошитим прямо в ПЗП комп’ютера. Найпопулярнішим став М-Бейсік, перший комерційний успіх молодої компанії Microsoft Corporation. Але, незважаючи на всі свої достоїнства, і він скоро став здавати свої позиції, поступаючись їх об’єктно-орієнтованих мов програмування. Не допомогли навіть перегляди стандарту мови і виключення вічного каменю спотикання — оператора безумовного переходу GOTO, який заплутував програму, роблячи з неї щось схоже на блюдо спагетті. До слова сказати, Microsoft досі просуває свого первістка — тепер це вже добре розрісся Visual Basic — цілий пакет візуального програмування, який навряд чи хтось звинуватить в «об’єктної неориентированности», і його аналог для програмування в Internet — VBScript. Незважаючи на практично повністю змінений інтерфейс, ця мова і зараз залишається простим у вивченні і відмінно підходить для написання невеликих, невимогливих до ресурсів програм.

Ще один дуже цікавий приклад мови, що зійшов з шляху історичного розвитку, про який сьогодні пам’ятають хіба що фахівці, — PL/1. Все почалося з того, що вже згадувана раніше фірма IBM в 1961 році вирішила почати розробку нової ЕОМ. Це повинна була бути абсолютно нова машина, однаково добре обробна великі масиви даних і обсчитывающая складні математичні задачі; проект отримав назву «Система-360». Разом з новою машиною розроблявся і мову: він поєднував особливості трьох лідерів даного сектора ринку — Фортрану, Коболу і Algol’у. Головою проекту став Джорж Рэдин. Менш ніж за рік всі необхідні роботи були проведені, і з’явився перший компілятор. Свою назву мову отримав як абревіатуру від Programming Language One PL/1. Виникає резонне питання: чому ж ми сьогодні нічого не знаємо про PL/1, раз він такий хороший і так багато всього поєднує в собі? Виявилося, що розробники далеко не завжди брали від його «батьків» все найкраще, як наслідок, мова вийшов перевантаженим можливостями і концепціями.

Але повернемося до початку 60-х років. Всі основні мови програмування все ще можна було перерахувати по пальцях, але незабаром їх число почало різко зростати. Тому були зроблені спроби створити універсальну мову програмування, але жодна з цих спроб не увінчалася успіхом. Серед десятка найбільш поширених на той період часу мов програмування кожен був орієнтований на вирішення певних завдань. Бейсік вживався для написання простих програм. Фортран — з його чітко визначеними правилами виконання арифметичних операцій — був класичним мовою програмування для розв’язання математичних і фізичних задач. Мова програмування COBOL був задуманий як основну мову для масової обробки даних в сферах управління і бізнесу. Інші мови програмування були також спеціалізовані. Ще один вартий уваги мова програмування — Алгол — призначався для запису алгоритмів, які будуються у вигляді послідовності процедур, застосовуваних для рішення поставленої задачі. Програмісти далеко неоднозначно прийняли Алгол, широкого схвалення він не отримав. Але все ж вплив Algol’у на розвиток інших мов програмування виявилося значним.

Серед мов, метою створення яких було поліпшення Algol’у, слід особливо відзначити Паскаль, розроблений наприкінці 60-х років швейцарським вченим Никлаусом Віртом. Pascal був названий на честь французького філософа і математика XVII століття Блеза Паскаля. Як відомо, історія повторюється, і вся новизна лише в тому, що на кожному новому витку — вона робить це на більш високому рівні. Ми вже відзначали, що BASIC з’явився як побічний продукт викладацької діяльності у Кемені і Курця, коли вони намагалися навчати студентів програмування. Щось схоже сталося і з Паскалем. Деякий час Ніклаус Вірт був професором інформатики у Федеральному технічному університеті в Швейцарії і потребував мовою, з допомогою якого відносно легко можна було б навчати студентів навичкам програмування на хорошому рівні. Базова концепція Паскаля була розроблена Віртом приблизно у 1970 році, і Паскаль дуже швидко почав повсюдно поширюватися, насамперед, завдяки легкості у вивченні і наочності написаних на ньому програм.

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

У той же час, стандартний Паскаль мав ряд істотних недоліків. Тому Вірт продовжив розвивати своє дітище, так через дев’ять років, у 1979 році, з’явилася Модула-2, перш за все від Паскаля вона відрізнялася тим, що давала можливість використовувати модульне програмування, а отже, з її допомогою вже можна було створювати досить великі проекти. До середини 70-х років назріла необхідність розробити міжнародний стандарт на Паскаль. В результаті, у 1982 році з’явився стандарт ISO 7185. Але Вірт не зупинявся на досягнутому, і трохи пізніше з’явилися Пекла і Оберон, які дозволяли використовувати типи та об’єкти, що вже давало кардинально нові можливості для розробників.

Мова Ада був створений фактично за замовленням Міністерства оборони США і, відповідно, за його активної підтримки. Був проведений конкурс серед розробників, і його виграла якась фірма Honeywell в особі її підрозділи Cii-Bull з керівником Ж. Ишбиа. Мова був названий на честь Ади Августи Лайвейс — дочки англійського поета Дж. Байрона, яка вважається першою програмісткою. Остаточна версія специфікацій мови Ада з’явилася в лютому 1983 році, вона і стала основною. Пекла досі вважається сучасною мовою з традиційною структурою управління, можливостями визначення типів і підпрограм. Задовольняє мова та вимогам модульності. На додаток до класичних властивостями мова забезпечує програмування задач реального часу, а також можливості моделювання паралельного вирішення завдань і обробку переривань.

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

Тут потрібно зауважити, що стандартний Паскаль був дійсно дуже простою мовою. У той же час у свідомості більшості людей (особливо молодого покоління, тих, кому ще немає 30), Паскаль зазвичай асоціюється з Turbo Pascal фірми Borland — це не вірно! Адже Turbo Pascal включає в себе багато позитивні якості як Модулы, так і Oberon»a, і є набагато більш складним і потужним мовою, ніж Паскаль Вірта. Судіть самі: він дозволяє використовувати модулі, і типи, і навіть об’єкти, даючи всю міць об’єктно-орієнтованого програмування в руки розробника. Як він виник? Ніклаус Вірт тут зовсім не при чому, а при чому — Андерс Хейлсберг, якого і слід вважати батьком-творцем Турбо Паскаля, незабаром витіснив з ринку всі інші специфікації. Це переможна хода почалося у 1984 році з появою версії Turbo Pascal 2.0, її поширення йшов стрімкими темпами. Версії 3.0, 4.0 і 5.0 виходили відповідно у 1985 та 1988 роках (останні дві). У них з’явилося кілька революційних нововведень: можливість розбивати програму на декілька файлів (модулів), інтерфейс взаємодії з MS-DOS і вбудований відладчик. Налагоджувача (debugger) — це дуже корисний засіб, що дозволяє в період виконання програми переглядати вміст регістрів процесора, поточні значення змінних і послідовність виконання програми. Від версії до версії оптимізувалася робота компілятора, який генерував виконуваний код на основі тексту програми. Навіть досить прості програми, перенесені з інших мов програмування, які не використовують усіх можливостей, які давав Паскаль, після компіляції починали працювати істотно швидше. Так, основною з причин, по якій автор цих рядків ще дуже давно вирішив відмовитися від Бейсика і використовувати Паскаль, — з’явилася наочна демонстрація швидкості роботи компілятора Turbo Pascal 2.0. Компіляція відбувалася в півтора рази швидше, ехе’шник виходив у багато разів менше (кілька кілобайт для простенького додатки проти 40-50 у Бейсика), а швидкість виконання отриманого коду просто вражала. Зараз, коли машини оснащуються сотнями мегабайт оперативної пам’яті і швидкодіючими процесорами, мало хто звертає увагу на такі, здавалося б, дрібниці, а тоді, при роботі на процесорі 8088 з усього 640 кб оперативної пам’яті, це було дуже важливо.

Подальший розвиток Pascal призвело до появи таких бібліотек, як Turbo Vision, з використанням якої написаний, мабуть, усім відомий, Dos Navigator, а також мови Object Pascal, який згодом став основою для створення Delphi.

Delphi — компілятор мови Object Pascal. Delphi 1 був першим інструментарієм розробки Windows-додатків, що об’єднав у собі оптимізуючий компілятор, візуальне середовище програмування і потужні можливості роботи з базами даних. Роком пізніше Delphi 2 запропонував все те ж, але на новому рівні сучасної 32-бітної операційної системи Windows 95 та Windows NT. Крім того, Delphi 2 надав програмісту 32-бітовий компілятор, що створював більш швидкі та ефективні програми, потужні бібліотеки об’єктів.

Тривала робота команди розробників Delphi призвела до появи третьої версії продукту розширеного набору інструментів для створення додатків, можливості використання технологій COM для розробки додатків WWW і багатьох інших сучасних технологій програмування.

Сучасний Delphi 6 є черговим кроком в еволюції компіляторів Паскаля, перший, як ви пам’ятаєте, був зроблений більше 16 років тому Андерсом Хейлсбергом. Мабуть, мало знайдеться мов, які б жили так довго, при цьому залишаючись актуальними. Дійсно, Delphi дозволяє навіть самому недосвідченому в програмуванні людині після порівняно невеликого часу, витраченого на його вивчення, створювати професійно виглядають програмні продукти з графічним інтерфейсом в стилі Windows. Особливо зручно на Delphi працювати з базами даних. Природно, ця легкість роботи з Delphi обертається деякими мінусами мови. Основний недолік Delphi — швидкість роботи, вона дуже і дуже невисока. Та й генерується компілятором код виходить важким і незграбним. Так, створення порожнього вікна дасть ехе-файл розміром майже в полмегабайта, на З++ — таке ж займе 15-30 кілобайт, в залежності від ваших старань (або 1 Кб при зовсім творчому підході до проблеми). Тим не менш, для деяких сфер застосування Delphi є ідеальним рішенням, тому зараз він досить популярний.

Я розглянув одну з класифікацій мови програмування, в її основі лежить виразна потужність мови. Однак існують і інші поділу, вироблені за зовсім іншими ознаками. Одна з них — класифікація, згідно з якою всі мови поділяються на обчислювальні та мови символьної обробки. Можна сказати, що всі перераховані вище мови ставилися до першого типу. Що ж стосується мов обробки символьної інформації, то слід хоча б згадати про ЛИСП’е (скорочення від List Processing Language), ПРОЛОГ’е (скорочення від Programming in Logic) і РЕФАЛ’е (алгоритмічна мова рекурсивних функцій).

Мова ЛИСП розроблений Дж. Маккарті в США. Він став основою ряду програмних реалізацій інтелектуальних систем і дав поштовх до розробки безлічі спеціалізованих мов штучного інтелекту і мов уявлень знань.

Набагато цікавіше Пролог, який з’явився у 1972 році. Він стоїть осібно у ряді тих мов програмування, про яких ми встигли розповісти. Пролог — це скорочення від LOGic PROgramming. Можна сказати, що він з’явився «на порожньому місці», так як фактично при його створенні жоден з відомих мов не був взятий за основу. Пролог розроблявся Аланом Колмари — співробітником університету в Лумини, і на відміну від ЛИСП’а — це європейський мову. У чому ж його особливість? А ось у чому: це перший і, мабуть, єдина мова програмування, заснований на логічному висновку та вирішенні поставленого завдання. Це ріднить його з штучним інтелектом. Фактично, на основі низки початкових даних (аксіом, фактів) згідно з правилами логіки, вказують рамки пошуку шляху до вирішення, мову самостійно приходить до деяких висновків. Тобто, ви описуєте не те, як треба вирішувати деяку задачу (як це робиться в переважній більшості інших мов), a лише ставите її перед Прологом, і він вже сам шукає рішення. Через незвичайності своєї структури він використовувався при вирішенні досить нестандартних завдань, тому виявився поширений не так широко, як інші мови.

Нарешті, третьою мовою символьної обробки, з появою якого в цю область були внесені цікаві ідеї, став мова РЕФАЛ, створений Ст. Турчиным. Подібно ЛИСП»у, ця мова активно використовує потужні засоби перетворення списків на основі концепції розпізнавання за образу.

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

Короткий опис статті: мови програмування засновник фірми Intel Роберт Нойс винайшов спосіб виготовлення мікросхем, застосування яких дозволило в сотні разів зменшити розміри обчислювальних машин, їх вартість, а також істотно підвищити їх надійність. З тих пір комп’ютери стали набувати все більшої популярності, кількість їх зростала, а значить, зростала й потреба в програмах і програмістах ІТ, Історія розвитку мов програмування

Джерело: Эволюция.com — Історія розвитку мов програмування

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