Краткая характеристика языков программирвоания
При классификации языков программирования выделяли ранее:
· машинные языки
· машинно-ориентированные (ассемблерные) языки
· алгоритмические языки
· процедурно- и проблемно-ориентированные языки
· интегрированные системы программирования
Самый нижний уровень - машинные языки.
Рассмотрим на примере проблему кодирования на машинном языке.
Машинный язык - это коды, которые пишутся под конкретный вычислитель, а не серию, класс компьютеров.
При составлении программы на машинном языке необходимо решить следующие вопросы:
· распределить память для данных, обрабатываемых программой, то есть сформировать так называемую таблицу символов - ТС; например, в начале памяти.
· необходимо распределить память для команд программы, например, начиная с адреса 01000, соответствующего вводу слова в ОЗУ с устройства ввода для символа с адресом 00000, то есть, символа А с кодом операции - КО - 07. Машинные команды можно также свести в таблицу для кодов операций.
· Составить программу, для чего записать коды машинных команд с указанием места их размещения в ОЗУ, то есть программу можно представить в виде таблицы.
При этом в ОЗУ между ячейками размещение данных и команд будут свободные так называемые пустые ячейки от 00002 до 00999, так как команды начинаются с адреса 01000. Для оптимального использования ОЗУ эти ячейки нужно заполнить.
При отладке программы, то есть корректировке, размеры памяти меняются, поэтому приведенные выше шаги с первого по третий необходимо повторять.
Недостатки программирования на машинных кодах:
· неэффективное использование памяти
· действие шагов первого и второго - формальные, не творческие; вызывают много ошибок при программировании; их целесообразно автоматизировать.
· реальные системы команд компьютера достаточно громоздкие; это сотни различных команд, которые трудно воспринимаются, запись кодов является трудоемким процессом.
Достоинства программирования в кодах:
· высокое быстродействие
· минимальные затраты памяти
Однако, при переходе от машинных даже к ассемблерным языкам эти недостатки устраняются; впрочем, в языках высокого уровня достаточно своих проблем.
Ассемблерные языки имеют следующие особенности:
· вместо 2-х, 8-х и 16-ричных кодов операций и адресов используется их наглядная символическая запись.
· перевод из символической записи в двоичные коды выполняется автоматически
· размещение в ОЗУ данных и команд выполняется автоматически программой-транслятором (компилятором); соответственно первый и второй шаги. Перевод выполняется без пустых ячеек, оптимально используется память.
· Сохраняется оптимальность по быстродействию и занятой памяти; при этом потери не превышают 5-10%.
Поэтому ассемблерные языки и им подобные, чуть более высокого уровня (Си) являются основными для системных программистов.
Перекодировка ассемблерной программы выполняется транслятором в следующей последовательности:
· первый проход: составляется таблица символов
· второй проход - с использованием таблицы символов и таблицы кодов операций выполняется перекодировка команд в двоичные коды
Макроассемблерные языки обладают мощным аппаратом макровызовов и макроопределений.
Поэтому макроассемблер также используется системными программистами как основной язык.
При этом потери по быстродействию и памяти порядка 10-15%
Алгоритмические языки - языки программирования высокого уровня, которые иногда называют процедурными.
Эти языки обеспечивают наибольшее удобство из рассмотренных при программировании.
Однако эффективность программ на языках высокого уровня снижается в два-четыре раза.
Для программ на языках Си и C++ снижение эффективности в полтора раза, так как этот язык включает многие средства ассемблерных языков.
3.1 Язык программирования C++
Язык Си разработан в 1972 году Ритчи в США в связи с созданием операционной системы Unix как универсальный язык системного программирования.
Эта ОС была в основном написана на этом языке, что обеспечивало ее легкую переносимость на различные ЭВМ.
Для каждой архитектуры компьютера писался транслятор с языка Си и с его помощью Unix переносилась на другой ПК соответствующей архитектуры.
Реализация языка Си основана на компромиссе между низким уровнем языка Ассемблера и языками высокого уровня Fortran, Pascal и т.д.
Значительная часть операций языка Си: ввода-вывода, манипулирования строками и др. - вынесены из языка и реализованы в виде подпрограмм, которые вызываются из основных Си-программ. Это обеспечивало высокую эффективность языка Си (высокое быстродействие) и малые затраты памяти.
Си - современный и актуальный язык, включающий конструкции, рекомендуемые теоретическим и практическим программированием: следования, ветвления, циклы, модули (функции), в частности на Си реализуется нисходящее проектирование, структурное программирование, пошаговая разработка модулей.
C++ является развитием языка Си и содержит средства объектно-ориентированного программирования.