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


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

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

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

Наприклад, для організації читання блоку даних з гнучкого диска програміст може використовувати 16 різних команд, кожна з яких вимагає 13 параметрів, таких як номер блоку на диску, номер сектора на доріжці і т. п. Коли виконання операції з диском завершується, контролер повертає 23 значення, що відображають наявність і типи помилок, що треба аналізувати.

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

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

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

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


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

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

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

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


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

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

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

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

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

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


4. ООП

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

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

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


5. Приклад запису програми на різних мовах

5.1. Мова високого рівня ( Delphi)

 x  :  =  sin  (  y  *  Pi  )  +  1  ; 

5.2. Асемблер x86 ( співпроцесор)

 fldpi  fmul  qword  ptr  [  Y  ]  fsin  fld1  fadd  p  st  (  1  )  ,  st  (  0  )  fstp  qword  ptr  [  X  ] 

5.3. Машинний код (шістнадцяткове представлення, кожна команда починається з нового рядка)

 D9 EB DC 0D D0  97  40  00 D9 FE D9 E8 DE C1 DD 1D  98  97  40  00 

5.4. Машинний код (двійкове подання)

11011001 11101011 11011100 00001101 11010000 10010111 01000000 00000000 11011001 11111110 11011001 11101000 11011110 11000001 11011101 00011101 10011000 10010111 01000000 00000000