Время возникн. | Класс | Особенности | Применение | Примеры языков | |
Преимущества | Недостатки | ||||
20-40-е годы XX столетия |
Неструктурные языки |
- оптимизация под аппаратную архитектуру; - обеспечивали высокую эффективность вычислений; |
-программа, которая была вполне работоспособной на одной
вычислительной машине, зачастую не могла выполняться на другой;
|
-численные расчеты (математические и физические) -прямые команды процессору |
Ассемблер |
50-е годы | Директивные языки |
- повторное использование ранее написанных
программных блоков; - зависимость реализации от аппаратного обеспечения существенно уменьшилась; -повышении эффективности труда разработчиков за счет абстрагирования от конкретных деталей аппаратного обеспечения |
- снижение эффективности реализации на прежнем аппаратном обеспечении; - некоторая потеря в скорости вычислений; |
-написание операционных систем, разработка приложений, обучение, научные расчеты | Fortran APL Pascal, Basic. |
60-е годы | Декларативные языки | -программа представляет собой не набор команд, а описание действий, которые необходимо осуществить. |
-доказательство теорем -возможность обработки разнородных данных (например, упорядочение элементов списка по возрастанию для целых чисел, отдельных символов и строк) или полиморфизм. |
||
-проще и прозрачнее формализуется математическими
средствами. Следовательно, программы проще
проверять на наличие ошибок (тестировать), а также на соответствие
заданной технической спецификации (верифицировать). -высокая степень абстракции |
- снижение скорости работы программ. | ||||
а) Функциональные | - любая программа, написанная на таком языке, может интерпретироваться как функция с одним или несколькими аргументами | -обработки рекурсивных
структур данных
-символьной обработки. |
ML
Haskell |
||
- автоматизированное динамическое распределение памяти
компьютера для хранения данных - при создании программ на функциональных языках программист сосредотачивается на области исследований (предметной области) и в меньшей степени заботится о рутинных операциях (обеспечении правильного с точки зрения компьютера представления данных, «сборке мусора» и т.д.). |
- нелинейная структура программы - относительно невысокую эффективность реализации |
||||
б) Логические | - программа представляет собой совокупность правил или логических высказываний. Кроме того, в программе допустимы логические причинно-следственные связи, в частности, на основе операции импликации. | -искусственный интеллект, экспертные системы; системы ориентированные на поддержку бизнеса. -для систем логического вывода |
Prolog | ||
- достаточно высокий уровень
машинной независимости,
- возможность откатов – возвращения к предыдущей подцели при отрицательном результате анализа одного из вариантов в процессе поиска решения (скажем, очередного хода при игре в шахматы), что избавляет от необходимости поиска решения путем полного перебора вариантов и увеличивает эффективность реализации. |
-специфичность класса решаемых задач. - сложность эффективной реализации для принятия решений в реальном времени, скажем, для систем жизнеобеспечения.
|
||||
Объектно-ориентированные языки | -программа представляет собой описание объектов, их свойств (или атрибутов), совокупностей (или классов), отношений между ними, способов их взаимодействия и операций над объектами (или методов) | -разработка программных приложений и др. | С ++ Visual Basic |
||
- концептуальная близость к
предметной области произвольной структуры и назначения. Механизм
наследования атрибутов и методов позволяет строить производные понятия
на основе базовых и таким образом создавать модель сколь угодно сложной
предметной области с заданными свойствами. - поддержка механизма обработки событий, которые изменяют атрибуты объектов и моделируют их взаимодействие в предметной области - использование ранее разработанных (возможно, другими коллективами программистов) библиотек объектов и методов позволяет значительно сэкономить трудозатраты при производстве программного обеспечения, в особенности типичного. - объекты, классы и методы могут быть полиморфными, что делает реализованное программное обеспечение более гибким и универсальным. |
- сложность адекватной (непротиворечивой и полной)
формализации объектной теории порождает трудности
тестирования и верификации
созданного программного обеспечения.
|
||||
Языки сценариев | - программа представляет собой совокупность возможных сценариев обработки данных, выбор которых инициируется наступлением того или иного события | -Интернет технологии | VBScript JavaScript |
||
-основные достоинства языков
данного класса унаследованы от
объектно-ориентированных языков программирования -существенным преимуществом языков сценариев является их совместимость с передовыми инструментальными средствами автоматизированного проектирования и быстрой реализации программного обеспечения, или так называемыми CASE- (Computer-Aided Software Engineering) и RAD- (Rapid Application Development) средствами |
-сложность тестирования и верификации программ и возможности возникновения в ходе эксплуатации множественных побочных эффектов, проявляющихся за счет сложной природы взаимодействия объектов и среды, представленной интерфейсами с большим количеством одновременно работающих пользователей программного обеспечения, операционной системой и внешними источниками данных |