Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АрхЭВМ часть 1.doc
Скачиваний:
24
Добавлен:
08.02.2015
Размер:
1.52 Mб
Скачать
  • Языки программирования

Программа это последовательность данных и команд для процессора, как перевести эти данные в другие. Она составлена на формально определенном языке — языке программирования.

Определение языка программирования состоит из двух частей:

  • Синтаксис языка описывается формально. Он описывает значащие последовательности строк символов с помощью так называемой внеконтекстной грамматики. При этом средства представления могут быть разнообразными. Распространены формулы Бэкуса-Наура (БНФ) и синтаксические диаграммы.

  • Семантика описывает, какое значение имеют отдельные элементы языка, описанные синтаксисом. Семантика описывается естественным языком в правилах.

      • Поколения языков программирования

Программирование появилось еще в девятнадцатом веке, когда Ада Августа Байрон сформулировала «Инструкцию по расчетам для аналитической машины» британского математика Чарльза Бэббиджа. Аналитическая машина никогда не была закончена из-за своей механической сложности, так что первая в мире программа никогда не была запущена.

Формальное определение языка программирования появилось одновременно с созданием первого электромеханического компьютера. Конрад Цузе (1910 — 1995) разработал в середине сороковых годов с помощью последовательного исчисления первый в мире язык программирования высокого уровня. Однако полностью рукопись была опубликована только в 1972 году [Z72].

Развитие языков программирования можно разделить на пять поколений.

      • Первое поколение

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

      • Второе поколение

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

Программа на языке ассемблера переводилась на машинный язык с помощью транслятора, часто тоже называемого Ассемблером.

      • Третье поколение

Под языками третьего поколения понимают различные системы, возникающие примерно с начала 60х годов. В этот момент был сделан мощный скачок в сторону абстрагирования от конкретного типа аппаратной части. Разработчик больше не должен был писать программу под конкретную процессорную архитектуру с командами процессора. Поэтому эти языки часто обозначаются как языки «высокого» уровня.

Процедурные языки. Изначально речь шла проблемо-ориентированных языках с процедурной парадигмой программирования, ср. раздел 1.3.1. FORTRAN в 1954 году был первым из этих языков, которые широко распространились и продолжают распространяться и сейчас — после значительных «обновлений».

Разбиение программы на блоки впервые появилось в языке ALGOL, который сегодня больше не используется. В 1970 году началось распространение так называемого структурного программирования (язык Pascal). При этом начался отказ от «Спагетти-кода». Вместо явных развилок («goto») стали использоваться чистые управляющие структуры, которые позволяют распознать последовательность действий в исходном тексте программы.

Объектно-ориентированные языки. Одновременно примерно с 1970 годов начала развиваться объектно-ориентированная парадигма программирования, ср. раздел 1.3.1. Она базировалась по сути на ступенях развития языка Smalltalk, который был разработан уже в семидесятых годах Учебно-исследовательской группой лаборатории Xerox PARC (Palo Alto Research Center). Smalltalk будет подробно рассмотрен в главе 10.

С начала 1990х годов объектно-ориентированные аспекты были переняты большинством языков программирования.

Гибридные языки. Наряду с чисто процедурными и чисто объектно-ориентированными языками существуют и такие, которые перенимают обе концепции. С++ — их типичный представитель. Он использует функции из процедурных языков и классы из объектно-ориентированных.

Доменоспециализированные языки. Под это определение попадают все языки третьего поколения, которые распространены только в определенных областях деятельности (доменах), и оптимизированы именно под них.

Декларативные языки. Символическое программирование для решения не численных задач появилось около 1960 года вместе с языком LISP и сегодня привело к декларативной парадигме программирования, ср. раздел 1.3.1, которая есть сочетание логической и функциональной парадигм программирования, такое как программирование с ограничениями.