СРЕДСТВА РЕСУРСНОЙ ПОДДЕРЖКИ.
Программное обеспечение ЭВМ. Языки программирования
Языки программирования делятся на два класса - МАШИННО-ЗАВИСИМЫЕ и МАШИННО-НЕЗАВИСИМЫЕ. Под машинно-зависимыми языками понимают языки, алфавит, синтаксис и семантика которых зависят от системы команд процессора конкретно используемой ЭВМ. Машинно-независимые языки - языки свободные от такой зависимости.
Типичным представителем машинно-зависимого языка является язык АССЕМБЛЕРА. Это язык, в котором набору команд процессора поставлены в соответствие мнемонические обозначения команд. Например, на ЭВМ фирмы DEC команда сложения содержимого двух регистров R1 и R2 в двоичном коде имеет вид: 0110010001010010, а на языке ассемблера ADD R1,R2 (СЛОЖИТЬ R1,R2). Таким образом, язык ассемблера освобождает пользователя от записи программы в двоичных кодах. Собственно программа АССЕМБЛЕР представляет собой компилятор, который переводит текст программы в мнемокодах в текст программы в двоичных кодах команд процессора. Отсюда и следует зависимость языка Ассемблера от системы команд процессора конкретной ЭВМ.
В настоящее время используется язык МАКРОАССЕМБЛЕРА, являющийся расширением языка Ассемблера. В этом языке можно назначить обозначение последовательности операторов (МАКРООПРЕДЕЛЕНИЕ). Это обозначение называется МАКРОСОМ. В исходном тексте программы можно указывать только макрос, т.к. при переводе Ассемблером текста макрос заменяется последовательностью операторов из макроопределения. Язык Макроассемблера упрощает запись программы, если в программе много одинаковых фрагментов.
Машинно-независимые языки программирования по назначению и возможностям можно представить следующими группами: УНИВЕРСАЛЬНЫЕ, ПРОЦЕДУРНО-ОРИЕНТИРОВАННЫЕ, ПРОБЛЕМНО-ОРИЕНТИРОВАННЫЕ и ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ.
Под универсальными языками программирования в настоящее время принято понимать языки предназначенные для решения самого широкого класса задач. Типичным представителем этой группы языков является язык C (Си). В языке C сочетаются достоинства современных высокоуровневых языков с возможностями языка Ассемблера.
Процедурно-ориентированные языки предполагают использование последовательности операторов, задающей те или иные действия. Эта последовательность оформляется в виде законченного текста - процедуры (или как теперь часто говорят модуля). К процедурно-ориентированным языкам относятся BASIC, PASCAL, FORTRAN, MODULA и другие (кстати, язык C тоже имеет все черты процедурно-ориентированного языка).
Проблемно-ориентированные языки, как следует из названия предназначены для снижения трудозатрат на программирование задач какого-либо определенного класса. Например, для коммерческих задач - COBOL, для разработки и реализации информационных систем - целый спектр языков xBASE, для задач искусственного интеллекта - PROLOG и другие. Следует отметить, что одна и та же программа может быть написана на языках разных групп, но на соответствующем проблемно-ориентированном языке текст программы будет записан наиболее кратко.
В объектно-ориентированных языках первичным является не отношение, а ОБЪЕКТ. Объект объединяет структуру данных и доступные только ему механизмы их изменения. Типичным представителем языка такого тип является язык C++.
ОБ ЭФФЕКТИВНОСТИ ТРАНСЛЯЦИИ.
Любой транслятор (компилятор или интерпретатор) является автоматом перевода текста на некотором языке в соответствующую последовательность команд процессора ЭВМ. От длины и структуры этой последовательности существенно зависит скорость выполнения программы пользователя. Например, программу написанную на каком-либо языке программирования можно перевести на язык команд процессора двумя различными компиляторами К1 и К2. Более эффективным следует считать тот компилятор, после обработки которым исходной программы, последняя выполняется быстрее.
Эффективность транслятора определяется следующим образом. Исходный текст программы пользователя компилируется и определяется длина программы (объем занимаемой памяти) в командах процессора (на рисунке M). Точно такую же программу в командах процессора составляет опытный профессионал-программист. Длина этой программы на рисунке обозначена m. Эффективность транслятора определяется коэффициентом трансляции, который вычисляется как k=M/m. Очевидно, что чем больше коэффициент, тем менее эффективен транслятор. У современных компиляторов коэффициент трансляции лежит в пределах от 1,5 до 2.