Машина зависимые языки программирования
СРЕДСТВА РЕСУРСНОЙ ПОДДЕРЖКИ .
Программное обеспечение ЭВМ. Языки программирования
Языки программирования делятся на два класса — МАШИННО-ЗАВИСИМЫЕ и МАШИННО-НЕЗАВИСИМЫЕ. Под машинно-зависимыми языками понимают языки, алфавит, синтаксис и семантика которых зависят от системы команд процессора конкретно используемой ЭВМ. Машинно-независимые языки — языки свободные от такой зависимости.
Типичным представителем машинно-зависимого языка является язык АССЕМБЛЕРА. Это язык, в котором набору команд процессора поставлены в соответствие мнемонические обозначения команд. Например, на ЭВМ фирмы 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.
Языки программирования
Искусственные языки, предназначенные для записи программ, называются языками программирования или алгоритмическими языками. Все языки программирования делятся машинно-зависимые и машинно-независимые.
Машинно-зависимые языки зависят от типа компьютера. Каждый компьютер имеет свой собственный язык программирования – машинный язык – и может исполнять программы, записанные только на этом языке. Машинный язык включает в себя набор команд, выполняемых процессором данной конкретной машины. Команды на машинном языке представляют собой набор двоичных знаков.
Программирование на машинном языке сложно и практически не используется. Для упрощения программирования используются машинно-ориентированные языки. Различают два уровня машинно-ориентированных языков:
Мнемокод отличается от машинного языка заменой двоичных кодов операций и двоичных адресов операндов буквами или буквенно-цифровыми обозначениями. Перевод мнемокода на машинный язык выполняется с помощью специальной программы, называемой ассемблером. Ассемблер заменяет каждую команду мнемокода соответствующей командой машинного языка. Мнемокод часто называют языком ассемблера.
Макроязык, наряду с символическими аналогами машинных команд, содержит макрокоманды, не имеющие аналогов в машинном языке. При переводе на машинный язык каждая макрокоманда заменяется группой команд машинного языка. Это повышает производительность труда программиста.
Машинно-зависимые языки позволяют в наибольшей степени использовать возможности машины, однако требуют от программиста знания особенностей устройства машины. Эти языки используются для написания специального программного обеспечения.
Машинно-независимые языки не зависят от типа компьютера, на котором они используются. Машинно-независимые языки в отличие от машинно-зависимых называются языками высокого уровня. Они делятся на процедурно-ориентированные и проблемно-ориентированные языки.
Процедурно-ориентированные языки предназначены для описания алгоритмов решения задач и иногда называются универсальными языками программирования. Структура процедурно-ориентированных языков ближе к естественному языку, чем к машинному. Процедурно-ориентированными языками пользуются специалисты, знакомые с математическими формулировками решаемых задач, методами их решения и приемами программирования. Это могут быть как профессиональные программисты, так и специалисты в различных областях, хорошо владеющие программированием и методами решения задач в своей области.
При программировании на процедурно-ориентированных языках не требуется детального знания устройства компьютера. Наиболее широко используемыми языками высокого уровня являются БЭЙСИК, ПАСКАЛЬ, СИ.
Проблемно-ориентированные языки не требуют подробной записи алгоритма решения задачи. Пользователь должен лишь указать последовательность решения задач из ранее подготовленного набора, указать исходные данные и требуемую форму выдачи результата.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Большая Энциклопедия Нефти и Газа
Машинно-зависимые языки ориентированы на конкретную ЭВМ, имеют непосредственный доступ к аппаратным средствам ЭВМ и чаще всего используются для составления программ, входящих в состав операционной системы. [1]
Машинно-зависимые языки , в свою очередь, делят на машинные и машинно-ориентированные. [2]
Различают машинно-независимые и машинно-зависимые языки высокого уровня . Вторые пригодны при применении определенных серий МПК. Для программирования устройств, построенных с использованием комплекта серии КР580, разработан язык высокого уровня PL M-80, относящийся к классу машинно-зависимых языков высокого уровня. [3]
Класс машинно-зависимых языков представлен ассемблером. Язык ассемблера делает доступными все программно-управляемые компоненты ПЭВМ. Поэтому он применяется для написания программ, явно использующих специфику конкретной аппаратуры. Ассемблер — это наиболее трудоемкий язык программирования, и из-за его низкого уровня не удается построить средства отладки, которые существенно снизили бы эту трудоемкость. [4]
К машинно-зависимым языкам относят машинный и машинно-ориентированный языки. Машинный язык в качестве символов использует коды представления информации в ЭВМ. [5]
В группу машинно-зависимых языков программирования входят машинные и машинно-ориентированные языки. [6]
Язык ассемблера является машинно-зависимым языком . Это значит, что он отражает особенности архитектуры конкретного типа микрокомпьютеров. Программа, написанная на языке ассемблера для одного типа микрокомпьютеров, как правило, непригодна для другого, если оба типа не совместимы по своей архитектуре. По этой причине глубокое понимание языка ассемблера требует предварительного детального знакомства с архитектурой соответствующего микрокомпьютера. Универсального языка ассемблера, подобного БЕЙСИКу, не существует. Рассматриваемый здесь язык совпадает с подробно изложенным в [13] языком ассемблера, используемым в мини-компьютерах СМ-3 и СМ-4, совместимых по архитектуре с ДВК. [7]
Причем не хотелось бы как употреблять машинно-ориентированный или машинно-зависимый язык , так и описывать программы для машины в абстрактных понятиях, оставляющих открытыми вопросы представления. В попытках найти компромисс между этими крайними соображениями уже был создан язык Паскаль, и десять лет работы с ним [1.3] привели нас к языку Модула-2. В нем сохраняются основные понятия Паскаля и добавляются некоторые улучшения и расширения. Язык Модула-2 уже был успешно реализован на нескольких машинах, и это подтвердило достаточную близость его понятий к реальным машинам и возможность легкого объяснения как самих понятий, так и их представления. Язык достаточно близок и к другим языкам, следовательно, уроки, из него извлеченные, применимы и к ним. [8]
В отличие от АЛГОЛа ФОРТРАН содержит элементы, свойственные машинно-зависимым языкам . В частности, это проявляется в том, что программа записывается на специальных бланках со строгой фиксацией расположения отдельных операторов, а также соблюдением их стандартного расположения на перфокартах. [9]
Фортран в отличие от Алгола содержит элементы, свойственные машинно-зависимым языкам . В частности, это проявляется в том, что программа записывается на специальных бланках со строгой фиксацией расположения отдельных операторов, а также в стандартном расположении их на перфокартах. Подробнее программирование на Фортране изложено в гл. [10]
Фортран в отличие от Алгола содержит элементы, свойственные машинно-зависимым языкам . В частности, это проявляется в том, что программа записывается на специальных бланках со строгой фиксацией расположения отдельных операторов, а также в стандартном расположении их на перфокартах. Подробнее программирование на Фортране изложено в гл. [11]
Следует, однако, отметить, что каждый язык Ассемблера является машинно-зависимым языком и отражает аппаратурные особенности ( в частности, состав программно-доступных регистров) той микроЭВМ, для которой он создан. Поэтому программа на этом языке, подготовленная для одного типа микропроцессора, не может быть использована в ЭВМ с другой системой команд. Кроме того, программирование на Ассемблере представляет собой трудоемкую задачу. [12]
Автокоды, являясь машинно-ориентированными языками программирования, вместе с машинными языками образуют группу машинно-зависимых языков , поскольку в их основе лежит система счисления определенной ЦВМ. [13]
При решении задач системного программирования ( разработка системного математического обеспечения ЭВМ) предпочтение следует отдать машинно-зависимым языкам , в частности макроязыку, поскольку только в этом случае можно максимально использовать все возможности вычислительной машины. [14]
При этом эффективность программы, для составления которых используются машинно-независимые языки, обычно ниже, чем в случае использования машинно-зависимых языков программирования . [15]