Эволюция и классификация языков программирования.
Развитие вычислительной техники сопровождается созданием новых и совершенствованием существующих средств общения программистов с ЭВМ - языков программирования (ЯП).
Под ЯП понимают правила представления данных и записи алгоритмов их обработки, которые автоматически выполняются ЭВМ. В более абстрактном виде ЯП является средством создания программных моделей объектов и явлений внешнего мира.
К настоящему времени созданы десятки различных ЯП от самых примитивных до близких к естественному языку человека. Чтобы разобраться во всем многообразии ЯП, нужно знать их классификацию, а также историю создания, эволюцию и тенденции развития. Настоящая статья и посвящена рассмотрению этих вопросов.
Классификация ЯП
Исходя из вышесказанного, ЯП можно классифицировать по следующим признакам:
1) По степени ориентации на специфические возможности ЭВМ ЯП делятся на:
- машинно-зависимые;
- машинно-независимые.
К машинно-зависимым ЯП относятся машинные языки, ассемблеры и автокоды, которые используются в системном программировании. Программа на машинно-зависимом ЯП может выполняться только на ЭВМ данного типа. Программа на машинно-независимом ЯП после трансляции на машинный язык становится машинно-зависимой. Этот признак ЯП определяет мобильность получаемых программ .
2) По степени детализации алгоритма получения результата ЯП делятся на:
- языки низкого уровня;
- языки высокого уровня;
- языки сверхвысокого уровня.
3) По степени ориентации на решение определенного класса задач:
- проблемно-ориентированные;
- универсальные.
4) По возможности дополнения новыми типами данных и операциями:
- расширяемые;
- нерасширяемые.
5) По возможности управления реальными объектами и процессами:
- языки систем реального времени;
- языки систем условного времени.
6) По способу получения результата:
- процедурные;
- непроцедурные.
7) По типу решаемых задач:
- языки системного программирования;
- языки прикладного программирования.
8) Непроцедурные языки по типу встроенной процедуры поиска решений делятся на:
- реляционные;
- функциональные;
- логические.
Основные понятия языков программирования.
Язык программирования – это формальный язык для записи алгоритмов в виде, допускающем их автоматическую подготовку к выполнению на компьютере.
Алфавит языка программирования – это набор символов, которые можно применять в инструкциях языка программирования.
Синтаксис языка программирования - совокупность правил записи, которым должна удовлетворять любая программа, включает также правила ввода текстов программ в компьютер.
Семантика языка программирования – правила, определяющие какие операции, и в какой последовательности должен выполнять компьютер, работая по программе.
Структуры и типы данных языка программирования.
Системы типов в языках высокого уровня позволяют определять сложные, составные типы, так называемые структуры данных. Как правило, структурные типы данных образуются как декартово произведение базовых (атомарных) типов и ранее определённых составных типов.
Основные структуры данных (списки, очереди, хеш-таблицы, двоичные деревья и пары) часто представлены особыми синтаксическими конструкциями в языках высокого уровня. Такие данные структурируются автоматически.
Современные цифровые компьютеры являются двоичными и данные хранят в двоичном (бинарном) коде (хотя возможны реализации и в других системах счисления). Эти данные как правило отражают информацию из реального мира (имена, банковские счета, измерения и др.), представляющую высокоуровневые концепции.
Особая система, по которой данные организуются в программе, — это система типов языка программирования; разработка и изучение систем типов известна под названием теория типов. Языки можно поделить на имеющие статическую типизацию и динамическую типизацию, а также бестиповые языки (например, Forth).
Статически типизированные языки могут быть в дальнейшем подразделены на языки с обязательной декларацией, где каждая переменная и объявление функции имеет обязательное объявление типа, и языки с выводимыми типами. Иногда динамически типизированные языки называют латентно типизированными.