Язык на котором представлена входная программа называется

Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой. Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом. Понятие трансляции относится не только к языкам программирования, но и к другим компьютерным языкам, вроде языков разметки, аналогичных HTML, и к естественным языкам, вроде английского или русского.

— трансляция программы на язык, близкий к машинному,[2][3] и последующая её компоновка.трансляция программы, составленной на исходном языке, в объектный модуль (осуществляется компилятором.[2]) и последующая её компоновка в готовый к использованию программный модуль.

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

2.1. Языки программирования, трансляторы

Компилировать — производить трансляцию машинной программы с проблемно-ориентированного языка на машинно-ориентированный язык [3] и последующую компоновку программы в готовый к использованию программный модуль.

Трансля́тор — программа или техническое средство, выполняющее трансляцию программы

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

Транслятор — в узком смысле — программа, преобразующая: программу, написанную на одном (входном) языке в программу, представленную на другом (выходном) языке.

Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т. д.

— Программа или техническое средство, выполняющее компиляцию.

— Машинная программа, используемая для компиляции.

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

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

— Программа выполняющая (после трансляции) компоновку программы.

  1. Из каких процессов состоит компиляция? Расскажите об общей структуре компилятора.

Любой компилятор состоит из транслятора и компоновщика. Часто в качестве компоновщика компилятор использует внешний компоновщик, реализованный в виде самостоятельной программы, а сам выполняет лишь трансляцию исходного текста (по этой причине многие ошибочно считают компилятором разновидность транслятора). Компилятор может быть реализован и как своеобразная программа-менеджер, для трансляции программы вызвающая сооствествующий транслятор (трансляторы — если разные части программы написаны на разных языках программирования) и затем — для компоновки программы, — вызывающая компоновщик. Ярким примером такого компилятора является имеющаяся во всех UNIX-системах (и Linux-системах в том числе) утилита make (имеются реализации утилиты make и в других системах, в частности в Windows-системах).

Урок 1. Краткая история языков программирования. Трансляторы

Процесс компиляции состоит из следующих фаз:

Лексический анализ. На этой фазе последовательность символов исходного файла преобразуется в последовательность лексем.

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

Семантический анализ. Древо разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их определениям, типам данных, проверка совместимости типов данных, определение результирующих типов данных выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным древом разбора, новым древом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.

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

Генерация кода. Из промежуточного представления порождается код на целевом языке (в том числе выполняется компоновка программы).

  1. Какую роль выполняет лексический анализ в процессе компиляции?

лексический анализ — процесс аналитического разбора входной последовательности символов (например, такой как исходный код на одном из языков программирования) с целью получения на выходе последовательности символов, называемых «токенами» (подобно группировке букв в словах). Группа символов входной последовательности, идентифицируемая на выходе процесса как токен, называется лексемой. В процессе лексического анализа производится распознавание и выделение лексем из входной последовательности символов.

  1. Как связаны лексический и синтаксический анализ?

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

  1. Дайте определение цепочки, языка. Что такое синтаксис и семантика языка?

Цепочка – некоторая последовательность лексем принадлежащих этому языку и удовлетворяющих синтаксическим правилам.

Цепочка (слово) над алфавитом Σ – конечная последовательность символов: a = c1cc2…cn (ci I Σ)

e — пустая цепочка, Σ* — множество цепочек над Σ

Семантический анализ. Древо разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их определениям, типам данных, проверка совместимости типов данных, определение результирующих типов данных выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным древом разбора, новым древом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.

  1. Какие существуют методы задания языков? Какие дополнительные вопросы
Читайте также:
Первая программа работы детского сада была выпущена

необходимо решить при задании языка программирования?

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

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

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

− задать смысл для каждой правильной программы.

Только первые два вопроса полностью или частично удаётся решить с помощью лексики формальных языков.

  1. Что такое грамматика? Дайте определения грамматики.

Грамматика − это описание способа построения предложений некоторого языка. Иными словами, грамматика − это математическая система, определяющая язык.

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

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

  1. Как выглядит описание грамматики в форме Бэкуса-Наура.

Форма Бэкуса—Наура (сокр. БНФ, Бэкуса—Наура форма) — формальная система описания синтаксиса, в которой одни синтаксические категории последовательно определяются через другие категории. БНФ используется для описания контекстно-свободных формальных грамматик.

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

БНФ-конструкция определяет конечное число символов (нетерминалов). Кроме того, она определяет правила замены символа на какую-то последовательность букв (терминалов) и символов.

  1. Какие классы грамматик существуют? Что такое регулярные грамматики?

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

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

  1. Дайте определения контекстно-свободной грамматики, выводимости цепочки, непосредственной выводимости, длины вывода.

Контекстно-свободная грамматика (КС-грамматика, бесконтекстная грамматика) — частный случай формальной грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются одиночными нетерминалами. Смысл термина «контекстно-свободная» заключается в том, что возможность применить продукцию к нетерминалу, в отличие от общего случая грамматики Хомского, не зависит от контекста этого нетерминала.

Язык, который может быть задан КС-грамматикой, называется контекстно-свободным языком или КС-языком.

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

Для разбора КС-грамматики достаточно автомата со стеком, для разбора не-КС-грамматик может потребоваться полная машина Тьюринга.

Цепочка β ∈ (VT ∪ VN)* выводима из цепочки α ∈ (VT ∪ V N ) + в

грамматике G = (VT , VN , P, S ) (обозначается α⇒*β), если существует последо-

вательность цепочек γ 0 , γ 1 , K , γ n (n≥0) такая, что α = γ 0 => γ 1 => K => γ n = β .

  1. Что такое лексема? Расскажите, какие типы лексем существуют в языках программирования.

Группа символов входной последовательности, идентифицируемая на выходе процесса как токен, называется лексемой. В процессе лексического анализа производится распознавание и выделение лексем из входной последовательности символов.

Распознавание лексем в контексте грамматики обычно производится путём их идентификации (или классификации), согласно идентификаторам (или классам) токенов, определяемых грамматикой языка

  1. Что такое конечный автомат? Дайте определение детерминированного и недетерминированного конечных автоматов.

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

Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово «принимается» автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово «отвергается».

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

Недетерминированный конечный автомат (НКА) является обобщением детерминированного. Недетерминированность автоматов достигается двумя способами:

— Существуют переходы, помеченные пустой цепочкой ε

— Из одного состояния выходит несколько переходов, помеченных одним и тем же символом

  1. Расскажите о возможности преобразования недетерминированного конечного автомата в детерминированный.

Существует теорема, гласящая, что «Любой недетерминированный конечный автомат может быть преобразован в детерминированный так, чтобы их языки совпадали» (такие автоматы называются эквивалентными). Однако, поскольку количество состояний в эквивалентном ДКА в худшем случае растёт экспоненциально с ростом количества состояний исходного НКА, на практике подобная детерминизация не всегда возможна. Кроме того, конечные автоматы с выходом в общем случае не поддаются детерминизации.

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

  1. Какие проблемы необходимо решить при построении сканера на основе конечного автомата?

— Сканер должен выполнить те или иные действия по запоминанию распознанной лексемы (занесение ее в таблицу лексем).

Читайте также:
Увеличить производительность процессора программа

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

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

Источник: studentpmr.ru

Входные языки программирования

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

Содержимое работы — 1 файл

Тема: Входные языки программирования

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

  • Входные языки
  • Предметное обеспечение
  • Системное обеспечение

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

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

Можно выделить следующие типы пользователей ППП:

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

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

История развития входных языков.

В качестве входных языков ППП 1 поколения использовались языки FORTRAN, АЛГОЛ или языки управления заданиями соответствующих операционных систем

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

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

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

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

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

Развитие аппаратного обеспечения повлекло за собой создание разнообразных программных средств поддержки диалогового режима работы (Диалоговые ОС, диалоговые ПП различного назначения). Более того построчный режим диалога, практически уступил место многооконному графическому способу общения.

Использование входных языков в офисном программировании

Источник: www.turboreferat.ru

Трансляция программы, назначение.

Трансля́ция програ́ммы — преобразование программы, представленной на одном из языков программирования, в объектный файл. Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати текст программы и т. д. [1]

Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком, а выходная (результирующая) программа — объектным кодом.

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

Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.

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

Интерпретация программы, назначение

Интерпрета́тор — программа (разновидность транслятора), выполняющая интерпретацию [1] .

Интерпрета́ция — пооператорный (покомандный, построчный) анализ, обработка и тут же выполнение исходной программы или запроса (в отличие от компиляции, при которой программа транслируется без её выполнения) [2] [3] [4] .

Назначение трансляторов, компиляторов и интерпретаторов. Примеры реализации.

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

Читайте также:
Инструкция по программе контур

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.

Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.

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

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

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

Шины материнской платы.

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

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

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

Современные компьютерные шины используют как параллельные, так и последовательные соединения и могут иметь параллельные (англ. multidrop) и цепные (англ. daisy chain) топологии. В случае USB и некоторых других шин могут также использоваться хабы (концентраторы).

Некоторые виды скоростных шин (Fibre Channel, InfiniBand, скоростной Ethernet, SDH) для передачи сигналов используют не электрические соединения, а оптические.

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

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

Шины бывают параллельными (данные переносятся по словам, распределенные между несколькими проводниками) и последовательными (данные переносятся побитово).

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

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

Шины бывают параллельными (данные переносятся по словам, распределенные между несколькими проводниками) и последовательными (данные переносятся побитово).

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

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

По типу исполнения

Массив данных совмещён с устройством выборки (считывающим устройством), в этом случае массив данных часто в разговоре называется «прошивка»:

Один из внутренних ресурсов однокристальной микроЭВМ (микроконтроллера), как правило FlashROM.

Массив данных существует самостоятельно:

монтажные «1» и монтажные «0».

Трансляция программы, назначение.

Трансля́тор — программа или техническое средство, выполняющее трансляцию программы.

Трансля́ция програ́ммы — преобразование программы, представленной на одном из языков программирования, в объектный файл. Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати текст программы и т. д. [1]

Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком, а выходная (результирующая) программа — объектным кодом.

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

Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.

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

Стр 1 из 2 Следующая ⇒

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

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

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

Источник: cyberpedia.su

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru