Эволюция и классификация языков программирования

Развитие вычислительной техники сопровождается созданием новых и совершенствованием существующих средств общения программистов с ЭВМ - языков программирования (ЯП).

Под ЯП понимают правила представления данных и записи алгоритмов их обработки, которые автоматически выполняются ЭВМ. В более абстрактном виде ЯП является средством создания программных моделей объектов и явлений внешнего мира.

К настоящему времени созданы десятки различных ЯП от самых примитивных до близких к естественному языку человека. Чтобы разобраться во всем многообразии ЯП, нужно знать их классификацию, а также историю создания, эволюцию и тенденции развития. Настоящая статья и посвящена рассмотрению этих вопросов.

Классификация ЯП

Исходя из вышесказанного, ЯП можно классифицировать по следующим признакам:

1) По степени ориентации на специфические возможности ЭВМ ЯП делятся на:
- машинно-зависимые;
- машинно-независимые.

К машинно-зависимым ЯП относятся машинные языки, ассемблеры и автокоды, которые используются в системном программировании. Программа на машинно-зависимом ЯП может выполняться только на ЭВМ данного типа. Программа на машинно-независимом ЯП после трансляции на машинный язык становится машинно-зависимой. Этот признак ЯП определяет мобильность получаемых программ .

2) По степени детализации алгоритма получения результата ЯП делятся на:
- языки низкого уровня;
- языки высокого уровня;
- языки сверхвысокого уровня.

3) По степени ориентации на решение определенного класса задач:
- проблемно-ориентированные;
- универсальные.

4) По возможности дополнения новыми типами данных и операциями:
- расширяемые;
- нерасширяемые.

5) По возможности управления реальными объектами и процессами:
- языки систем реального времени;
- языки систем условного времени.

6) По способу получения результата:
- процедурные;
- непроцедурные.

7) По типу решаемых задач:
- языки системного программирования;
- языки прикладного программирования.

8) Непроцедурные языки по типу встроенной процедуры поиска решений делятся на:
- реляционные;
- функциональные;
- логические.

Основные понятия языков программирования.

Язык программирования – это формальный язык для записи алгоритмов в виде, допускающем их автоматическую подготовку к выполнению на компьютере.

Алфавит языка программирования – это набор символов, которые можно применять в инструкциях языка программирования.

Синтаксис языка программирования - совокупность правил записи, которым должна удовлетворять любая программа, включает также правила ввода текстов программ в компьютер.

Семантика языка программирования – правила, определяющие какие операции, и в какой последовательности должен выполнять компьютер, работая по программе.

Структуры и типы данных языка программирования.

Системы типов в языках высокого уровня позволяют определять сложные, составные типы, так называемые структуры данных. Как правило, структурные типы данных образуются как декартово произведение базовых (атомарных) типов и ранее определённых составных типов.

Основные структуры данных (списки, очереди, хеш-таблицы, двоичные деревья и пары) часто представлены особыми синтаксическими конструкциями в языках высокого уровня. Такие данные структурируются автоматически.

Современные цифровые компьютеры являются двоичными и данные хранят в двоичном (бинарном) коде (хотя возможны реализации и в других системах счисления). Эти данные как правило отражают информацию из реального мира (имена, банковские счета, измерения и др.), представляющую высокоуровневые концепции.

Особая система, по которой данные организуются в программе, - это система типов языка программирования; разработка и изучение систем типов известна под названием теория типов. Языки можно поделить на имеющие статическую типизацию и динамическую типизацию, а также бестиповые языки (например, Forth).

Статически типизированные языки могут быть в дальнейшем подразделены на языки с обязательной декларацией, где каждая переменная и объявление функции имеет обязательное объявление типа, и языки с выводимыми типами. Иногда динамически типизированные языки называют латентно типизированными.