По степени ориентации на специфические возможности ЭВМ:
машинно-зависимые (машинные языки, ассемблеры и автокоды, которые используются в системном программировании, может выполняться только на ЭВМ данного типа.
машинно-независимые (определяет мобильность получаемых программ (возможность переноса ЭВМ другого типа).
По степени детализации алгоритма получения результата:
языки низкого уровня;
языки высокого уровня;
языки сверхвысокого уровня.
По степени ориентации на решение определенного класса задач:
проблемно-ориентированные;
универсальные.
По возможности дополнения новыми типами данных и операциями:
языки систем реального времени;
языки систем условного времени.
По способу получения результата:
процедурные;
непроцедурные.
По типу решаемых задач:
языки системного программирования;
языки прикладного программирования.
Языки программирования:
1. Низкоуровневый язык программирования - язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального процессора (пример использования виртуального процессора - язык программирования Java).
2. Высокоуровневый язык программирования — язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
3. Компилируемый язык программирования — язык программирования, в котором исходный код, написанный пользователем, преобразуется компилятором в машинный код, исполняемый компьютером.
4. Интерпретируемый язык программирования — язык программирования, в котором исходный код программы не преобразовывается в машинный код для непосредственного выполнения центральным процессором, а исполняется с помощью специальной программы-интерпретатора.
Компилятор — компьютерная программа или техническое средство, выполняющее преобразование исходного текcта программы, написанного на языке высокого уровня, в машинный язык, язык близкий к машинному, или в объектный модуль. Процесс работы компилятора называется компиляцией.
Интерпретатор - программа (иногда аппаратное средство), анализирующее команды или операторы программы и немедленно выполняющее их.
Классы языков программирования:
Директивное программирование - один из наиболее естественных для человека подходов к написанию программ. Ведь программа в этом случае состоит из операторов присваивания и предложений, управляющих последовательностью их выполнения. При написании подобной программы необходимо найти такую цепочку команд, которая приведет в конце концов к вычислению (и, возможно, печати) одной или нескольких искомых величин.
Процедурное программирование — это парадигма программирования, основанная на концепции вызова процедуры. Процедуры, также известны как подпрограммы, методы или функции (это не математические функции, в отличие от тех, которые моделируются в функциональном программировании). Процедуры просто содержат последовательность шагов для выполнения. В ходе выполнения программы любая процедура может быть вызвана из любой точки, включая саму данную процедуру.Процедурное программирование — это лучший выбор, чем просто последовательное или неструктурированное программирование во многих ситуациях, которые вызываются умеренной сложностью, или тех, которые требуют значительного упрощения поддержки.
Императивное программирование — это парадигма программирования, которая, в отличие от декларативного программирования, описывает процесс вычисления в виде инструкций, изменяющих состояние программы. Императивная программа очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые должен выполнить компьютер.
Декларативное программирование Особое внимание в декларативном программировании уделяется тому, что нужно сделать, а не тому как это нужно сделать. Здесь главным является точная формулировка задачи, а выбор и применение необходимого алгоритма для ее решения — проблема исполняющей системы, но не программиста.
В функциональном программировании процесс вычисления трактуется как вычисление значений функций в математическом понимании последних.
Логическое программирование основано на выводе новых фактов из данных фактов согласно заданным логическим правилам. Логическое программирование основано на теории математической логики.
Объектно-ориентированное программирование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
ООП - результат естественной эволюции более ранних методологий программирования. Потребность в ООП связана со стремительным усложнением разрабатываемых программ и, как следствие, их недостаточной надежностью. Модульное программирование, оказалось не способным решить эту проблему.
Все объекты являются представителями, или экземплярами, классов.
Класс — это тип, описывающий устройство объектов — экземпляров.
Основные понятия ООП:
Абстракция данных. Объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
Инкапсуляцию можно представить, как защитную оболочку вокруг кода данных, с которыми этот код работает. Оболочка задает поведение и защищает код от произвольного доступа извне.
Наследование - это процесс, в результате которого один тип наследует свойства другого типа.
Полиморфизм - это концепция, позволяющая иметь различные реализации для одного и того же метода, которые будут выбираться в зависимости от типа объекта, переданного методу при вызове.