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

При классификации языков программирования выделяли ранее:

· машинные языки

· машинно-ориентированные (ассемблерные) языки

· алгоритмические языки

· процедурно- и проблемно-ориентированные языки

· интегрированные системы программирования

Самый нижний уровень - машинные языки.

Рассмотрим на примере проблему кодирования на машинном языке.

Машинный язык - это коды, которые пишутся под конкретный вычислитель, а не серию, класс компьютеров.

При составлении программы на машинном языке необходимо решить следующие вопросы:

· распределить память для данных, обрабатываемых программой, то есть сформировать так называемую таблицу символов - ТС; например, в начале памяти.

· необходимо распределить память для команд программы, например, начиная с адреса 01000, соответствующего вводу слова в ОЗУ с устройства ввода для символа с адресом 00000, то есть, символа А с кодом операции - КО - 07. Машинные команды можно также свести в таблицу для кодов операций.

· Составить программу, для чего записать коды машинных команд с указанием места их размещения в ОЗУ, то есть программу можно представить в виде таблицы.

При этом в ОЗУ между ячейками размещение данных и команд будут свободные так называемые пустые ячейки от 00002 до 00999, так как команды начинаются с адреса 01000. Для оптимального использования ОЗУ эти ячейки нужно заполнить.

При отладке программы, то есть корректировке, размеры памяти меняются, поэтому приведенные выше шаги с первого по третий необходимо повторять.

Недостатки программирования на машинных кодах:

· неэффективное использование памяти

· действие шагов первого и второго - формальные, не творческие; вызывают много ошибок при программировании; их целесообразно автоматизировать.

· реальные системы команд компьютера достаточно громоздкие; это сотни различных команд, которые трудно воспринимаются, запись кодов является трудоемким процессом.

Достоинства программирования в кодах:

· высокое быстродействие

· минимальные затраты памяти

Однако, при переходе от машинных даже к ассемблерным языкам эти недостатки устраняются; впрочем, в языках высокого уровня достаточно своих проблем.

Ассемблерные языки имеют следующие особенности:

· вместо 2-х, 8-х и 16-ричных кодов операций и адресов используется их наглядная символическая запись.

· перевод из символической записи в двоичные коды выполняется автоматически

· размещение в ОЗУ данных и команд выполняется автоматически программой-транслятором (компилятором); соответственно первый и второй шаги. Перевод выполняется без пустых ячеек, оптимально используется память.

· Сохраняется оптимальность по быстродействию и занятой памяти; при этом потери не превышают 5-10%.

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

Перекодировка ассемблерной программы выполняется транслятором в следующей последовательности:

· первый проход: составляется таблица символов

· второй проход - с использованием таблицы символов и таблицы кодов операций выполняется перекодировка команд в двоичные коды

Макроассемблерные языки обладают мощным аппаратом макровызовов и макроопределений.

Поэтому макроассемблер также используется системными программистами как основной язык.

При этом потери по быстродействию и памяти порядка 10-15%

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

Эти языки обеспечивают наибольшее удобство из рассмотренных при программировании.

Однако эффективность программ на языках высокого уровня снижается в два-четыре раза.

Для программ на языках Си и C++ снижение эффективности в полтора раза, так как этот язык включает многие средства ассемблерных языков.

3.1 Язык программирования C++

Язык Си разработан в 1972 году Ритчи в США в связи с созданием операционной системы Unix как универсальный язык системного программирования.

Эта ОС была в основном написана на этом языке, что обеспечивало ее легкую переносимость на различные ЭВМ.

Для каждой архитектуры компьютера писался транслятор с языка Си и с его помощью Unix переносилась на другой ПК соответствующей архитектуры.

Реализация языка Си основана на компромиссе между низким уровнем языка Ассемблера и языками высокого уровня Fortran, Pascal и т.д.

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

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

C++ является развитием языка Си и содержит средства объектно-ориентированного программирования.