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