Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Машинно ориентированный язык программирования

Машинно-ориентированные языки;

Машинно-ориентированные языки — это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные языки позволяют использовать все возможности и особенности машинно-зависимых языков:

• высокое качество создаваемых программ (компактность и скорость выполнения);

• возможность использования конкретных аппаратных ресурсов;

• предсказуемость объектного кода и заказов памяти;

• для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;

• трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;

• низкая скорость программирования;

• невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

По степени автоматического программирования машинно-ориентированные языки подразделяются на классы:

• машинный язык (МЯ) — командный язык. В команде сообщается информация о местонахождении операторов и типе выполняемой операции;

• языки символического кодирования (ЯСК) — командные языки, в которых коды операций и адреса в машинных командах (в двоичных или восьмеричных цифрах) заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции;

• автокоды — языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд, т.е. достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования ин формации. Макрокоманды переводятся в машинные команды двумя путями — расстановкой и генерированием. В постановочной системе содержатся серии команд, реализующих обозначенную макрокомандой функцию. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в эти команды, превращая ее в реальную машинную программу. В системе с генерацией имеются специальные программы, анализирующие макрокоманду и определяющие, какую функцию необходимо выполнить;

• ассемблеры — развитые автокоды, символическое представление машинного языка;

• макрос — язык, являющийся средством для замены последовательности символов, описывающих выполнение требуемых действий, на более сжатую форму. Макрос предназначен для сокращения записи исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает имя макроса и исходный текст. Реакция макропроцессора на вызов — выдача выходного текста. Макрос одинаково может работать как с программами, так и с данными.

Машинно-независимые языки — это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т.д.). Появились возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма. Типы машинно-независимых языков рассмотрены ниже.

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

ü Фортран, Алгол — языки, созданные для решения математических задач;

ü Simula, Сленг — для моделирования;

ü Лисп, Снобол — для работы со списочными структурами.

Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык Пл/1 был разработан фирмой IBM. Второй по мощности универсальный язык — Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными, организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнения участков программ.

Диалоговые языки — программные средства, обеспечивающие оперативное взаимодействие человека с компьютером. Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе. Примерами диалоговых языков являются Бейсик, Си и др.

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

3.12. Основы объектно-ориентированного программирования

ООП позволяет разложить проблему на составные части. В этом случае вся процедура упрощается, и появляется возможность оперировать с гораздо более объемными программами. Каждая составляющая становится самостоятельным объектом, содержащим свои собственные коды и данные, относящиеся к нему.

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

Объекты с одинаковыми свойствами и поведением объединяются в классы. Программа на объектно-ориентированном языке представляет собой совокупность описаний классов. Классы, в свою очередь, представляют собой описания свойств и поведения составляющих их объектов. Свойства представляются другими, более простыми объектами. Поведение описывается обменивающимися сообщениями объектами.

Все языки ООП основаны на трех основополагающих концепциях:

Инкапсуляция— означает, что объекты скрывают детали своей работы. Инкапсуляция позволяет разработчику объекта изменять внутренние принципы его функционирования, не оказывая никакого влияния на пользователя объекта. В Visual Basic этот принцип реализуется в основном за счет применения описаний Private и Public.

Наследование— означает, что новый объект можно определить на основе уже существующих объектов, при этом он будет содержать все свойства и методы родительского. Наследование полезно, когда требуется создать новый объект, обладающий дополнительными свойствами по сравнению со старым.

Полиморфизм— многие объекты могут иметь одноименные методы, которые могут выполнять разные действия для разных объектов. Например, оператор «+» для числовых величин выполняет сложение, а для текстовых — склеивание.

3.13. Системы программирования

Система программирования — это система для разработки новых программ на конкретном языке программирования. В них входят:

• компилятор или интерпретатор;

• интегрированная среда разработки;

• средства создания и редактирования текстов программ;

• обширные библиотеки стандартных программ и функций;

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

• «дружественная» к пользователю диалоговая среда;

• многооконный режим работы;

• мощные графические библиотеки; утилиты для работы с библиотеками;

• встроенная справочная служба;

• другие специфические особенности.

Популярные системы программирования — Turbo Basic, Quick Basic, Turbo Pascal, Turbo C.

Большая Энциклопедия Нефти и Газа

Машинно-ориентированный язык — программирование

Машинно-ориентированные языки программирования , как это следует из их названия, разрабатываются под конкретный тип ЭВМ с учетом всей специфики как технических средств, так и операционной системы. Эти языки в основном предназначены для систем, к которым предъявляются повышенные требования по эффективности функционирования с точки зрения временных параметров. Как правило, такие языки используются для систем, работающих в режиме реального времени и диалоговом режиме. Программы на машинно-ориентированных языках очень эффективно используют ресурсы ЭВМ, однако требуют значительного времени на их составление и отладку, характеризуются большими объемами, а для их составления необходимы высококвалифицированные системные программисты. Отметим также, что, как правило, программы, разработанные на машинно-ориентированных системах программирования для конкретного типа ЭВМ, не могут использоваться на ЭВМ другого типа. Это препятствует их широкому тиражированию. Следовательно, на машинно-ориентированных языках программирования имеет смысл разрабатывать программы, которые действительно требуют малого времени при их выполнении. [1]

Читать еще:  Запуск win 7 в безопасном режиме

Машинно-ориентированный язык программирования близок по своей структуре к языку конкретной ЭВМ или некоторого семейства машин, для которых он предназначен. [2]

Машинно-ориентированный язык программирования ; язык программирования, предложения которого по своей структуре подобны командам и обрабатываемым данным конкретною машинного языка. Имеет более высокий уровень, чем машинный язык, но позволяет использовать возможности последнего. Различают два уровня автокода — мнемокод и макроязык. [3]

К числу машинно-ориентированных языков программирования относятся автокоды и некоторые языки, приближающиеся по своим возможностям к универсальным алгоритмическим языкам, например АЛМО. [4]

Автокоды, являясь машинно-ориентированными языками программирования , вместе с машинными языками образуют группу машинно-зависимых языков, поскольку в их основе лежит система счисления определенной ЦВМ. [5]

Автокоды — это машинно-ориентированные языки программирования : они предназначены для того, чтобы в наиболее удобной для человека форме писать программы для конкретных машин. [6]

Язык Ассемблера принадлежит к Машинно-ориентированному языку программирования , занимая промежуточное положение между языком высокого уровня и машинным языком или автокодом. [7]

Для повышения производительности труда программистов созданы машинно-ориентированные языки программирования , называемые также языками символического кодирования. При записи команды на символическом языке используют не двоичные цифры, а предложения текста. Тогда ту же самую команду можно записать так: LT2, ADR, где L означает загрузку ( от английского слова load — загрузить); 2 — номер регистра; ADR — имя адреса основной памяти. [8]

Обычно слово ассемблер включает два понятия: собственно машинно-ориентированный язык программирования , наиболее полно учитывающий специфику ЭВМ, и транслятор с этого языка, переводящий программу в машинные коды. В СМ-3 и СМ-4 к языку уровня ассемблера применяется название Макроассемблер, или, для краткости, Макро, которое используется в изложении. [9]

Автокод, или язык символического программирования, относится к машинно-ориентированным языкам программирования , которые по своим возможностям наиболее близки к языку машины. Это свойство языков позволяет составлять программы, в которых в должной мере могут быть учтены сильные и слабые стороны применяемой для решения задачи вычислительной машины. При использовании же проблемно-ориентированных и универсальных языков программирования учет особенностей ЦВМ возможен лишь в очень слабой степени. [10]

Перечисленные недостатки приводят к значительным сложностям при реализации алгоритма, необходимости использования машинно-ориентированных языков программирования , что в свою очередь затрудняет перестройку программ на основе волнового алгоритма. [12]

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

Машинно-ориентированные языки позволяют записать программу в командах машины, но в удобном для чтения виде. Простейшими машинно-ориентированными языками программирования являются автокоды. Известно большое число автокодов. Часто применяются автокоды типа 1: 1, в которых основные элементы автокода ( оператор, строка) преобразуются в одну команду управляющей машины. [14]

Правила языка называются синтаксисом, а значение символов для пользователя — семантикой. Различают проблемно-ориентированные и машинно-ориентированные языки программирования . Проблемно-ориентированные языки предназначены для постановки определенных проблем независимо от того, на какой машине программа будет считаться. Машинно-ориентированные языки, напротив, учитывают особенности данной машины и рассчитаны только на нее. [15]

Машинно ориентированное программирование

Рассматривается два подхода к машинно независимому эффективному программированию. Язык Forth — пример организации вычислений над стеком. Можно рассматривать как язык-ядро с возможностью практически неограниченного проблемно-ориентированного расширения. Язык Little — пример традиционной организации вычислений над структурированными битовыми строками. Основные конструкции аналогичны фортрановским, но с учетом современных решений, упрощающих реализацию компилятора. Оба языка допускают порождение эффективного кода «хорошо» написанных программ [ [ 3 ] , [ 32 ] ].

Появление в 70-х годах микропроцессорных средств с малым объемом памяти и сравнительно невысоким быстродействием вызвало очевидные трудности в применении привычных языков высокого уровня. Не удивительно, что поиск подходящих средств программирования сменил приоритеты в оценке свойств языков и систем программирования. На передний план вышли машинно-ориентированные языки-оболочки, поддерживающие достижение эффективности и компактности программ при достаточном уровне абстрагирования от конкретики процессоров, сравнимом с абстрагированием в языках высокого уровня. Особо ярким явлением в эти годы стал язык Forth , сохранивший многочисленных приверженцев и в наши дни, когда пресс технических характеристик изрядно помягчал [ [ 6 ] ]. Little приведен как пример альтернативного подходе к решению проблемы машинно ориентированного программирования.

Наиболее убедительное применение Forth получил как средство разработки специализированных систем, создаваемых по методике раскрутки, начиная с тщательно минимизированного ядра с рядом последовательных шагов расширения в рамках единой оболочки. Сам язык устроен по такому же принципу, так что такая технология пошагового программирования впитывается при изучении идей и средств системы программирования на базе Forth -а. Кроме общеизвестных примеров про системы управления астрономическими телескопами и лазерами, следует упомянуть IBMCAD — аналог системы инженерного AutoCAD и систему автоматизации издательского дела МРАМОР. Для последней именно на Форте была создана предельно компактная операционная система объемом около 4 килобайт . Форт был успешно применен при реализации языка PostScript, до сих пор используется при разработке видеоигр и систем начальной загрузки ОС, чувствительных к скорости срабатывания. При значительном внешнем несходстве Форт обладает концептуальным родством с языком Лисп , что побудило в 80-е годы к разработке языка ФоЛи, объединяющего достоинства обоих языков.

Программирование на Форте требует вдумчивости и аккуратности. Достижимость лаконичных форм дается ценой нестандартных индивидуальных решений, мало приспособленных к передаче программ в чужие руки. Лозунги «Программируйте все сами!» и «Не бойтесь все переписывать заново!» правильно отражают подход к программированию на Форте. Успех достигается явным максимализмом в тщательной отладке и способностью видеть задачу программирования в развитии.

Язык Форт предложен Чарльзом Муром в 1968 году. К середине 70-х Форт стал третьим по популярности после Бейсика и Паскаля, завоевавшим свои позиции при освоении микропроцессоных средств. По технике программирования Форт весьма похож на макроассемблер, только вместо системы команд над машинными словами в нем используется система операций над стеком.

Читать еще:  Декларативный язык программирования

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

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

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

Все это позволяет утверждать, что Форт — это и технология, и философия, и язык программирования , обеспечивающий управляемый компромисс между сложностью разработки программ и удобным программированием в терминах задачи.

Хорошо написанные на Форте программы обладают гибкостью, универсальностью, компактностью, расширяемостью и простотой. Удобочитаемость программ не входит в число достоинств этого языка, но при определенных лингвистических навыках потенциально достижима. Возможна выработка стиля программирования на Форте типа мимикрии под другие языки.

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

Традиционно отмечаемые недостатки Форта:

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

Активный популяризатор Форта Мур отметил: «Форт не уравнитель, а усилитель!»

Итак, программа на Форте строится как последовательность слов. Данные — это тоже слова. Логическое значение » истина » — 0. В качестве элементарных данных выступают литеры , целые без знака и со знаком, неотрицательные целые, адреса, двойные слова и др. типы данных.

Имеются константы TRUE и FALSE , символизирующие логические значения.

Заключение в кавычки «строка» означает вариант со счетчиком и ограничитель — 0

Состояние системы программирования можно исследовать на уровне системных переменных. Различается состояние компиляции (создание кода программы) и интерпретации (непосредственное исполнение программы). Если STATE = 0 , то система ведет исполнение программы.

Системная переменная BASE задает систему счисления.

Исполнение программы организовано как диалог над стеком. Каждая команда знает, что взять из стека и во что преобразовать:

Кроме обычных арифметических операций имеются эффективно реализуемые:

Слово стека занимает 16 разрядов, но имеются операции над двойными словами — в 32 разряда:

Есть вариант умножения чисел без потери точности — результат пишется в двойное слово :

Система программирования использует при работе ряд стеков:

Имеются операции , работающие с адресами и памятью:

МАШИННО-ОРИЕНТИРОВАННЫЙ ЯЗЫК

— язык программирования, позволяющий при составлении программ учитывать особенности системы команд и представления информации в объектной вычислительной машине. М.-о. я., в отличие от универсальных проблемно-ориентированных языков программирования, осуществляющих отображение множества Рвходных программ во множество Ммашинных программ, стремятся отображать Рна М.

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

Лит.:[1]Джермейн К., Программирование на IBM/360, пер. с англ., 2 изд., М., 1973; [2] Браун П., Макропроцессоры и мобильность программного обеспечения, пер. с англ., М., 1977; [3] Катков В. Л., Рар А. Ф., Программирование на языке ЭПСИЛОН, Новосиб., 1972. ‘ А. П. Ершов.

Математическая энциклопедия. — М.: Советская энциклопедия . И. М. Виноградов . 1977—1985 .

Смотреть что такое «МАШИННО-ОРИЕНТИРОВАННЫЙ ЯЗЫК» в других словарях:

машинно-ориентированный язык — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN machine oriented language … Справочник технического переводчика

машинно-ориентированный язык (программирования) — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN computer oriented languageCOL … Справочник технического переводчика

машинно-ориентированный язык программирования высокого уровня — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN machine oriented high level languageMOHLL … Справочник технического переводчика

язык ПЛ/М — Процедурный машинно ориентированный язык высокого уровня. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом … Справочник технического переводчика

Язык ассемблера — Листинг программы на языке ассемблера Motorola MC6800 (слева идут адреса и машинные коды в шестнадцатеричной системе, вычисленные и сгенерированн … Википедия

Язык программирования Рубин — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия

ЯЗЫК ПРОГРАММИРОВАНИЯ — знаковая система, применяемая для записи процессов решения задач на ЭВМ; средство общения пользователя с ЭВМ, позволяющее на формально логическом уровне описывать последовательность операции по обработке информации. Основу Я. п. составляют… … Сельско-хозяйственный энциклопедический словарь

язык программирования — язык программирования, знаковая система, применяемая для записи процессов решения задач на ЭВМ; средство общения пользователя с ЭВМ, позволяющее на формально логическом уровне описывать последовательность операций по обработке информации. Основу… … Сельское хозяйство. Большой энциклопедический словарь

Рубин (язык программирования) — Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия

АЛГОРИТМИЧЕСКИЙ ЯЗЫК — формальный язык программирования, формальный язык, предназначенный для описания вычислительных процессов, или, что то же, для записи алгоритмов, подлежащих выполнению на вычислительных машинах.. Различают проблемно ориентированные А. я. (А. я.… … Математическая энциклопедия

Машинно ориентированный язык программирования

Язы́к программи́рования — формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.

Читать еще:  Операторы языков программирования

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

Что такое уровень языка программирования?

В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.

Любой алгоритм, как мы знаем, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.

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

  • машинные;
  • машинно-о p иентиpованные ( ассемблеpы );
  • машинно-независимые (языки высокого уровня).

Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных.

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

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

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

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

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

Языки высокого уровня делятся на :

  • процедурные (алгоритмические) ( Basic , Pascal , C и др.), которые предназначены для однозначного описания алгоритмов; для решения задачи процедурные языки требуют в той или иной форме явно записать процедуру ее решения;
  • логические ( Prolog , Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания;
  • объектно-ориентированные ( Object Pascal , C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.

Преимущества языков высокого уровня:

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

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

Компилируемые и интерпретируемые языки

Языки программирования могут быть разделены на компилируемые и интерпретируемые.

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

Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода.

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

Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).

Для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.

Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что создаёт трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.

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

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

Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» ( Just-in-time compilation , JIT). Для Java байт-код исполняется виртуальной машиной Java ( Java Virtual Machine , JVM), для C# — Common Language Runtime .

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

Ссылка на основную публикацию
Adblock
detector