Хтось першим написав комп'ютерну мову. Історія створення мов програмування. Мови високого рівня: алгоритмічні мови

>> Статті

Як виникли мови програмування?

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

Історія мов програмування: Початок

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

Мови високого рівня: алгоритмічні мови

Розвиток технологій та впровадження нових типів цифрових пристроїв змусило програмістів винайти мову вищого рівня з орієнтиром написання алгоритмів. Так з'явилися додаткові програми-транслятори, які запускали дію алгоритму. Відомі два методи трансляції:

- Compilationабо компіляція, коли інструкції набувають активної дії після перекладу всього пакета програми;

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

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

Рік 1954: структурне програмування

Світ став відомий перший компілятор мови програмування дуже високого рівня. Йдеться про Fortran, від англійської абревіатури FORmula TRANslator. Розробка мови спростилася, але при складанні об'ємних програм мова ставала практично не читана, хоча і було випущено багато версій Fortran.

Пік розвитку мов програмування посідає саме 50-60-ті роки, тоді створюються кілька варіантів:

- Algol(1958), створений на основі відокремлених блоків;

- Cobol(1959 р.) - мова бізнесу та управління, основа С +;

- Basic(1965 р.), відомий програмістам до сьогодні.

У 1970 році створюється мова програмування, названа на честь вченого Б. Паскаля – Pascal. Створювані цією мовою програми читалися легко, не виникало складнощів і під час навчання. Проста, добре структурована мова як і раніше користується популярністю серед програмістів-початківців.

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

Об'єктно-орієнтоване програмування (ООП): 1970 рік

Ідеологія процедурного програмування для формально не пов'язаних у обробці функцій змусила розробників сісти за створення нової концепції складання мови. Основою понять ООП стали:

Модель об'єкта, якого ще немає;

Екземпляр класу;

Абстракція, надання характеристик об'єкту;

Інкапсуляція, коли поєднуються властивості та методи, переслідуючи мету приховування даних;

успадкування;

Поліморфізм.

Першою мовою був Сімула, трохи пізніше винайдений Smalltalk. Нині такий тип програмної мови підтримують сучасні програми: Object Pascal (Delphi), C++, C#, Java.

Послідовність розвитку мов програмування залежить від впровадження нових інновацій, так після появи Інтернету стала необхідна мова для доступу до ресурсів, сайтів. Технологія World Wide Web(WWW)дала життя новим мовам, які активно використовуються досі: Java, Perl, SQL, HTML, PHP, JavaScript.

Однією з найреволюційніших ідей, що призвели до створення автоматичних цифрових обчислювальних машин, була висловлена ​​в 20-х роках 19 століття Чарльзом Бебіджем думка про попередній запис порядку дії машини для подальшої автоматичної реалізації обчислень – програмі. І хоча використаний Бебіджем запис програми на перфокартах, придуманий для управління такими верстатами французьким винахідником Жозефом Марі Жаккаром, технічно не має нічого спільного з сучасними прийомами зберігання програм у ПК, принцип тут по суті один. З цього моменту розпочинається історія програмування.
Аду Левлейс, сучасника Бебіджа, називають першим у світі програмістом. Вона теоретично розробила деякі прийоми управління послідовністю обчислень, що використовуються у програмуванні і зараз. Нею була описана і одна з найважливіших конструкцій практично будь-якої сучасної мови програмування – цикл.

Революційним моментом історії мов програмування стала поява системи кодування машинних команд з допомогою спеціальних символів, запропонованої Джоном Моучлі. Система кодування, запропонована ним, надихнула одну із його співробітниць Грейс Мюррей Хоппер. Працюючи на комп'ютері «Марк-1», їй та її групі довелося зіткнутися з багатьма проблемами і все, що ними придумано, було вперше. Зокрема, вони вигадали підпрограми. І ще одне фундаментальне поняття техніки програмування вперше запровадили Хопер та її група – налагодження.
Наприкінці 40-х Дж. Моучлі створив систему під назвою «Short Code», яка була примітивною мовою програмування високого рівня. У ній програміст записував розв'язуване завдання у вигляді математичних формул, а потім, використовуючи спеціальну таблицю, переводив символ за символом, перетворював ці формули на дволітерні коди. Надалі спеціальна програма комп'ютера перетворювала ці коди на двійковий машинний код. Система, розроблена Дж. Моучлі, вважається одним із перших примітивних інтерпретаторів.

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

У 1954 році група під керівництвом Г. Хоппер розробила систему, що включає мову програмування та компілятор, яка надалі отримала назву Math-Matic. Після вдалого завершення робіт зі створення Math-Matic Хоппер та її група взялися за розробку нової мови та компілятора, який дозволив би користувачами програмувати мовою, близькою до звичайної англійської. У 1958 році з'явився компілятор Flow-Matic. Компілятор Flow-Matic був першою мовою для обробки комерційних даних.
Розробки у цьому напрямку призвели до створення мови Кобол (COBOL – Common Business Oriented Language). Він був створений у 1960 році. У цій мові порівняно з Фортраном і Алголом, слабше розвинені математичні засоби, проте добре розвинені засоби обробки текстів, організація виведення даних у формі необхідного документа. Він замислювався як основна мова для масової обробки даних у сферах управління та бізнесу.

Середина 50-х характеризується стрімким прогресом у сфері програмування. Роль програмування у машинних командах стала зменшуватися. Стали з'являтися мови програмування нового типу, які у ролі посередника між машинами і програмістами. Першим і одним із найпоширеніших був Фортран (FORTRAN, від FORmula TRANslator – перекладач формул), розроблений групою програмістів фірми IBM у 1954 році (перша версія). Ця мова була орієнтована на науково-технічні розрахунки математичного характеру і є класичною мовою програмування при вирішенні на ПК математичних та інженерних завдань.
Для перших мов програмування високого рівня предметна орієнтація була характерною рисою.
p align="justify"> Особливе місце серед мов програмування займає Алгол, перша версія якого з'явилася в 1958 році. Одним із розробників Алгола був «батько» Фортрана Джон Бекус. Назва мови ALGOrithmic Language підкреслює те, що він призначений для запису алгоритмів. Завдяки чіткій логічній структурі Алгол став стандартним засобом запису алгоритмів у науковій та технічній літературі.

У середині 60-х років Томас Курц та Джон Камені (співробітники математичного факультету Дартмунтського коледжу) створили спеціалізовану мову програмування, яка складалася з простих сліванглійської мови. Нову мову назвали «універсальним символічним кодом для початківців» (Beginner All-Purpose Symbolic Instruction Code, або, скорочено, BASIC). Роком народження нової мови можна вважати 1964. Сьогодні універсальна мова Бейсік (що має безліч версій) набула великої популярності і набула широкого поширення серед користувачів ПК різних категорій у всьому світі. Значно цьому сприяло те, що Бейсік почали використовувати як вбудовану мову. персональних комп'ютерів, широке поширення яких розпочалося наприкінці 70-х років. Однак Бейсік є неструктурною мовою, і тому він погано підходить для навчання якісному програмуванню. Заради справедливості слід зауважити, що останні версії Бейсика для ПК (наприклад, QBasic) стали структурнішими і за своїми образотворчими можливостями наближаються до таких мов, як Паскаль.

Розробники орієнтували мови на різні класи завдань, тією чи іншою мірою прив'язували їх до конкретної архітектури ПК, реалізовували особисті уподобання та ідеї. У 60-ті роки було зроблено спроби подолати цю «різноголоску» шляхом створення універсальної мови програмування. Першим дітищем цього напряму став PL/1 (Programm Language One), розроблений фірмою IBM у 1967 році. Ця мова претендувала на можливість вирішувати будь-які завдання: обчислювальні, обробки текстів, накопичення та пошуку інформації. Однак він виявився занадто складним, транслятор з нього недостатньо оптимальним і містив низку невиявлених помилок.
Проте лінію на універсалізацію мов було підтримано. Старі мови модернізували в універсальні варіанти: Алгол-68 (1968 р.), Фортран-77. Передбачалося, що подібні мови розвиватимуться і вдосконалюватимуться, витіснятимуть усі інші. Однак жодна з цих спроб не мала успіху.

Мова ЛІСП з'явилася 1965 року. Основним у ньому є поняття рекурсивно певних функцій. Оскільки доведено, що будь-який алгоритм може бути описаний за допомогою деякого набору рекурсивних функцій, то ЛІСП є універсальною мовою. З його допомогою ПК може моделювати досить складні процеси, зокрема інтелектуальну діяльність людей.
Пролог розроблено у Франції в 1972 році для вирішення проблем. штучного інтелекту». Пролог дозволяє у формальному вигляді описувати різні твердження, логіку міркувань та змушує ПК давати відповіді на задані питання.
Значною подією історії мов програмування стало створення 1971 року мови Паскаль. Його автор – швейцарський вчений Ніклаус Вірт. Вірт назвав його на честь великого французького математика і релігійного філософа XVII століття Блеза Паскаля, який винайшов перший підсумовуючий пристрій, саме тому нової мови було присвоєно його ім'я. Ця мова спочатку розроблялася як навчальна мова структурного програмування, і, справді, зараз вона є однією з основних мов навчання програмуванню у школах та вишах.

У 1975 році дві події стали віхами в історії програмування - Білл Гейтс і Пол Аллен заявили про себе, розробивши свою версію Бейсіка, а Вірт і Єнсен випустили класичний опис мови Pascal User Manual and Report.

Не менш вражаючою, у тому числі й фінансової, успіху досяг Філіп Кан, француз, який розробив у 1983 році систему Турбо-Паскаль. Суть його ідеї полягала у поєднанні послідовних етапів обробки програми – компіляції, редагування зв'язків, налагодження та діагностики помилок – в єдиному інтерфейсі. Турбо-Паскаль – це не тільки мова та транслятор з нього, але ще й операційна оболонка, що дозволяє користувачеві зручно працювати на Паскалі. Ця мова вийшла за рамки навчального призначення та стала мовою професійного програмування з універсальними можливостями. У силу названих переваг Паскаль став джерелом багатьох сучасних мов програмування. З того часу з'явилося кілька версій Турбо-Паскаля, остання – сьома.
Фірма Borland/Inprise завершила лінію продуктів Турбо-Паскаль та перейшла до випуску системи візуальної розробки для Windows – Delphi.

Великий відбиток на сучасне програмування наклав мову Сі (перша версія – 1972 рік), що є дуже популярною серед розробників систем програмного забезпечення (включаючи операційні системи). Ця мова створювалася як інструментальна мова для розробки операційних систем, трансляторів, баз даних та інших системних та прикладних програм. Сі поєднує у собі як риси мови високого рівня, і машинно-ориентированного мови, допускаючи програміста всім машинним ресурсам, чого забезпечують такі мови як Бейсик і Паскаль.
p align="justify"> Період з кінця 60-х до початку 80-х років характеризується бурхливим зростанням числа різних мов програмування, що супроводжував кризу програмного забезпечення. У січні 1975 року Пентагон вирішив навести лад у хаосі трансляторів і заснував комітет, якому було наказано розробити одну універсальну мову. У травні 1979 року було оголошено переможця – групу вчених на чолі з Жаном Іхбіа. Який переміг мову охрестили Ада, на честь Огасти Ади Левлейс. Ця мова призначена для створення та тривалого (багаторічного) супроводу великих програмних систем, допускає можливість паралельної обробки, управління процесами в реальному часі.

Протягом багатьох років програмне забезпечення будувалося на основі операційних та процедурних мов, таких як Фортран, Бейсік, Паскаль, Ада, Сі. У міру еволюції мов програмування набули широкого поширення та інші, принципово інші, підходи до створення програм.
Існує велика кількістькласифікацій мов програмування за різними ознаками Найбільш поширеними є такі класифікації:
 мови програмування високого (Паскаль, Бейсік) та низького рівня (Ассемблер);
 строго типізовані (Паскаль) та нестрого типізовані (Бейсік);
 з підтримкою об'єктно-орієнтованого програмування (Сі++) і без тощо.

Розглянемо іншу класифікацію. Мови програмування поділяються на:
1) Машинно-орієнтовані мови:
 машинні мови;
 мови символічного кодування;
 автокоди;
 макрос.
2) Машинно-незалежні мови:
 проблемно-орієнтовані мови;
 універсальні мови;
 діалогові мови;
 непроцедурні мови.

Машинно-орієнтовані мови

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

Машинна мова

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

Мови Символічного Кодування

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

Автокоди

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

У різних програмах зустрічаються деякі команди, що досить часто використовуються, послідовності, які відповідають певним процедурам перетворення інформації. Ефективна реалізація таких процедур забезпечується оформленням їх у вигляді спеціальних макрокоманд і включенням останніх у мову програмування, доступну програмісту. Макрокоманди переводяться в машинні команди двома шляхами - розстановкою та генеруванням. У постановочній системі містяться «кістяки» - серії команд, що реалізують необхідну функцію, позначену макрокомандою. Макрокоманди забезпечують передачу фактичних параметрів, які в процесі трансляції вставляються в «кісток» програми, перетворюючи її на реальну машинну програму.
У системі з генерацією є спеціальні програми, що аналізують макрокоманду, які визначають, яку функцію необхідно виконати та формують необхідну послідовність команд, що реалізують цю функцію.
Обидві вказані системи використовують транслятори з ЯСК та набір макрокоманд, які також є операторами автокоду.
Розвинені автокоди отримали назву асемблери. Сервісні програми та ін., як правило, складені мовами типу асемблер.

Макрос

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

Машинно-незалежні мови

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

Проблемно-орієнтовані мови

З розширенням областей застосування обчислювальної техніки виникла потреба формалізувати подання постановки та розв'язання нових класів завдань. Необхідно було створити такі мови програмування, які, використовуючи у сфері позначення і термінологію, дозволили б описувати необхідні алгоритми рішення поставлених завдань, ними стали проблемно-ориентированные мови. Ці мови орієнтовані на вирішення певних проблем, повинні забезпечити програміста засобами, що дозволяють коротко і чітко формулювати завдання та отримувати результати у потрібній формі.
Проблемних мов дуже багато, наприклад:
- Фортран, Алгол – мови, створені для вирішення математичних завдань;
- Simula, Сленг – для моделювання;
- Лісп, Снобол – до роботи з списковими структурами.

Універсальні мови

Універсальні мови були створені для широкого кола завдань: комерційних, наукових, моделювання і т. д. Першу універсальну мову було розроблено фірмою IBM, що стала послідовністю мов PL/1. Друга за потужністю універсальна мова називається Алгол-68.

Діалогові мови

Поява нових технічних можливостей поставила завдання перед системними програмістами – створити програмні засоби, Що забезпечують оперативну взаємодію людини з ПК їх назвали діалоговими мовами
Ці роботи велися у двох напрямках. Створювалися спеціальні керуючі мови для забезпечення оперативного впливу на проходження завдань, які складалися будь-якими раніше нерозробленими (не діалоговими) мовами. Розроблялися також мови, які, крім цілей управління, забезпечували б опис алгоритмів розв'язання задач.
Необхідність забезпечення оперативної взаємодії з користувачем вимагає збереження в пам'яті ЕОМ копії вихідної програми навіть після отримання об'єктної програми в машинних кодах. При внесенні змін до програми з використанням діалогової мови система програмування за допомогою спеціальних таблиць встановлює взаємозв'язок структур вихідної та об'єктної програм. Це дозволяє здійснити потрібні редакційні зміни в об'єктній програмі.
Одним із прикладів діалогових мов є Бейсік.

Непроцедурні мови

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

Історія створення мови програмування Basic та Visual Basic

Мова програмування Basic була створена в 1964 році двома професорами з Dartmouth College - Джоном Кенемі та Томасом Куртцом для навчання студентів навичкам програмування. Мова вийшла настільки простою і зрозумілою, що через деякий час її почали застосовувати і в інших навчальних закладах. У 1975 році, з приходом перших мікрокомп'ютерів, естафету Basic прийняли Білл Гейтс і Пол Аллен, засновники Microsoft. Саме вони створили нову версію Basic для перших комп'ютерів Альтаїр (MITS Altairs), здатну працювати в 4КБ оперативної пам'яті. Згодом саме ця версія і перетворилася на одну з найпопулярніших мов програмування у світі. На шляху до вершини слави у Basic було безліч труднощів, які він завжди з честю долав, і коли з'явилися перші персональні комп'ютери IBM PC, він став стандартом у програмуванні, але вже у вигляді GW-Basic. Потім був Turbo Basic, QuickBasic, Basic PDS, але завжди при розробці нової версії мови зберігалася сумісність з колишніми версіями і програма, написана практично для першого Basic, цілком (з незначними змінами) могла б працювати і в наступних версіях цієї мови. Але настали нові часи і на початку 90-х з'являється операційна система Microsoft Windows з новим графічним інтерфейсом користувача (GUI).

Життя програмістів перетворилося на пекло. Щоб створити просту програму, доводилося писати кілька сторінок коду: створювати меню та вікна, змінювати шрифти, очищати пам'ять, "малювати" кнопки тощо. Однак переваги нового інтерфейсу були настільки незаперечними, що вже третя версія цієї операційної системистала фактичним стандартом персонального комп'ютера. У цей час у надрах Microsoft велося кілька паралельних проектів створення нової мови програмування для Windows. І в 1991 році під гаслом "тепер і програмісти-початківці можуть легко створювати програми для Windows" з'явилася перша версія нового інструментального засобу Microsoft Visual Basic. У той момент Microsoft досить скромно оцінювала можливості цієї системи, орієнтуючи її насамперед на категорію початківців і непрофесійних програмістів. Основним завданням тоді було випустити на ринок простий і зручний інструмент розробки тоді ще досить нової середовищі Windows, Програмування в якій представляло проблему і для досвідчених фахівців. Система програмування, створена розробниками Visual Basic, дозволяла "усунути" від складної внутрішньої структури Windows і створювати програми з "кубиків", як у дитячому конструкторі. Меню, вікна, списки, кнопки, поля введення тексту та інші елементи інтерфейсу Windows додавалися до програми за допомогою найпростіших операцій drag&drop.

Свою першу програму VB-програмісти створювали вже за кілька хвилин після початку вивчення цієї мови! Більше того, Visual Basic дозволяв розробникам створювати нові об'єкти-кубики, які також могли використовуватися в програмах нарівні зі стандартними. І хоча багато С-програмістів тихо посміювалися над спробами Microsoft зробити простий і зрозумілий інструмент розробки Windows-програм, Visual Basic почав свою переможну ходу світом, і ніщо не могло зупинити цей процес. Останні бар'єри впали 1994 року з випуском Visual Basic for Applications. Саме в цей час, після включення VBA до складу Microsoft Office, Basic починає перетворюватися на один з основних стандартів програмування для Windows. Для фірми Microsoft мова Basic має особливе значення, свого часу розробка варіанта Basic для комп'ютера Altair 8800 започаткувала трудовий програмістський шлях її засновників, Білла Гейтса і Пола Аллена. Тому свого часу - в 1989 році, коли настав час розподілити основні напрямки створення середовищ розробки на різних мовах програмування між різними фірмами, Microsoft залишила за собою QuickBasic - середовище розробки програм на Basic'і, відмовившись, наприклад, від подальшої роботи над мовою програмування Pascal, залишивши його фірмі Borland, яка, у свою чергу, зупинила роботи над своєю версією "Basic" (згодом Pascal став мовою Delphi).

Visual Basic від Microsoft, що спочатку замислювався як іграшка, неймовірно швидко завоював програмістський світ. Його популярність обумовлена ​​двома причинами: відносною простотою та продуктивністю. Програми на VB працюють повільніше своїх аналогів на C/C++, але все ж таки вони досить швидкі для багатьох ділових цілей і вимагають набагато менше часу на розробку. Форми були тією абстракцією, що заощаджує зусилля, яку запропонував VB програмістам Windows. IDE VB дозволила розробляти вікна графічно, перетягуючи елементи керування, такі як кнопки та списки, з панелі інструментів у форму. Отримавши задовільний зовнішній виглядформи, можна було переходити до кодової частини та писати обробники подій для кожного елемента управління форми.

Розробка програми в VB, таким чином, складалася зі створення декількох форм, які спілкувалися один з одним і, можливо, зверталися до бази даних за необхідною інформацією. У результаті форма виявилася вікном, яке пропонувало використовувати віконні методи набагато зручнішим способом. VB зменшив кількість помилок шляхом видалення деяких прихованих елементів синтаксису C/C++. Крім спеціальних випадків, вирази обмежувалися одним рядком коду, а змінні мали оголошуватися та ініціалізуватися в окремих рядках коду. Оператори присвоєння та порівняння використовували один і той самий символ, проте граматика VB вимагала, щоб ці оператори застосовувалися таким чином, щоб їхні наміри були чітко позначені.

Можливо, найважливішим було те, що були вказівники - вимога Білла Гейтса, починаючи з перших версій Microsoft BASIC. Хоча покажчики корисні, оскільки дозволяють прямий доступом до пам'яті за будь-якою адресою, їх використання пов'язані з помилками у разі, якщо вони застосовуються неакуратно. Вимога граматичної простоти BASIC походить від того факту, що спочатку вона була створена як мова для навчання: "Beginner"s All-purpose Symbolic Instructional Code" (Багатоцільовий символьний командний код для початківців). VB версії 6 - це вже потужна мова, яку можна використовувати для створення розподілених додатків із застосуванням компонентів СОМ і Microsoft Transaction Server.Microsoft запропонувала трирівневий підхід для архітектур "клієнт-сервер", в якому "тонкі" інтерфейси користувача взаємодіяли з віддаленими компонентами VB для отримання даних з бази даних або з іншої машини.

За допомогою VBScript та VBA (VB для програм) можна писати сценарії для веб-браузерів і автоматизувати програми Microsoft Office. Більш того, VB6 можна використовувати для створення елементів керування Active-X, що працюють разом з Internet Explorer, хоча це робиться вкрай рідко, оскільки потрібно, щоб на машині клієнта, що працює в Інтернеті, було встановлено бібліотеку часу виконання DLL VB. Починаючи з VB5, програми VB компілювалися в машинний код, але вони були засновані на застосуванні DLL, що надає функції, що повсюдно використовуються і реалізує об'єктні можливості VB. Цікаво, що компілятор VB для трансляції використовує багатопрохідний режим, а в кінцевому рахунку покладається на компілятор Microsoft C++ для отримання вихідного машинного коду після компіляції в проміжну мову. У цьому вся властивості VB - використання бібліотеки часу виконання і внутрішнього інтерфейсу C++ - видно зародки.NET.

Історія створення мови програмування C#

Мова C# з'явилася на світ у червні 2000 р. внаслідок копіткої роботи великої групи розробників компанії Microsoft, очолюваної Андерсом Хейлсбергом (Anders Hejlsberg). Ця людина відома як автор однієї з перших компілюваних мов програмування для персональних комп'ютерів IBM - Turbo Pascal. Напевно, на території колишнього Радянського Союзу багато розробників зі стажем, та й просто люди, які навчалися в тій чи іншій формі програмування у вузах, зазнали чарівності та зручності використання цього продукту. Крім того, під час роботи в корпорації Borland Андерс Хейлсберг уславився створенням інтегрованого середовища Delphi (він керував цим проектом аж до виходу версії 4.0).
Поява мови C# та ініціативи.NET аж ніяк не випадково припала на початок літа 2000 р. Саме до цього моменту компанія Microsoft підготувала промислові версії нових компонентних технологій та рішень у галузі обміну повідомленнями та даними, а також створення Internet-додатків (COM+, ASP+, ADO+ , SOAP, Biztalk Framework). Безперечно, найкращим способом просування цих новинок є створення інструментарію для розробників з їхньою повноцінною підтримкою. У цьому полягає одне з головних завдань нової мови C#. Крім того, Microsoft не могла більше розширювати ті самі інструменти та мови розробки, роблячи їх все більш і більш складними для задоволення конфліктуючих між собою вимог підтримки сучасного обладнання та забезпечення зворотної сумісності з тими продуктами, які були створені на початку 1990-х років. під час першої появи Windows. Настає момент, коли необхідно почати з чистого аркуша для того, щоб створити простий, але набір мов, середовищ і засобів розробки, які мають складну структуру, які дозволять розробнику легко створювати сучасні програмні продукти.

С# і.NET є тією відправною точкою. Якщо говорити спрощено, то.NET являє собою нову платформу, новий API для програмування в Windows, а С#е нова мова, створена з нуля, для роботи з цією платформою, а також для отримання всіх вигод із прогресу середовищ розробки та нашого розуміння принципів об'єктно-орієнтованого програмування протягом останніх 20 років.
Слід зазначити, що зворотна сумісність не втрачено. Існуючі програми виконуватимуться, а платформа.NET була спроектована таким чином, щоб вона могла працювати з наявним. програмним забезпеченням. Зв'язок між компонентами в Windows зараз майже повністю здійснюється за допомогою СОМ. З урахуванням цього. .

Автори C# прагнули створити мову, що поєднує простоту та виразність сучасних об'єктно-орієнтованих мов (на кшталт Java) з багатством можливостей та потужністю C++. За словами Андерса Хейлсберга, C# запозичив більшість своїх синтаксичних конструкцій із C++. Зокрема, у ньому є такі зручні типи даних, як структури і перерахування (інший нащадок C++ -- Java -- позбавлений цих елементів, що створює певні незручності під час програмування). Синтаксичні конструкції С# успадковані як від C++, а й від Visual Basic. Наприклад, С#, як і Visual Basic, використовуються властивості класів. Як C++, С# дозволяє перевантажувати операторів для створених вами типів Java не підтримує ні ту, ні іншу можливість). С# - це власне гібрид різних мов. При цьому С# синтаксично не менше (якщо не більше) чистий, ніж Java, так само простий, як Visual Basic, і має практично ту ж потужність і гнучкість, що і C++.

Особливості С#:

Повний та добре визначений набір основних типів.
- Вбудована підтримка автоматичного створення XML-документації. Автоматичне звільнення динамічно розподіленої пам'яті.
- Можливість позначки класів та методів атрибутами, що визначаються користувачем. Це може бути корисним при документуванні та здатним впливати на процес компіляції (наприклад, можна помітити методи, які повинні компілюватися тільки в режимі налагодження).
- Повний доступдо бібліотеки базових класів.NET, а також легкий доступ до Windows API (якщо це дійсно потрібно).
- Вказівники та прямий доступ до пам'яті, якщо вони необхідні. Однак мова розроблена таким чином, що практично завжди можна обійтися і без цього.
- Підтримка властивостей та подій у стилі VB.
- Просте зміна ключів компіляції. Дозволяє отримувати файли або бібліотеки компонентів.NET, які виконуються, які можуть бути викликані іншим кодом так само, як елементи керування ActiveX (компоненти СОМ).
- Можливість використання C# для написання динамічних web-сторінок ASP.NET.

Однією з областей, для яких не призначена ця мова, є критичні за часом та високопродуктивні програми, коли має значення займати виконання циклу 1000 або 1050 машинних циклів, і звільняти ресурси потрібно негайно. C++ залишається у цій галузі найкращим із мов низького рівня. У С# відсутні деякі ключові моменти, необхідні створення високопродуктивних додатків, зокрема підставлювані функції і деструктори, виконання яких гарантується певних точках коду. Також ця мова активно використовується для створення сучасних відеоігор, наприклад, гра Battlefield 3 частково написана на C#, і повністю на технології.NET

Початок розвитку

Мова асемблера

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

Але навіть робота з асемблером досить складна і потребує спеціальної підготовки.

Наприклад, для процесора Zilog Z80 машинна команда 00000101 наказує процесору зменшити на одиницю свій регістр B . На мові асемблера це буде записано як DEC B .

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

Наступний крок був зроблений у 1954 році, коли була створена перша мова високого рівня – Фортран (англ. FORTRAN - FORmula TRANslator). Мови високого рівня імітують природні мови, використовуючи деякі слова розмовної мови та загальноприйняті математичні символи. Ці мови більш зручні для людини, за допомогою них можна писати програми до декількох тисяч рядків завдовжки. Однак легко розуміється в коротких програмах, ця мова ставала нечитаною і важко керованою, коли справа стосувалася великих програм. Вирішення цієї проблеми прийшло після винаходу мов структурного програмування (англ. structured programming language ), таких як Алгол (1958), Паскаль (1970), Сі (1972).

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

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

Також створювалися функціональні(аплікативні) мови (Приклад: Lisp – англ. LISt Processing, 1958) та логічнімови (приклад: Prolog – англ. PROgramming in LOGic, 1972).

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

ООП

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

Прикладом об'єктно-орієнтованих мов є: Object Pascal, C++,

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

Посилання

  • Історія програмування та обчислювальної техніки

Wikimedia Foundation. 2010 .

Дивитись що таке "Коротка історія розвитку мов програмування" в інших словниках:

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

    Ruby Семантика: мультипарадигмальний Тип виконання: інтерпретатор З'явився в: 1995 р. Автор(и): Юкіхіро Мацумото остання версія: 1.9.1 … Вікіпедія

    Ruby Семантика: мультипарадигмальний Тип виконання: інтерпретатор З'явився в: 1995 р. Автор(и): Юкіхіро Мацумото Остання версія: 1.9.1 … Вікіпедія - (Айкакан Радякан Соціалістакан Анрапетутюн) Вірменія (Айастан Країна вірмен). I. Загальні відомостіВірменська РСР утворена 29 листопада 1920 року. З 12 березня 1922 року по 5 грудня 1936 року входила до складу Закавказької федерації (Див. … …).

    - (Летувос Тарібу Соціалісті Республіка) Литва (Летува). I. Загальні відомості Литовська РСР утворена 21 липня 1940 року. З 3 серпня 1940 року у складі СРСР. Розташована на З. Європейської частини СРСР. Межує на С. с. Велика Радянська Енциклопедія

    Приклад Бурана ОК ГЛІ (БТС 002) для тестування в атмосфері. Авіа космічний салон МАКС, 1999 … Вікіпедія

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

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

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

Вузконаправлені мови

Через збільшення сфер використання ЕОМз'явилися й інші мови окремих розробок у нових сферах:

  • економічний напрямок залишалося незайнятим до появи Кобол;
  • Снобол – обробляє алгоритми, пов'язані з текстами;
  • Лісп. Працює на підставі алгоритмів відпрацювання символів. Активно використовують для формування штучного інтелекту.

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

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

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

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

Створення мови C

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

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

Пролог та Ада

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

Тільки в 80-х роках була розроблена мова Ада. Він розширює класичне розуміння та властивості мов того періоду. Ада могла вирішувати завдання у режимі реального часу та моделювати незалежні рішення.

Класифікація

Сьогодні розроблені класифікації мов за рівнем роботи, цей розподіл найпоширеніший. Виділяють 3 основні рівні:

  1. Низький.Сюди відносяться різні машинні мови або різновиди із символічним кодуванням типу Асемблераі Автокода. За основу взято операторів машинних команд, тільки розроблено з прив'язкою до мнемонічного коду. Операндами є не точні адреси, а символьне позначення імен. Усі моделі розроблені для окремих різновидів ПК, Вони є машинно-залежними. У таких мовах відзначається сильна залежність мови від внутрішніх особливостей системи;
  2. Висока.Мови зустрічаються набагато частіше, вони зручніші у використанні. До них зараховуються: Алгол, С, Пролог, Паскаль, Бейсік, Фортран та інші. Перелічені мови не мають жорсткої залежності від машини, адже вони ґрунтуються на можливостях системи операндів, які подібні до класових алгоритмів. Недоліками високого рівня є велика ресурсоємність та повільне виконання;
  3. Надвисокий.Представників мов вкрай мало, лише APL та Алгол-68. Їх вважають надвисокого рівня через розробку надпотужних операторів.

Відповідно до іншої класифікації мови поділяються на:

  • символьні- Пролог, Лісп та Снобол;
  • обчислювальні- Паскаль, С, Алгол, Бейсік, Фортран.

Напрями розвитку

Інформатика в сучасному світі розвивається у 3 ключових напрямках:

  1. Процедурневиникло період активного розвитку комп'ютерів та інших обчислювальних пристроїв, з тих пір широко використовується. У процедурних напрямках присутні виражені описи дій, необхідні виконання. Для отримання результату завжди проводиться певна процедура, що є різними послідовностями маніпуляцій. Процедурні мови додатково поділяються на:
    • Структурні.Вони використовується один оператор для записи цілісних алгоритмом: циклів, функцію, розгалужень та іншого. Більш відомі: Паскаль, Ада та С.
    • Операційні.Застосовують кілька різних процесів. Серед найвідоміших різновидів: Фокал, Фортран та Бейсік.
  2. Непроцедурні.Мови програмування мають декларативну структуру, поява якої посідає 70-ті роки. Найактивніше почали розвиватися у 80-х роках після появи проекту формування 5 покоління ЕОМ. Основне завдання – створення можливостей для побудови високоінтелектуальних машин. Вони також поділяються на:
    • функціональні.Програма виконує обчислення певної функції, яка бере за основу інші відносно прості алгоритми та простіші завдання. В основі функціонального напрямку використовується основний елемент – рекурсія. Вона має на увазі розрахунок значень функції за допомогою залучення її в інших елементах. У мові відсутні цикли та методика присвоювання значень.
    • Логічні.Програма зовсім не вимагає опису дій, її основу складають співвідношення даних та їх значення. Тільки після розрахунку можна отримувати відповіді на запитання. Після перебирання відомих параметрів виводиться відповідь. У програмі відсутній метод або порядок виявлення відповіді, він неявно встановлюється мовою. Яскравим представником є ​​Пролог. З напряму повністю усунуто алгоритмічне мислення, лише статичні відносини між об'єктами, а вся динаміка прихована від розробника та зводиться до перебору даних.
  3. Об'єктно-орієнтовані мови, всі вони є різновидом високого рівня програмування. Подібні мови не потребують опису точної послідовності маніпуляцій для отримання результату завдання, але окремі компоненти процедурного спрямування присутні. Користувачам значно простіше працювати з такими мовами, оскільки вони мають доступний і багатий інтерфейс. Найкращим прикладом такого напряму з візуальним спілкуванням є Object Pascal.

Існують мови для написання сценаріїв, відомими є Rexx, Tcl, Perl та Python, а також мови оболонок систем Unix Вони розробляють індивідуальний стиль написання коду, який відрізняється від відомого принципу системного рівня програмування. Вони не використовуються для створення програм на нижньому рівні, скоріше для комбінування різних компонентів різних мов, з яких складається набір окремих функцій.

Найактивніше почали розвиватися в міру поширення інтернету, від чого стали широко застосовуватися мови сценаріїв. Для створення сценаріїв найчастіше застосовується Perl, а для Web-частиникористується популярністю JavaScript.

Цим текстом хочу розпочати цикл статей про історію розвитку мов програмування. Він є адаптованою версією цієї збірки.

Програмування виникло задовго до 50-х років ХХ століття. Перші ідеї висловив ще Чарльз Бебідж (1792-1871), якого по праву вважають батьком комп'ютера. Він не знав про транзисторів, мікросхем і моніторів, але досить точно описав основні принципи, на яких будуть будуватися всі обчислювальні машини. Розвинула ідею графиня Ада Лавлейс (1815–1852). Її місце в історії до цих пір викликає чимало суперечок, але одне абсолютно точно – саме Ада фактично стала першим відомим програмістом. Завдяки її працям стало зрозуміло, що шлях до ефективного використання машин – алгоритми, описані у коді.

Аналітична машина Беббіджа

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

Суть проблеми

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

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

01 x y – додавання вмісту комірки пам'яті y до комірки x;

02 x y – аналогічна процедура з відніманням.

У результаті код програми перетворювався на нескінченну низку цифр:

01 10 15 02 11 29 01 10 11…

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


Комп'ютер 1940-х років

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

Перший збирач

Рішення лежало на поверхні: необхідно перевести цифрові позначення операцій на літери. Тобто замість "01 10 15" використовувати "ADD 10 15". Це вимагало додаткового переведення символів у машинну команду, але з огляду на проблему жертва була мінімальна.

Рішення виявилося настільки очевидним, що достеменно невідомо, хто першим винайшов мову Асемблера. Найімовірніше, він з'явився одночасно одразу в кількох місцях. За назву та популяризацію відповідальними прийнято вважати авторів книги The preparation of programs for digital computer Вілкса, Вілера та Гілла. Неважко здогадатися, що назва Ассемблер походить від англійського слова assemble - збирати, монтувати, що точно описує процес. Пізніше символи стали стосуватися не тільки найпростіших операцій, а й адресації, що значно спростило читання коду.

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

  • Появі поняття символьна змінна або просто змінна.
  • Створення таблиць, за допомогою яких можна знайти відповідність символів, операцій і осередків пам'яті.
  • Розуміння, що програмування може стати мистецтвом.

Це стало каталізатором мовного прориву.

Компілятори та упередження

Асемблер дозволив створити прості перетворення. Наприклад, переклад 01 ADD. Макроассемблер розширив цю ідею і подарував програмістам можливість згортати кілька інструкцій в одну. Наприклад, якщо в програмі ви постійно додавали значення в комірку пам'яті і перевіряли, чи не переповнена вона, все це можна було записати в макрос INCRT і використовувати його, змінюючи лише змінні. По суті, макроассемблери перетворилися на перші мови високого рівня.

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

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

Проте компілятор став єдиним виходом із ситуації, але тут виявилася інша трудноща – арифметичні висловлювання. Їхнє виконання не збігається з тим, як машина читає код. Зі шкільного курсу ми знаємо порядок обчислень у виразі «2+3*5», але машина читає код в одному напрямку, тому відповідь буде невірною. Так, зазначений приклад можна вирішити, створивши макрос, але для складних виразів рівня «(2 + 3 * 5 + 4/6) * 10 + 16 - (14 + 15) * 8» був потрібен принципово інший підхід.

Епоха нової формації

Знайти алгоритм аналізу стека вдалося Джону Бекусу, творцю Фортрана. Він почав працювати над ним у 1954 році і йому знадобилося майже 5 років, щоб довести право мов високого рівня існування. Повна назва Фортрана – IBM Formula Translating System, або FORmula TRANslator. Незважаючи на 60-річний вік, він залишається однією з найпопулярніших мов програмування та неймовірно затребуваний у Data Science. За цей час ми бачили безліч версій: Fortran 1, II, 66, 77, 90, 95, 2008, а наступного року вийде ще одна (планувався Fortran 2015, але через затримки назва може змінитись на 2018). Саме у Фортрані вперше було одночасно реалізовано багато атрибутів мови високого рівня, серед яких:

  • арифметичні та логічні вирази;
  • цикл DO (рання форма циклу FOR);
  • умовний оператор IF;
  • підпрограми;
  • масиви.

Ще однією важливою спадщиною Фортрана, про яку навіть не здогадуються сучасні програмісти, є використання обмежень для змінних цілих чисел. Всі вони повинні були починатися з одного з шести символів I, J, K, L, M, N (походить від I-Nteger). Саме звідси взялася звичка для перерахувань брати змінні i, j тощо.


IBM 704 – машина, на якій було створено Fortran

При цьому Фортран залишався мовою, наближеною до машин. Наприклад, там існувало таке:

If (вираз) doneg, dozero, dopos

Причиною була архітектура комп'ютера IBM, яка була потрібна команда для використання потрібного регістру: негативного, нульового або позитивного. Близькість до машин виявлялася і у відомій команді GOTO (пізніше вона була успадкована Basic), що означав прямий перехід до тієї чи іншої команди.

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

Мови для кожного

Fortran 1 був науковою мовою, в його основі лежали операції з комплексними числами та з плаваючою комою. Він навіть не вмів обробляти текст, для цього доводилося перетворювати його на спеціальні коди. Тому Фортран виявився непридатним для бізнесу, де спеціально створено мову Cobol.

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

Move Income To Total Subtract Expenses

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

Наступною фундаментальною мовою став Algol (ALGOrithmic Language), призначений для наукових звітів та публікацій. У ньому вперше з'явилися природні для нас речі:

  • відмінності між присвоєнням:= та логічною рівністю =;
  • використання циклу for з трьома аргументами: початкове значення, межа, крок;
  • блокова структура програм, укладена між begin та end, це виключило необхідність застосування GOTO.

Саме з Алгол відбулися C, C++, C#, Java та багато інших популярних сьогодні мов.

Четвертим китом 1950-х став Лісп (LISt Processing language), розроблений спеціально обслуговування штучного інтелекту. Головною його особливістю стала робота не з імперативними даними, а з функціями. Для цього Джону Маккарті довелося передбачити безліч механізмів нормальної роботиКабіна: динамічну типізацію, автоматичний розподіл пам'яті, збирач сміття. Зрештою, саме Лісп став прабатьком таких мов, як Python і Ruby, а сам досі активно застосовується в ІІ.

Таким чином, 1950-і змінили спосіб мислення програмістів, подарували чотири фундаментальні мови та поставили світ на рейки комп'ютерної революції.
Наступного разу поговоримо про те, як розвивалися мови та світ програмування у 1960-ті.

Сподобалася стаття? Поділіться з друзями!