В зависимости от назначения и/или способа написания программ различают:
Прикладное программирование (application programming) – разработка и отладка программ для конечных пользователей, например бухгалтерских, обработки текстов и т.п.
Системное программирование (system programming) – разработка средств общего программного обеспечения, в том числе операционных систем, вспомогательных программ, пакетов программ общесистемного назначения, например: автоматизированных систем управления, систем управления базами данных и т.д.
Декларативное (логическое, продукционное) программирование (declarative programming, logical programming) – метод программирования, предназначенный для решения задач искусственного интеллекта. В указанном контексте программа описывает логическую структуру решения задачи, указывая преимущественно, что нужно сделать, не вдаваясь в детали, как это делается. Используются языки программирования типа Пролог.
Объектно-ориентированное программирование, объектное программирование, ООП (OOP – Object-Oriented Programming) – метод программирования, основанный на использовании концепции объекта, абстрагирующего конкретные его реализации в предметной области. При этом данные тесно связываются с выполняемыми над объектами процедурами. Например, круг на экране монитора может рассматриваться как объект, данные о котором характеризуют положение (координаты) центра, величину радиуса, толщину и цвет линии. Процедуры, связанные с этим объектом, – перемещение, изменение размера, стирание и т.д. Объектно-ориентированное программирование разрабатывалось и усовершенствовалось в 1960–1970-х гг. В настоящее время используется в ряде языков программирования высокого уровня (Си++, Java, Смолток, ObjectLisp и др).
Параллельное программирование (concurrent programming) – разработка программ, обеспечивающих одновременное (параллельное) выполнение операций, связанных с обработкой данных.
Процедурное (процедурно-ориентированное) программирование (procedure-oriented programming) – метод программирования, в соответствии с которым программы пишутся как перечни последовательно выполняемых команд. При этом используются процедурно-ориентированные языки программирования.
Структурное программирование, модульное программирование (structured programming, modular programming) – метод написания программ небольшими независимыми частями – модулями, каждый из которых связан с какой-либо процедурой или функцией. При этом результирующая программа организуется в виде совокупности взаимосвязанных по определенным правилам модулей. Это упрощает разработку сложных программных продуктов и их тестирование.
Функциональное программирование (functional programming) – метод программирования, основанный на разбиении алгоритма решения задачи на отдельные функциональные модули, а также описании их связей и характера взаимодействия. Для функционального программирования наиболее широко используются языки НОРЕ и ML. Элементы функционального программирования реализуются также другими языками, например Си.