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

Ada (Ада)

Мова Adaбув розроблений за підтримки Міноборони США в 1978 році в результаті конкурсу на якому виграла група програмістів компанії Honeywell. Названий по імені першої жінки програмістки Ади Лавлейс. Кінцева специфікація розроблена до 1983 року. Поза військових проектів мову широкого поширення не отримав.

Мова виникла в результаті міжнародного конкурсу мовних проектів. Він повинен був відповідати всім вимогам міністерства оборони США. Цікаво, що всі мови, які дійшли до останніх турів цього конкурсу, були засновані на Паскалі. У зв'язку з цим Аду можна попередньо охарактеризувати як розвинений Паскаль. Кінцева специфікація розроблена до 1983 року. Поза військових проектів мову широкого поширення не отримав.

Assembler (Асемблер)

Мова асемблера люди почали використовувати з 1950 року. Ця мова першим дозволив відображати двійковий код в більш зручній для людини формі: у вигляді букв або укорочених слів, які приблизно позначали сутність команди. Вміючи розбиратися в роздруківці асемблера, можна знаходити помилки в програмах створених навіть за допомогою інших мов. В даний момент у кожного з нас вдома стоять багато «інтерпретаторів асемблера» - менюшки в телевізорах, програми стиралок розроблені найчастіше саме на ньому. (Хоча програмісти-ледарі пишуть програми для мікроконтролерів і на C). Крім того, на асемблері написані драйвери пристроїв, бібліотеки і функції програм, написаних навіть на інших мовах.
Крім того, на асемблері створюються цілі операційні системи, прикладом може стати Menuet OS.

Algol (Алгол)

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

Basic (Бейсік) і VBScript

Інтерпретаційний мову Бейсік розроблений в 1960 році спочатку призначався саме для новачків, про що свідчить навіть його назву - Beginner's All-purpose Symbolic Instruction Code (багатоцільовий символьний код для початківців). Ця мова вважається найпростішим мовою високого рівня. Погана підтримка процедурного програмування зробила його невідповідним для великих проектів, але зате здатним створити невеликі програми за лічені хвилини. Невеликий розмір інтерпретатора визначив мову як вбудовується в багато 8-розрядні ПЗП комп'ютери і комп'ютери минулих поколінь. (Автору статті доводилося писати програми на такому Basic'е)

Включень версії Quick Basic до складу Ms-Dos проклало для нього непогану дорогу розвитку і зараз його версії ( Visual Basic, VBA ...) є одними з найпопулярніших середовищ для написання програм.

Основними проблемами програмістів використовують VB є відсутність нормальної довідки (популярна, укорочена версія йде без MSDN) і необхідність «носити» за програмою бібліотеки, тому що об'єкти, що використовуються в програмах (кнопки, ськролли, мітки ...) вимагають бібліотек, які є не на всіх комп'ютерах.

Саме Basic зробив програмування більш доступним для більшості людей.
На бейсике часто пишуть ... віруси, віруси для Microsoft Office. Включення VBA (Visual Basic for Application) в офісний пакетзумовило написання на ньому не тільки макросів, а й вірусняк.

Ідея появи мови VBScript полягала в поданні розробникам Web- сторінок можливості використання звичних команд VB поряд з тегами HTML, що дозволило розробляти потужні і багаті сторінки. VBScript завантажується у вигляді ASCII-тексту і не має прав роботи з файлової системоюклієнта, таким образів повністю убезпечивши користувача.

Слабка підтримка браузерами цієї мови, «сприяє» його повільного розвитку, а після випуску VS2003, практично і смерті ... (починаючи с.NET Microsoft-івської Basic де-факто став обгорткою, що відрізняється від C # тільки синтаксисом, втративши більшість своїх переваг (наприклад модифікацію коду «на льоту»))

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

C (Сі)

Мова програмування Сі був розроблений в 1972 році Деннісом Рітчі, в компанії Bell Laboratories. Назва походить від номера проекту лабораторії ( "A", "B", C "...). Спочатку ця мова замислювався як проміжний між мовами високого і низького рівнів, але продуктивність і компактність коду + переваги структурного мови, незважаючи на складність навчання зробили Сі найпопулярнішою мовою.

У 1980 році компанія випускає нову мовупобудований на основі С - С ++. За словами розробника, Бьярн Страуструпа він повинен «докорити написання хороших програмі зробити цей процес найбільш приємним для кожного окремо взятого програміста ». Назва С ++ було придумано замість початкового «C з класами».

У наш час ця мова найбільш популярний і універсальний, що доводить створення саме на ній всесвітньої Осі - Windows.
Зараз Сі вважається основою для розробки сучасних великих і складних проектів. Звичайно, як і у всього існуючого в природі, у нього є і слабкі сторони, що випливають з вимог ефективності.
Крім «Вікон» на Сі написані такі відомі програми як Outlook, Opera, 1C.

Cobol (Кобол)

«Прийнятий мову, орієнтований на бізнес», саме так розшифровується назва Кобола (Common Business Oriented Language). Тут з'явилися способи обробки провісників сучасних баз даних використовуваних на підприємствах і фірмах. Незважаючи на свій досить складний синтаксис кобол досить довго використовувався в економіці і бізнесі, лише недавно поступившись місцем таким системам програмування БД як SQL і FoxPro.

Fortran (Фортран)

Фортран - найперший компілює мову програмування, базові принципи і поняття якого лягли в основу багатьох сучасних мов програмування високого рівня. Розроблений в 1954-1958 рр Джимом Бекуса, він призначений для складних науково-технічних досліджень, досить швидко став популярним серед інженерів і вчених і досі використовується, хоча вже й не в таких широких колах. Назва походить від словосполучення «транслятор формул». Стандарти мови чітко визначені, їх всього чотири: fortran 66, fortran 77, fortran 90 і fortran 95

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

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

Java і JavaScript

Створена компанією Sun Microsystems система розробки Java безпечна і високопродуктивна. Java - об'єктно-орієнтована мова, зручний і надійний в експлуатації завдяки таким своїм перевагам, як багатозадачність, підтримка протоколів Internet і многоплатформенность. Java - це мова, що інтерпретується, і кожна Java-програма компілюється для гіпотетичної машини, званої Віртуальна машина Java. Результатом такої компіляції є байт-код Java, який в свою чергу може виконуватися на будь-якій операційній системі за умови наявності там системи часу виконання Java, яка інтерпретує байт-код в реальний машинний код конкретної системи.

Мова Java є об'єктно-орієнтованим і поставляється з досить об'ємною бібліотекою класів. Бібліотеки класів Java значно спрощують розробку додатків, надаючи в розпорядження програміста потужні засоби вирішення поширених завдань.
На Java написаний движок відомого емулятора «Іл-2: Штурмовик».

Для створення компільованих аплетів компанія Netscape розробила мову JavaScript, який був впроваджений в всесвітньо відомий браузер компаніі.Первоначальное назва - LiveScript, яке пізніше ізменілоь отримавши дозвіл у компание Sun. Microsoft на створення відповіло своєю мовою JScript, після чого багато творців браузерів почали випускати свої специфікації, що зробило завдання написання вездеработающего скрипта досить складною.

Pascal (Паскаль) і Delphi

Розроблений Ніклаус Віртом (а не французьким математиком Блез Паскаль, як абсолютно впевнені половина людей J) в 1967-1971 роках компілює мову програмування, спочатку став популярним в основному завдяки відносно простому синтаксису. Випуск компанією Borland зручного і простого компілятора Turbo Pascal дозволив йому зайняти лідируючі позиції і до сих пір вивчатися в школах і інститутах, хоча і як основи програмування, а не ідеального мови для створення програм. Borland Pascal і використовується в Delphi мову Object Pascal грунтуються на Turbo Pascal і розвивають його ідеї. По суті, Delphi є компілятором мови Pascal. Найперша версія Delphi об'єднала в собі надійний компілятор, візуальне середовище для програміста і дуже потужні можливості мови по роботі з базами даних, і вже через рік вийшла Dephi 2 для 32-бітної системи.
З відомих програм на Delphi написаний " Total Commander"І" The Bat "

Рефал

«Звірячий» мову, розроблений в 1966 році в ІМП АН СРСР. Рефал широко застосовувався при розробці трансляторів з алгоритмічних мов, в теоретичній фізиці та прикладної математики, в проектуванні інформаційних систем.

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

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

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

Тепер, коли була потрібна ефективна програма, замість машинних мов використовувалися близькі до них машинно-орієнтовані мови асемблера. До таких належали, наприклад, Autocode, з 1954-го року - IPL (попередник мови LISP) і, з 1955-го року - FLOW-MATIC (попередник мови COBOL). Тепер люди стали використовувати мнемонічні команди замість машинних команд.

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

Мови високого рівня

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

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

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

Коротко, це досягнення в області програмування було дуже велике. Тепер програмування можна було розбити на класи і тестувати не всю програму, що складається з 10 000 рядків коду, а розбити програму на 100 класів, і тестувати кожен клас. Це істотно полегшило написання програмного продукту.

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

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

також створювалися функціональні(Аплікативного) мови (Приклад: Lisp - англ.. ООП поєднує кращі принципи структурного програмування з новими потужними концепціями, базові з яких називаються

Однією з найбільш революційних ідей призвели до створення автоматичних цифрових обчислювальних машин, була висловлена ​​в 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 році (перша версія). Ця мова був орієнтований на науково-технічні розрахунки математичного характеру і є класичним мовою програмування при вирішенні на ПК математичних і інженерних задач.
Для перших мов програмування високого рівня предметна орієнтація мов була характерною рисою.
Особливе місце серед мов програмування займає Алгол, перша версія якого з'явилася в 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 рік), який є дуже популярним в Середі розробників систем програмного забезпечення (включаючи операційні системи). Ця мова створювався як інструментальна мова для розробки операційних систем, трансляторів, баз даних та інших системних і прикладних програм. Сі поєднує в собі як риси мови високого рівня, так і машинно-орієнтованої мови, допускаючи програміста до всіх машинних ресурсів, чого не забезпечують такі мови як Бейсік і Паскаль.
Період з кінця 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 для додатків) можна писати сценарії для web-браузерів і автоматизувати додатки 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 зараз майже повністю здійснюється за допомогою СОМ. З урахуванням етого.NET має здатність (а) створювати оболонки (wrappers) навколо існуючих компонентів СОМ, так що компоненти.NET можуть спілкуватися з ними, і (б) створювати оболонки навколо компонентов.NET, що дозволяє їм виглядати як звичайні СОМ-компоненти .

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

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

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

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

Відомо, що першим програмістом була жінка - леді Ада Лавлейс, дочка лорда Байрона. Вона розробляла програми для одного з перших механічних комп'ютерів, створеного на початку XIX століття англійським ученим Чарльзом Беббідж. Однак даний програмування в сучасному розумінні почалося з моменту створення першої електронної обчислювальної машини. Але тим не менше, ім'я цієї чудової жінки - Ada - присвоєно одному з найпотужніших сучасних мов програмування, який є базовим для міністерства оборони США.

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

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

наприклад, команда виду 1А12 в 16-ковий вигляді або 0001101000010010 в двійковому вигляді означає операцію додавання (1А) вмісту регістрів 1 і 2.

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

Природно, що процес програмування був дуже трудомістким, розібратися в програмі навіть автору було досить складно, а ефект від застосування ЕОМ був досить низьким.

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

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

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

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

наприклад, команда додавання записується у вигляді AR 1,2 і означає додавання (Addition) типу регістр-регістр (Register) для регістрів 1 і 2. Тепер програма має більш легку для читання форму, але її не розуміє ЕОМ. Тому знадобилося створити спеціальну програму транслятор, який перетворює програму з мови асемблера на машинну мову. Ця проблема зажадала, в свою чергу, глибоких наукових досліджень і розробки різних теорій, наприклад теорію формальних мов, які лягли в основу створення трансляторів. Практично будь-який клас ЕОМ має свою мову асемблера.

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

висновок: Рівні мов програмування: мови програмування низького рівня. Якщо мова програмування орієнтований на конкретний тип процесора і враховує його особливості, то він називається мовою програмування низького рівня. «Низький рівень» -це значить, що оператори близькі до машинного коду і орієнтовані на конкретний тип процесора. Мовою найнижчого рівня є мова Асемблера, який представляє кожну машинну команду у вигляді символьних умовних позначень, званих символьними мнемониками.

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

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

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

принциповими відмінностями мов високого рівня від мов низького рівня є:

    використання змінних;

    можливість запису складних виразів;

    розширюваність типів даних за рахунок конструювання нових типів з базових;

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

    слабка залежність від типу ЕОМ.

З ускладненням мов програмування ускладнюються і транслятори для них. Тепер в набір інструментів програміста, окрім транслятора, входить текстовий редактор для введення тексту програм, відладчик для усунення помилок, бібліотекар для створення бібліотек програмних модулів і безліч інших службових програм. Всі разом це називається системою програмування. Найбільш яскравими представниками мов високого рівня є FORTRAN, PL / 1, Pascal, C, Basic, Ada.

Вступ

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

ЧАСТИНА 1. Історія виникнення програмування. Основні принципи і підходи при створенні мов програмування

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

З давніх-давен відомі спроби створити пристрої, що прискорюють і полегшують процес обчислень. Ще стародавні греки і римляни застосовували пристосування, подібне рахунками, - абак. Такі пристрої були відомі і в країнах Стародавнього Сходу. У XV в. німецькі вчені В. Шиккард (один тисячі шістсот двадцять три), Г. Лейбніц (тисячі шістсот сімдесят три) і французький вчений Б. Паскаль (одна тисяча шістсот сорок дві) створили механічні обчислювальні пристрої - попередники всім відомого арифмометра. Обчислювальні машини удосконалювалися протягом декількох століть. Але при цьому не застосовувалося поняття «програма і програмування».

На початку XIX ст. (1830) англійський учений, професор математики Кембриджського університету Чарльз Беббідж, аналізуючи результати обробки перепису населення у Франції, теоретично досліджував процес виконання обчислень і обгрунтував основи архітектури обчислювальної машини. Працюючи над проектом аналітичної машини - «Машини для обчислення різниць», Ч. Беббідж передбачив багато ідей і принципи організації і роботи сучасних ЕОМ, зокрема принцип програмного управління і запам'ятовується програми. Загальна захопленість наукою дала вченому і Аді Лавлейс (1815--1852) довгі роки плідної співпраці. У 1843 р вона перевела статтю Менабреа по лекціях

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

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

У 1854 р англійський математик Джордж Буль опублікував книгу «Закони мислення», в якій розвинув алгебру висловлювань --Булеву алгебру. На її основі на початку 80-х рр. XIX ст. побудована теорія релейно-контактних схем і конструювання складних дискретних автоматів. Алгебра логіки зробила багатогранний вплив на розвиток обчислювальної техніки, будучи інструментом розробки і аналізу складних схем, інструментом оптимізації великого числа логічних елементів, з багатьох тисяч яких складається сучасна ЕОМ.

Ідеї ​​Ч. Беббіджа реалізував американський вчений Г. Холлерит, який за допомогою побудованої лічильно-аналітичної машини і перфокарт за три роки обробив результати перепису населення в США за станом на 1890р. У машині вперше було використано електрику. У 1896 р Холлеритом була заснована фірма з випуску обчислювальних перфораційних машин і перфокарт.

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

У 40-х рр. XX ст. механічна елементна база обчислювальних машин стала замінюватися електричними і електронними пристроями. Перші електромеханічні машини були створені в Німеччині К. Цузе (Ц-3, 1941р.) Та в США під керівництвом професора Гарвардського університету Г. Айкена (МАРК-1, 1944 г.). Перша електронна машина створена в США групою інженерів під керівництвом доктора Пенсільванського університету Дж. Мочлі і аспіранта Дж. Екксрта (ЕНІАК - електронний цифровий інтегратор і калькулятор, 1946 г.). У 1949 р в Англії була побудована EDSAC - перша машина, що володіє автоматичним програмним управлінням, внутрішнім запам'ятовуючим пристроєм і іншими необхідними компонентами сучасних ЕОМ.

Логічні схеми обчислювальних машин були розроблені в кінці 1940-х рр. Дж. Фон Нейманом, Г. Гольдстайном і А. В. Берксом. Особливий внесок в цю роботу вніс американський математик Джон фон Нейман, який брав участь у створенні ЕНІАК. Він запропонував ідею зберігання команд управління і даних в машинної пам'яті і сформулював основні принципи побудови сучасних ЕОМ. ЕОМ з програмою, що зберігається виявилися більш швидкодіючими і гнучкими, ніж раніше створені.

У 1951 р в США було налагоджено перше серійне виробництво електронних машин УНИВАК (універсальна автоматична обчислювальна машина). В цей же час фірма IBM почала серійний випуск машини IBM / 701.

В СРСР першими авторами ЕОМ, винайденої в грудні 1948 року, є І. С. Брук і Рамєєв. А перша радянська ЕОМ з зберігається програмою створена в 1951 році під керівництвом С. А Лебедєва (МЕСМ - мала електронна рахункова машина). У 1953 р в Радянському Союзі почався серійний випуск машин, першими з яких були БЕСМ-1, «Стріла».

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

До кінця 1950-х рр. ЕОМ основним елементом конструкції були електронні лампи (1-е покоління). У цей період розвиток ідеології і техніки програмування йшло за рахунок досягнень американських вчених Дж. Фон Неймана, який сформулював основні принципи побудови ЕОМ, і Дж. Бекуса, під керівництвом якого в 1954 році був створений Fortran (Formula Translation) - перша мова програмування високого рівня, який використовується до теперішнього часу в різних модифікаціях. Так, в 1965 р в Дартмутського коледжу Д. Кемені і Т. Куртц була розроблена спрощена версія Фортрана - Basic. У 1966 р комісія при Американській асоціації стандартів (ASA) розробила два стандарти мови: Фортран і Базисний Фортран. Використовуються також подальші модифікації мови (наприклад 1970, 1990 рр.).

Досягнення в галузі електроніки та мікроелектроніки дозволили замінити елементну базу ЕОМ на більш досконалу. В кінці 1950-х рр. громіздкі електронні лампи замінюють напівпровідниками (мініатюрними транзисторами). З'являються ЕОМ II покоління; потім приблизно через 10 років - ЕОМ III покоління на інтегральних схемах; ще через 10 років - ЕОМ IV покоління на великих інтегральних схемах (ВІС). В Японії в 1990-х рр. реалізовані проекти ЕОМ V покоління, в яких використані досягнення в області штучного інтелекту і біоелектроніки. Якщо обсяг оперативного пам'яті (ОЗУ) однієї з кращих вітчизняних машин 1960-х рр. М-20, створеної під керівництвом С. А. Лебедєва в 1958 році, мав 4096 слiв (8 Кбайт) і швидкодія 20 тис. Операцій в секунду, то сучасні персональні комп'ютери характеризуються ОЗУ в десятки Мбайт і швидкодією в сотні мільйонів операцій в секунду , що дозволяє вирішувати найскладніші завдання.

У 1953 р А.А.Ляпунова був запропонований операторний метод програмування, який полягав в автоматизації програмування, а алгоритм рішення задачі представлявся у вигляді сукупності операторів, що утворюють логічну схему завдання. Схеми дозволяли розчленувати громіздкий процес складання програми, частини якої складалися з формальних правил, а потім об'єднувалися в ціле. Для перевірки ідей операторного методу в СРСР в 1954 р була розроблена перша програмуюча програма ПП-1, а в 1955 р досконаліша - ПП-2. У 1956 р розроблена ПП БЕСМ, в 1957 р - ППСВ, в 1958 р - для машини «Стріла».

У США в 1954 р став застосовуватися алгебраїчний підхід, що співпадає, по суті, з операційним методом. У 1956 р корпорацією IBM розроблена універсальна ПП Фортран для автоматичного програмування на ЕОМ IBM / 704.

У цей період у міру накопичення досвіду і теоретичного осмислення удосконалювалися мови програмування. У 1958--1960 рр. в Європі був створений ALGOL, який породив цілу серію алголоподобних мов: Algol W, (1967), Algol 68, Pascal (Н. Вірт, 1970 г.), С (Д. Рітчі і Б. Керниган, 1972 г.), Ada (під керівництвом Ж. Ишбиа, 1979 г.), C ++ (1983).
У 1961-1962 рр. Дж. Маккарті в Массачусетському технологічному інституті була створена мова функціонального програмування Lisp, який відкрив в програмуванні одне з альтернативних напрямків, запропонованих Дж. Фон Нейманом.

На початок 1970-х рр. існувало понад 700 мов високого рівня і близько 300 трансляторів для автоматизації програмування.

1.2 Структурний і модульне програмування

У 1965 р італійці Бом і Джакопіні запропонували використовувати в якості базових алгоритмічних елементів слідування, розгалуження і цикл. Майже в той же час до аналогічних висновків прийшов голландський вчений Е. Дійкстра, що заклав основи структурного програмування. У 1970-х рр. ця методологія оформилася, і корпорація IBM повідомила про застосування в розробці програмного забезпечення «Удосконалених методів програмування», одним з компонентів яких була технологія низхідного структурного програмування, основу якого складає наступне:

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

    керуючі структури прості, т. е. логічне завдання повинна складатися з мінімальної, функціонально повної сукупності досить простих керуючих структур;

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

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

розвиток отримало модульне програмування, Основа якого полягає в наступному:

* Функціональна декомпозиція (розбиття) завдання на самостійні підзадачі - модулі, пов'язані тільки вхідними та вихідними даними;

* Модуль являє собою «чорний ящик», що дозволяє розробляти частини програм одного проекту на різних мовах програмування, а потім за допомогою компонувальних коштів об'єднувати їх в єдиний завантажувальний модуль;

* Має бути чітке розуміння призначення всіх модулів завдання і їх оптимального поєднання;

* За допомогою коментарів повинно описуватися призначення всіх змінних модуля.

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

В історії розвитку промислового програмування велику роль зіграв програміст і бізнесмен Білл Гейтс (Gates William Henry, p. В 1955 р). Гейтс і його шкільний товариш Пол Аллен заснували компанію з аналізу вуличного руху «Треф-О-Дейта» і використовували для обробки даних комп'ютери з мікропроцесором 8008 - першим з знаменитого ряду мікропроцесорів компанії «Intel». Будучи студентом Гарвардського університету, в 1975 році він разом з Алленом написав для комп'ютера Altair (фірми M1TS) інтерпретатор - програму перекладач з мови програмування на мову машинних кодів.

Професійне програмування вийшло на рівень технології.

Методи розробки ПЗ синтезують:

* Методи інженерних розрахунків для оцінки витрат і вибору рішень;

* Математичні методи для складання алгоритмів;

* Методи управління для визначення вимог до системи, обліку ситуацій, організації робіт та прогнозування.