Не залежно від того, якою мовою розроблено програму, комп'ютер «розуміє» й виконує лише програму, подану машинною мовою, тобто символами 0 i 1.
Для перших ЕОМ програмісти самі розробляли програми машинними мовами. Це була складна робота, що потребувала знання структури та принципів взаємодії пристроїв комп'ютера.
Yci подальші зусилля було спрямовано на наближення мов програмування до природної людської мови. Тобто на розроблення мов, які будуть зрозумілі людині і якi можна реалізувати на комп'ютері.
Спочатку з'явилися мови символьного кодування
(МСК), які дозволяли подавати команди не кодом, а символами, наприклад «ДОДАТИ А В». За цією командою до числа А додавалося число В. Перетворення програм мовою МСК у машинний код здійснювалося за допомогою спеціальних програм, які пізніше отримали назву трансляторів.
Розробку програм полегшило використання макрокоманд, які реалізуються послідовністю з декількох машинних команд. Різновиди мов символьного кодування називають автокодом i мовою асемблера.
За ступенем залежності від апаратних засобів розрізняють мови програмування низького і високого рівнів.
Мови низького рівня називають машинноорієнтованими, тому що вони орієнтовані на конкретний тип комп'ютера. Практично кожний тип комп'ютера має власну мову програмування низького рівня. Одна й та сама програма не могла виконуватися на комп'ютері іншого типу, що суттєво обмежувало обмін програмами.
Вже на перших етапах розвитку ЕОМ почалося розроблення мов програмування, доступних для широкого кола користувачів i не пов'язаних із конкретним комп'ютером.
Їх називають мовами високого рівня.
За орієнтацією на клас задач розрізняють мови програмування універсальні та спеціалізовані
Швидкий розвиток обчислювальної техніки та її впровадження в різні сфери життя висунули до мов програмування нові вимоги: вони мали забезпечити успішне розв'язування задач людської діяльності.
Такі мови програмування належать до класу універсальних мов.
Найбільш відомими серед таких мов стали PL/l, розроблена в 1964 році і Algol-68. Обидві виявилися досить складними, і скоро широкої популярності набула мова Pascal, яку розробили у 1973 році в Швейцарії, а згодом – BASIC.
Спеціалізовані мови враховують специфіку предметної галузі. Однією з перших спеціалізованих мов програмування, орієнтованих на певний клас задач, була мова COBOL, розроблена в США в 1961 році та орієнтована на розв'язання економічних задач.
За принципом програмування розрізняють процедурні, непроцедурні та мови об'єктноорієнтованого програмування
Процедурні мови базуються на описі послідовної зміни стану комп'ютера, тобто значення комірок пам'яті, стану процесора та інших пристроїв. Вони маніпулюють даними в покроковому режимі, використовуючи послідовні інструкції. У таких мовах дотримуються чіткої структуризації програм і тому їх ще називають мовами структурного програмування. Прикладами процедурних мов є
Fortran, Pascal, Basic ті інші.
Непроцедурні мови ефективні для програмування пошуку даних у великих обсягах інформації, а також програмування задач, процес розв'язання яких неможливо описати (переклад, розпізнавання образів). У цих мовах сама процедура пошуку розв'язку вбудована в інтерпретатор мови. До них належать мови функціонального і логічного програмування.
За принципом програмування розрізняють процедурні, непроцедурні та мови об'єктноорієнтованого програмування
Мови об'єктно-орієнтованого програмування (ООП) почали розвиватися наприкінці ХХ століття. Ці мови фактично прийшли на зміну мов процедурного програмування, які слабко пристосовані до розроблення складних програм.
Мови ООП сьогодні є основними мовами професійного програмування. Вони містять конструкції, які дають можливість визначати об'єкти, що належать класам, а також можуть працювати з абстрактними типами данях. До мов ООП належать С++, Java, С# та інші.
Існують також гібридні мови програмування, які поєднують принципи процедурного програмування і ООП.
Класичним прикладом таких мов є Python.