Альфа-язык и транслятор

Паскаль

после шести лет работы и выхода Пересмотренного cообщения Алгол 68 превратился во вполне симпатичный и понятный языкИ вот товарищ Вирт сделал такой финт ушами — создал язык, который назвал Паскаль.Паскаль — «обрезыш» Алгола 68. Т. е. взял ножницы, отрезал это, это, это…Нестыковок было много.когда мы стали чинить Паскаль, получился Алгол 68вместе с человеком по фамилии Йенсеноказалось, что Йенсен — женщина, Кетлин. Честно говоря, для меня это было неожиданностью. Она очень много сделала для превращения Паскаля из игрушки в серьезный язык.Выступление Кетлин Йенсен на симпозиуме, посвященном 80-летию Никлауса Виртапоявился язык, которым уже можно было пользоватьсяНиколаус Вирт и компьютер «Лилит», разработанный в Швейцарской высшей технической школе Цюриха. Специально для реализации ПО этой системы Вирт создал новый язык Модула-2. 1981 г.Паскаль в конце концов стал очень популярным у школьников и студентов. Для начального обучения программированию он и правда хорош.В промышленное программирование Паскаль так, по-моему, и не пошел — туда, где требуется ответственность и нужно писать большие программные комплексы с высокой надежностью.

Алгамс

Опыт создания Альфа-транслятора стал основой для разработки оптимизирующего транслятора Алгамс для машин серии «Урал» разной производительности, ориентированных на разных потребителей. Первой машиной этого ряда был «Урал14Д».

Команду разработчиков возглавлял Геннадий Исаакович Кожухин, а проект начался во второй половине 1967 года и должен был завершиться в течение двух лет. Я был еще студентом, и в мою задачу входил анализ программы с целью сбора детальной информации о вызовах процедур и списках их параметров. С учетом того, что язык был рекурсивным, а также имелась возможность подстановки имени процедуры в качестве параметра, это была довольно непростая задача. В дальнейшем предполагалось использовать эту информацию для оптимизации вызовов процедур. Кожухин строго вел разработку — мы регулярно собирались и обсуждали планы работ и полученные результаты. Работа эта велась в течение года, но завершена не была — машины «Урал» не показали высокой производительности и надежности и не выдержали конкуренции с БЭСМ-6.

Процесс трансляции

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

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

  1. Трансляторы однопроходного типа.
  2. Трансляторы двухпроходного типа.
  3. Трансляторы, выполняющие более двух проходов.

Основным достоинством однопроходного компилятора считается высокая скорость компиляции, а главным недостатком является формирование, как правило, не очень эффективного кода.

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

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

Рисунок 1. Этапы трансляции. Автор24 — интернет-биржа студенческих работ

Фаза анализа программы включает в свой состав следующие шаги:

  1. Лексический анализ.
  2. Синтаксический анализ.
  3. Семантический анализ.

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

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

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

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

Наиболее общими задачами, решаемыми семантическим анализатором, считаются следующие задачи:

  1. Нахождение ошибок времени компиляции.
  2. Заполнение таблицы символов, которая была создана на этапе лексического анализа, определёнными значениями, несущими дополнительные информационные данные о каждом элементе таблицы.
  3. Выполнение замены макросов их определениями.
  4. Реализация директив времени компиляции.

Трансляторы

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

Существует три вида трансляторов: интерпретаторы, компиляторы и ассемблеры.

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

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

Ассемблеры переводят программу, записанную на языке ассемблера (автокода), в программу на машинном языке.

Любой транслятор решает следующие основные задачи:

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

• генерирует выходную программу (ее часто называют объектной или рабочей) на языке команд ЭВМ (в некоторых случаях транслятор генерирует выходную программу на промежуточном языке, например, на языке ассемблера);

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

Альфа-транслятор

Альфа-транслятор, один из первых советских трансляторов, разработанный в 1961 — 1964 гг. в Вычислительном центре Сибирского отделения АН СССР под руководством А. П. Ершова, построен по схеме, показанной на рис. 1.6. Процесс трансляции разделен на две фазы: перевод на внутренний язык и перевод на язык машины. Каждая фаза состоит из трех функционально однотипных этапов. На первой фазе этап анализа совмещает лексический и синтаксический анализы. Третий этап на каждой фазе оптимизирует программу.

В Альфа-трансляторе таблица имен рассчитана на 512 идентификаторов.

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

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

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

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

Приблизительно в то же время, в которое велась разработка систем ТА-1 и ТА-2, под руководством А. П. Ершова началось создание альфа-системы. Основу системы составляет алголоподобный язык альфа. Он отличается от алгола-60, с одной стороны, рядом ограничений на использование рекурсий и, с другой стороны, некоторыми расширениями за счет: введения матричной арифметики. Создатели транслирующей системы альфа затратили много усилий, добиваясь того, чтобы полученные после трансляции программы работали максимально эффективно. Альфа-транслятор — первый в нашей стране оптимизирующий транслятор.

От Лексикона — к АИСТу

Анализируя Альфу и Бету, Ершов задумался: почему бы не создать язык, который станет общей средой для разработки и обоснования программ? Так родилась идея единого лексикона программирования, или лингвистики систем.

«Лингвистическая система с фразовой структурой, содержащая в себе формальную нотацию для выражения всех общезначимых конструкций, употребляемых при формулировании условий задач, при синтезе и преобразовании программ…»

Андрей Петрович Ершов,
учёный-информатик

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

«Программа, выраженная средствами лексикона, в определённом смысле содержит в своём тексте описание своей семантики в виде совокупности нетривиальных фактов о вычисляемой ею функции — в отличие от чистых программ, которые не говорят ничего о своих функциональных свойствах».

Андрей Петрович Ершов,
учёный-информатик

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

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

«Программисты — жрецы-посредники между машинами и человечеством».

Андрей Петрович Ершов,
учёный-информатик

Не менее значимым проектом учёного стали АИСТы — автоматические информационные станции. Это были распределительные системы, которые позволяли ЭВМ выполнять несколько процессов одновременно.

Ершов воплотил в АИСТах результаты исследований по архитектуре вычислительных комплексов, ПО и моделированию вычислительных систем. Он создал первую в стране развитую систему разделения времени — АИСТ-0 — и продемонстрировал её на комплексе, собранном из нескольких ЭВМ.

Также Андрей Петрович реализовал в АИСТе идеи, которые и сегодня применяются в распределительных системах:

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

Сущность понятия «транслятор». Виды трансляторов

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

  1. Трансляторы, компилирующие окончательный исполняемый код.
  2. Трансляторы, компилирующие интерпретируемый код, для выполнения которого требуется дополнительное программное обеспечение.

Окончательным исполняемым кодом считаются приложения, которые реализованы как EXE-файлы, DLL-библиотеки, COM-компоненты. К интерпретируемому коду могут быть отнесены байт-коды JAVA-программ, исполняемых при посредстве виртуальной машины JVM.

Языки, которые формируют окончательный исполняемый код, именуются компилируемыми языками. К ним относятся языки С, C++, FORTRAN, Pascal. Языки, которые реализуют интерпретируемый код, носят название интерпретируемых языков. К таким языкам могут быть отнесены языки Java, LISP, Perl, Prolog.

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

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

Программирование в кодах

Здание в Феофании, сейчас районе, а в 1950-х — пригороде Киева, где работал Сергей ЛебедевГлавная проблема программирования в кодах не «01 02 03» — это легко запомнить. Но если тебе нужно что-то вставить между двумя ячейками — по логике работы, чтобы какие-то массивы синхронизировались — все адреса ниже этой вставки поползут. Придется все переписывать, а самое главное, заново набивать.Но все равно можно было складывать яблоки с коровами (эта шутка тогда была очень популярна). Поскольку что такое адрес 101? Что в нем лежит? А черт его знает. А что лежит в адресе 102? Тот же ответ. Народ ругался, потому что ошибок было множество, и отладка программ шла тяжело.

Альфа и Бета советского программирования

В 1957 году Ершову предложили возглавить отдел теории алгоритмов и программирования Института математики с вычислительным центром в новосибирском Академгородке. Там он и провёл оставшуюся жизнь.

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

Естественно, Альфа требовала транслятора, чтобы запускать программный код на ЭВМ М-20, которая с 1959 года стала основной вычислительной машиной в СССР. Процесс создания транслятора команда Ершова задокументировала в книгах «Рождение α-транслятора», «Детство α-транслятора» и «Отрочество α-транслятора». В них описана вся работа над проектом: технические проблемы, ход их решения и результаты. И всё для того, чтобы облегчить изучение Альфы другим разработчикам.

ЭВМ М-20Фото: Институт систем информатики имени А. П. Ершова СО РАН

«Альфа-транслятор» стал первым в мире оптимизирующим транслятором с языков семейства Algol, в котором были реализованы прорывные по тем временам возможности: многопроходная система трансляции, алгоритмы оптимизации и другие методы экономии памяти.

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

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

В Бете были реализованы концепции из самых модных высокоуровневых языков того времени — Pascal, С, Ada, Modula-2.

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

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

  • Сначала происходил поиск понятий и конструкций, общих для всех языков, и определялся единый семантический базис.
  • Затем этот базис оптимизировался, преобразовывался, и из него генерировался объектный код для различных ЭВМ.

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

Алгол 68

взять за основу будущего языка двухуровневые грамматики ван ВейнгаарденаЭто был жуткий язык, кошмарный.Лет через пять я в этом дипломе нашел ошибку, но, когда защищался, никто ее не заметил.Еще шесть лет напряженной работы большого комитета.«Алгол: успехи и неудачи», конспект доклада швейцарского ученого Петера Наура, представленного на коллоквиуме «10 лет Алгола» в Цюрихе 31 мая 1968 года. Из архива академика Андрея Ершовая любил работать ночью. Там стояли американские и советские устройства. Перекинешь кабель, и работаешь нормально на хорошем американском оборудовании, а утром переключаешь обратно. Днем такого делать не давали.Когда мы начали заниматься внедрением Алгола 68, выяснилось, что его надежность никому особенно не нужна, кроме военных.Оглавление Пересмотренного сообщения об Алголе 68, изданного рабочей группой 2.1. Первым в списке редакторов указан Адриан ван Вейнгаарден

Фортран

Фортран позволял записывать формулу, с него были созданы первые трансляторы, гораздо более сложныеДжон Бэкус признавался, что главным стимулом в поиске ему служила лень и желание упростить процесс написания программ. На фото — Бэкус на обложке Think, корпоративного журнала IBMНо, как обычно, не обошлось без существенных ошибок.В результате был сорван космический полет на Венеру.После долгих разбирательств решили, что во всем виноват Фортран: правила определения языка оказались очень неудобны и ненадежны.В здании Ленинградского научно-исследовательского радиотехнического института — Российского Института радионавигации и времени — сейчас находится офис банка «Россия»Тогда мы переводили десятки программ с Фортрана на Алгол 68 и всегда выигрывали в четыре раза. Я думал, что тут какое-то жульничество, потому что выигрывать мы должны были вдвое — просто за счет лучшего транслятора. Почему же выигрываем в четыре? Разобрались.Один разна одной из программ ответ разошелся в 4 раза с фортраннымСтал разбираться.Было написано:
X = 9.3.
Но Х был двойной точности, а 9.3 — короткое число. В результате породились две команды.
LE 0, =E ‘9.3’
STD 0, Х.
На ЕС ЭВМ — была такая машина, копия IBM 360 — слово 64 разряда. И вот команда LE загружала только в левую половину регистра, а в правой половине оставляла мусор. А команда STD выгружала весь регистр. Поскольку процесс был плохо обусловлен, т. е. малые изменения входных данных сильно влияли на результат, ответ после 11 минут процессорного времени разошелся в четыре раза. Оказывается, надо было написать тут еще шесть нулей:
Х = 9.3000000
Я эту ошибку нашел и запомнил на всю жизнь, хотя это 40 лет назад было.
Есть понятие «дружественная система», а есть — «недружественной». Это типичный пример недружественной системы.

Альфа-6

В 1970—75 годах мне посчастливилось быть в команде разработчиков транслятора Альфа-6, которую в большинстве составляли старшекурсники мехмата НГУ. Транслятор был разбит на блоки. Каждый блок — самостоятельная задача. Над каждым блоком должны были работать по два человека. Делили нас на пары по тайному рейтингу. Каждый записывал на бумаге, с кем бы он хотел работать в паре, упоминая далее всех в порядке предпочтения. Результаты были известны только руководителям проекта. Разделение по парам оказалось очень удачным — работали с огоньком, подстегивая и помогая друг другу. Много лет спустя идея парного программирования была декларирована в экстремальной технологии разработки программ.

В 1970 году не было оболочки транслятора — нам пришлось, кроме собственно транслятора, сделать еще элементы его оболочки: текстовый редактор, отладчик и пр. К нашей гордости, транслятор пригодился для расчета реакторов в ВЦ Института им. И. В. Курчатова, откуда и поступил заказ на разработку оболочки. Чтобы справиться в короткие сроки, Андрей Петрович Ершов предложил испробовать идею Харлана Миллза, известную как «Метод хирургической бригады» с ролевым разделением работ. Мы с энтузиазмом стали делить роли — «главный программист», «редактор», «тестировщик», «архивариус». Однако ролей оказалось больше, чем исполнителей в проекте, и пришлось совмещать функции. Заодно освоили и ротацию, заменяя и дублируя друг друга при необходимости. Результаты превзошли все ожидания — производительность труда разработчиков возросла более чем в два раза.

В проекте Альфа-6 хорошо сработала идея коллективной ответственности — если в проекте каждый делает только свою подзадачу, выполняя роли проектировщика, кодировщика, тестировщика и пр., то в случае неудачи он «завалит» только свой фронт работ. Но если исполнитель выполняет определенную роль для всех подзадач, то в случае неудачи он поставит под угрозу весь проект. Не хочется подводить товарищей и проект в целом. Поэтому стараешься работать лучше. Вот так молодая команда стала одной из первых в мире, использовавшей ставший сегодня классическим метод Миллза, известный как «Команда главного программиста» или «Метод главного программиста».

Триумф за границей

Путь к мировой известности оказался более тернистым: разработки советских программистов держали под секретом. При этом интерес к ним во всём мире был огромным, ведь успехи СССР в освоении космоса были у всех на слуху.

«На Западе возникли опасения, что СССР захватит первенство и в области вычислительной техники», — писала известная исследовательница советских и постсоветских информационных технологий, социолог Ксения Татарченко в своей монографии Cold War Origins of the International Federation.

С 1959 года Ершов стал учёным секретарём комиссии по международным связям ВЦ АН СССР. Это позволило общаться с зарубежными коллегами, обмениваться с ними опытом и знаниями. В частности, Ершов познакомился с профессором Технологического университета Карнеги Перлисом, который открыл ему Algol.

«Hello, World!» на языке Algol

Кроме того, советский учёный посетил симпозиум «Механизация процессов мышления» в Англии — первое международное собрание, посвящённое искусственному интеллекту.

Преподавание и конференции

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


Ершов с ученикамиФото: Wikimedia Commons

Параллельно учёный выступал на советских и международных конференциях. В 1981 году на совместной конференции Международной федерации по обработке информации (IFIP) и ЮНЕСКО по применению ЭВМ в обучении Ершов выступил с докладом «Программирование — вторая грамотность». Это название быстро стало мемом и лозунгом на советских плакатах.

Вскоре в рамках эксперимента в Новосибирске начали преподавать программирование в вузах, а затем и информатику в школах. Учёные разработали компьютер «Агат», обучающую систему «Школьница» и язык Рапира.

В 1985 году Ершов с группой соавторов написал первый школьный учебник — «Основы информатики и вычислительной техники». Для записи алгоритмов в книге использовали алголоподобный Русский алгоритмический язык, который в шутку называют «Ершол».


Компьютер «Агат»Фото: Wikimedia Commons

Ершов принял участие в шести конгрессах IFIP как докладчик и организатор. В 1987 году он стал председателем Научного совета АН СССР по проблеме кибернетики, активно участвовал в создании журнала «Микропроцессорные средства и системы».

Классификация трансляторов

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

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

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

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

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

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

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

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

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

Препроцессор — это транслятор с одного языка программирования в другой без создания исполняемого файла или выполнения программы.

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

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

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

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

к алгоритмизации   алгоритмы, струкутуры данных и программирование   СУБД   ЯиМП   3GL   4GL   5GL   технологии прогр.

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: