4.Инструментальное программное обеспечение
Инструментальное ПО предназначено для использования в ходе проектирования, разработки и сопровождения компьютерных программ. К инструментальному ПО можно отнести следующие виды программ:
Средства автоматизированного тестирования программ
Комплект средств разработки (SDK)
Системы управления версиями
Системы программирования и интегрированные среды разработки программ
Системы автоматизации программирования (CASE)
Компилятор – это программное средство для перевода программ, написанных на каком-либо языке программирования, в программы, представленные в двоичных машинных кодах. Компиляторы делятся на три вида – трансляторы, ассемблеры и интерпретаторы.
Транслятор – это компилятор, который полностью переводит программы на каком-либо языке программирования в машинные коды или в так называемый объектный код. Полученная программа в машинных кодах может быть позже преобразована в исполнимый модуль, загружена в оперативную память и запущена на выполнение процессором. Разновидностью транслятора считается ассемблер – программа, которая переводит текст программы, написанный на машинно-ориентированном языке («мнемокоде» или «языке ассемблера») в двоичный код. Понятие ассемблера зачастую связывается непосредственно с машинно-ориентированным языком. Поэтому этот термин иногда используется в значении – язык программирования машинного уровня.
Интерпретатор – это компилятор, который построчно (или по одной команде) переводит исходную программу на языке программирования в двоичные коды и тут же передает этот двоичный код процессору на выполнение.
Компоновщик – программа, которая производит компоновку исполняемого или загрузочного кода – принимает на вход один или несколько объектных модулей и собирает по ним один исполнимый модуль, который может быть загружен в память и запущен на выполнение процессором.
Отладчик – как правило, является частью среды разработки программного обеспечения или отдельным приложением, предназначенным для поиска ошибок в программе. Отладчик позволяет выполнять пошаговую трассировку программы, отслеживать, устанавливать или изменять значения переменных в процессе выполнения программы, устанавливать и удалять контрольные точки или условия остановки и т. д.
Средства автоматизированного тестирования программ – программные модули, позволяющие создавать автоматизированные тесты с минимальным участием человека и в автоматизированном режиме выдавать на вход тестовые последовательности, отслеживать реакцию работы тестируемой программы. Как правило, такие средства тестируют программы на быстродействие, надежность при больших потоках данных, – это так называемое «нагрузочное тестирование». Например, проверка программ при большом сетевом трафике и т.п. Но существуют средства по проверке функциональных возможностей, например инструменты, предназначенные для проверки соответствия приложения предъявляемым бизнес-требованиям.
Генератор документации – программа или пакет программ, позволяющая получать документацию, предназначенную для программистов (документация на API) и/или для конечных пользователей системы, по особым образом комментированному исходному коду и, в некоторых случаях, по исполняемым модулям (полученным на выходе компилятора). Обычно, генератор анализирует исходный код программы, выделяя синтаксические конструкции, соответствующие значимым объектам программы (типам, классам и их членам/свойствам/методам, процедурам/функциям и т. п.). В ходе анализа также используется метаинформация об объектах программы, представленная в виде документирующих комментариев. На основе всей собранной информации формируется готовая документация, как правило, в одном из общепринятых форматов – HTML, HTMLHelp, PDF, RTF и других.
Комплект средств разработки (SDK, Software Development Kit) или «devkit» – набор программ и библиотек подпрограмм, позволяющий специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, видеоигровых консолей, операционных систем и прочих платформ. Программист, как правило, получает SDK непосредственно от разработчика целевой технологии или системы. Часто SDK распространяется через Интернет. Многие SDK распространяются бесплатно для того, чтобы поощрить разработчиков использовать данную технологию или платформу.
Система управления версиями (Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое. Такие системы наиболее широко применяются при разработке программного обеспечения, для хранения исходных кодов разрабатываемой программы. Однако, они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов.
Интегрированная среда разработки (ИСР) (Integrated development environment, IDE) – система программных средств, используемая для разработки программного обеспечения. Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. Хотя и существуют среды разработки, предназначенные для нескольких языков — такие как Eclipse, NetBeans, Embarcadero RAD Studio или Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования — как например, Visual Basic, Delphi, Dev-C++. Частный случай ИСР — среды визуальной разработки, которые включают в себя возможность визуального редактирования интерфейса программы. Иногда ИСР называют «система программирования», хотя в большинстве случаях ИСР охватывает расширенный спектр функций и возможностей.
Системы автоматизации программирования (Computer—Aided System Engineering, CASE) – программный комплекс, автоматизирующий весь технологический процесс анализа, проектирования, разработки, кодирования, отладки и сопровождения сложных программных систем. Основное достоинство CASE-технологии – это поддержка коллективной работы над проектом за счет возможности работы в локальной и глобальной сети разработчиков, экспорта(импорта) любых фрагментов проекта, организованного управления программами. Как правило, CASE-системы поддерживают автоматическую кодогенерацию программ – создание каркаса программой системы и создание полного продукта с системной документацией.
Прикладное программное обеспечение
К этой категории относятся программы, программные комплексы и программные системы с помощью которых решаются конкретные пользовательские задачи в производственных, творческих, развлекательных, учебных или каких-либо других целях. Прикладное ПО делится на следующие виды:
Системы автоматизированного проектирования(САПР)
ПО для автоматизированных систем управления
Программы общего назначения
Программные системы мультимедиа
Настольные издательские системы
Проблемно-ориентированные программы предназначены для решения прикладных задач, связанных с производственной деятельностью человека, например:
Программы бухгалтерского учета;
Программы финансовой деятельности;
Программы управления персоналом;
Программы управления предприятием;
Банковские информационные и автоматизированные системы;
Автоматизированные рабочие места на предприятии;
Системы автоматизированного проектирования (CAD System — Computer Aided Design System) предназначены для поддержки работы конструкторов, технологов, электриков и электронщиков, архитекторов и других специалистов, связанных с разработкой чертежей, схем, моделей, графическим моделированием, конструированием. Системы такого класса очень требовательны к аппаратному обеспечению ЭВМ, быстродействию, памяти. Существенно наличие библиотек встроенных функций, объектов, интерфейсов с графическими системами и базами данных.
В САПР принято выделять семь видов обеспечения:
Техническое (ТО), включающее различные аппаратные средства (ЭВМ, периферийные устройства, сетевое коммутационное оборудование, линии связи, измерительные средства);
Математическое (МО), объединяющее математические методы, модели и алгоритмы для выполнения проектирования;
Программное (ПО), представляемое компьютерными программами САПР;
Информационное (ИО), состоящее из баз данных (БД), систем управления базами данных (СУБД), а также других данных, используемых при проектировании. Вся совокупность используемых при проектировании данных называется информационным фондом САПР, а БД вместе с СУБД носит название банка данных (БнД);
Лингвистическое (ЛО), выражаемое языками общения между проектировщиками и ЭВМ, языками программирования и языками обмена данными между техническими средствами САПР;
Методическое (МетО), включающее различные методики проектирования, иногда к МетО относят также математическое обеспечение;
Организационное (ОО), представляемое штатными расписаниями, должностными инструкциями и другими документами, регламентирующими работу проектного предприятия.
По области применения можно выделить следующие группы САПР:
САПР для применения в отраслях общего машиностроения. Их часто называют машиностроительными САПР или MCAD (Mechanical CAD) системами;
САПР для радиоэлектроники. Их названия — ECAD (Electronic CAD) или EDA (Electronic Design Automation) системы.
САПР в области архитектуры и строительства.
Кроме того, известно большое число более специализированных САПР, или выделяемых в указанных группах, или представляющих самостоятельную ветвь в классификации. Примерами таких систем являются САПР больших интегральных схем (БИС); САПР летательных аппаратов; САПР электрических машин и т.п.
По целевому назначению различают САПР или подсистемы САПР, обеспечивающие разные аспекты проектирования. Так, в составе MCAD появляются CAE/CAD/CAM системы:
САПР функционального проектирования, иначе САПР-Ф или CAE (Computer Aided Engineering) системы.
Конструкторские САПР общего машиностроения — САПР-К, часто называемые просто CAD системами;
Технологические САПР общего машиностроения — САПР-Т, иначе называемые автоматизированными системами технологической подготовки производства АСТПП или системами CAМ (Computer Aided Manufacturing).
Автоматизированная система управления (АСУ) — комплекс аппаратных и программных средств, предназначенный для управления различными процессами в рамках технологического процесса, производства, предприятия. АСУ применяются в различных отраслях промышленности, энергетике, транспорте и т. п. Термин автоматизированная, в отличие от термина автоматическая подчеркивает сохранение за человеком-оператором некоторых функций, связанных с заданием цели, принятием решения, либо с выполнением некоторых функций, не поддающихся автоматизации.
Наиболее всего известны следующие классы АСУ:
Автоматизированная система управления технологическим процессом (АСУ ТП) — решает задачи оперативного управления и контроля техническими объектами в промышленности, энергетике, на транспорте;
Автоматизированная система технической(технологической) подготовкой производства (АСТПП) – система связанная с организацией технических процессов, которые существуют или только появляются на производстве, основанные на программировании станков с числовым программным управлением, изготовлением и сборкой программно-управляемых роботов и т.п.
Автоматизированная система управления производством (АСУ П) – решает задачи организации производства, включая основные производственные процессы, входящую и исходящую логистику. Осуществляет краткосрочное планирование выпуска с учётом производственных мощностей, анализ качества продукции, моделирование производственного процесса. Для решения этих задач применяются MISиMES-системы, а такжеLIMS-системы.
Автоматизированная система управления предприятием (АСУП) — для решения этих задач применяются MRP,MRP II и ERP-системы. Например, если предприятием является высшее учебное заведение, имеет место АСУ ВУЗ.
В качестве примера наиболее известных АСУ можно выделить:
Автоматизированная система управления дорожным движением или АСУД — предназначена для управления транспортных средств и пешеходных потоков на дорожной сети города или автомагистрали;
Автоматизированная система управления уличным освещением («АСУ УО») — предназначена для организации автоматизации централизованного управления уличным освещением;
«Автоматизированная система управления» для гостиниц;
Автоматизированная система контроля проезда (АСКП) в общественном транспорте г.Москвы и др.
В последнее время повсеместно используются и внедряются автоматизированные системы обработки информации и управления (АСОИУ) – это широкий класс автоматизированных систем управления, связанных с автоматизацией в области обработки, хранения и передачи информации. АСОИУ в отличие от АСУ могут применяться практически повсеместно, в виде информационных систем, систем управления, систем автоматизации практически любой сферы деятельности человека. Современные АСОИУ базируются на использовании вычислительных сетей, ориентированы на обработку графической, видео- и звуковой информации, используют технологии мультимедиа, элементы систем искусственного интеллекта. Без такого рода программного обеспечения в настоящее время трудно себе представить современное предприятие, независимо от размера и направления деятельности. Этим объясняется стремительный рост использования АСОИУ во всех отраслях экономики.
К группе программ общего назначения можно отнести:
Системы управления базами данных (СУБД)
Средства презентационной графики
Системы управления базами данных (СУБД) – обеспечивают организацию и хранение локальных БД на автономно работающих компьютерах либо централизованное хранение БД на файл-сервере и сетевой доступ к ним. В современных СУБД содержатся элементы CASE-технологии процесса проектирования, в частности:
Визуализация схем баз данных;
Автоматическая поддержка целостности БД при различных видах обработки (включение, удаление, модификация);
Наличие так называемых мастеров, обеспечивающих поддержку процесса проектирования;
Шаблоны и прототипы структур БД, отчетов форм и т.д.
Серверы БД – это ПО, предназначенное для создания и использования при работе в сети интегрированных БД в архитектуре клиент-сервер.
Многопользовательские СУБД в сетевом варианте обработки информации хранят данные на файл-сервере, специально выделенном компьютере, но сама обработки ведется на рабочих станциях.
Общим для различных видов БД является использование реляционного языка SQL (Structured Query Language) для реализации запросов к данным.
Генераторы отчетов (серверы отчетов) обеспечивают реализацию запросов и формирование отчетов в печатном или экранном виде в условиях сети с архитектурой клиент-сервер. Сервер отчетов подключается к серверу БД, используя драйверы сервиса БД (Crystal Reports, Profit for windows).
Текстовые процессоры предназначены для работы с текстовыми документами. Развитием данного направления являются издательские системы Microsoft Word).
Табличные процессоры являются удобной средой для вычислений, которая содержит средства деловой графики, средства специализированной обработки (Microsoft Excel).
Средства презентационной графики – это специализированные программы, предназначенные для создания изображений и их показ на экране, подготовка слайд-фильмов, мультфильмов и их проектирования (Microsoft PowerPoint, Flash).
Интегрированные пакеты – это набор нескольких программных продуктов, функционально дополняющих друг друга, поддерживающих единые информационные технологии, реализованные на единой операционной вычислительной платформе (Microsoft Office).
Компоненты интегрированных пакетов могут работать изолированно друг от друга, имеют общий интерфейс, благодаря чему их лучше осваивать.
Методо-ориентированные ППП обеспечивают, независимо от предметной области и функции информационных систем, математические, статистические и другие методы решения задач. Наиболее распространены методы математического программирования, решения дифференциальных уравнений, имитационного моделирования, исследования операций (Storm, SYSTAT, SAS и др.)
Офисные ППП обеспечивают организационное управление деятельностью офиса.
В разряд офисных ППП входят:
Органайзеры (планировщики) – ПО для планирования рабочего времени, составления протоколов встреч, расписаний, ведения записей и телефонной книжки (калькулятор, записная книжка, часы, календарь и т.п.)
Программы-переводчики, средства проверки орфографии, распознавание текста (Tiger – система распознавания русского языка, Stylus Lingvo Office, содержащий Fine Reader, Stylus for Windows – переводчик на указанный язык, корректор орфографии Lingvo Corrector и резидентный словарь Lingvo)
Коммуникационные пакеты, предназначенные для организации взаимодействия пользователей с удаленными абонентами или информационными ресурсами сети (ICQ и др.)
Браузеры, средства создания WWW-страниц
Средства электронной почты (Pegasys Mail)
Настольные издательские системы – это широкий класс ПО, который реализует основные компоненты издательской деятельности.
Данный класс ПО включает программы, обеспечивающие:
Форматирование и редактирование текстов
Автоматическую разбивку текста на страницы
Компьютерную верстку печатной страницы
К настольным издательским системам относятся:
PhotoShop for Windows
Программные средства мультимедиа. Основное значение данных программных средств – создание и использование аудио- и видеоинформации для расширения информационного пространства пользователя (различные БД компьютерных произведений искусства, видеотеки, медиатеки, библиотеки звуковых записей и т.д.)
Системы искусственного интеллекта:
Программы-оболочки для создания экспертных систем путем наполнения баз знаний и правил логического вывода
Готовые экспертные системы для принятия решений в рамках определенных предметных областей
Системы анализа и распознавания речи, текста и т.п.
Под интеллектуальными системами (ИС) можно понимать автоматические и автоматизированные системы с элементами искусственного интеллекта (ИИ).
Основными направлениями ИИ являются:
Представление знаний и разработка систем, основанных на знаниях
Творчество и игры (шахматы, шашки, го)
Разработка естественно-языковых интерфейсов и машинный перевод текстов
Распознавание образов (каждому объекту ставится в соответствие матрица признаков, по которой проходит его распознание)
Новые архитектуры компонентов (нейрокомпьютеры)
Специальное ПО (языки Лисп, Пролог)
Обучение и самообучение (включают модели, методы и алгоритмы, ориентированные на автоматическое накопление знаний на основе анализа и обобщения данных)
Знания – это выявление закономерности предметной области (принципы, связи, законы), позволяющие решать задачи в этой области. Знания – это данные о данных, или метаданные.
Модели представления знаний:
Формальные логические модели
Продукционная модель, или модель, основанная на правилах, позволяет представлять знания в виде предложений типа:
Если (условие), то (действие).
Под условием понимается некоторое предложение – образец, по которому осуществляется поиск в базе знаний (БЗ), а под действиями – действия, совершаемые при успешном выполнении поиска.
БЗ состоит из набора правил (продукций). Программа, осуществляющая перебор правил, называется машиной вывода. Машина вывода запускается на основании исходных данных – фактов.
Примеры экспертных систем, в которых используются в качестве модели представления знаний продукционные модели:
Семантическая сеть – это ориентированный граф, вершины которого – понятия, а дуги – отношения между ними.
Понятиями обычно выступают абстрактные или конкретные объекты, а отношения – это связи типа:
— Имеет частью (Has part)
Обязательно наличие трех типов отношений:
— Класс – элемент класса
— Пример элемента класса
Примеры экспертных систем, которые используют в качестве модели представления знаний семантические сети:
Фреймы – это структура знаний для представления какого-либо абстрактного образа или ситуации. Для представления знаний в какой-либо предметной области, как правило, используют сети фреймов. В качестве значения слота может выступать другой фрейм.
Примеры экспертных систем, которые используют в качестве модели представления знаний сети фреймов:
Формальные логические модели основаны на классическом исчислении предикатов первого порядка. В настоящее время при разработке ЭС эти модели практически не используются.
Экспертные системы – это программные комплексы, содержащие знания экспертов в конкретных предметных областях и тиражирующие этот опыт для консультаций менее квалифицированных пользователей.
Инструментальные средства построения экспертных систем:
— Традиционные языки программирования (С, С+, Паскаль и т.п.)
— Языки ИИ (LIPS, PROLOG)
— Специальный программный инструментарий (набор различных библиотек – KEE, KRL, ARTS и др.)
— «Оболочки», т.е. готовые ЭС без наполненной БЗ
Этапы разработки ЭС:
— Выбор подходящей проблемы
— Разработка прототипной системы (усеченный вариант ЭС)
— Развитие прототипа до промышленной ЭС
Существует несколько стратегий получения знаний:
— Приобретение знаний – автоматизированное построение БЗ посредством диалога эксперта и специальной программы (при этом структура знаний заранее закладывается в программу)
— Извлечение знаний – живой контакт инженера по знаниям и эксперта, в результате которого становится явным процесс рассуждений экспертов при принятии решений, структура их представлений о предметной области
— Формулирование знаний – использование различных моделей, методов и алгоритмов анализа данных для получения знаний и обучения
— Структурирование знаний – процесс создания полуформализованного описания предметной области в виде поля знаний
— Формализация знаний – реализация поля знаний на подходящем языке представления знаний
Технологии программирования
Технологии программирования – это технологии разработки программ для ЭВМ, которые будут использоваться людьми для решения различных задач на ЭВМ. В ТП рассматриваются все этапы программирования, их порядок и специфику.
Разработка ПО – это род деятельности (профессия) и процесс, направленный на создание и поддержание работоспособности, качества и надежности программного обеспечения, используя технологии, методологию и практики из информатики, управления проектами, математики, инженерии и других областей знания.
В технологический цикл разработки программной системы входит:
1. Постановка задачи, анализ и уточнение требований, предъявляемых к системе
2. Определение спецификаций и разработка системной архитектуры
3. Детальное проектирование модулей
4. Программирование (кодирование)
5. Тестирование и отладка
6. Эксплуатация и сопровождение
Техническое задание содержит следующие пункты:
— Требования к программе или программному изделию
— Требования к программной документации
— Стадии и этапы разработки
— Порядок контроля и приема
1. Функции системы
2. Сфера применения
4. Программные средства
5. Режимы работы
6. Связь с внешней средой
7. Входные и выходные промежуточные данные
8. Управляющие параметры
9. Качество системы
10. Надежность функционирования
11. Защита и полнота информации
12. Документация по системе
ПЕРТ (от англ. «program evaluation review technique» — методика анализа и корректирования планов).
ПЕРТ-диаграмма представляет собой граф, содержащий описания работ и событий и характеризующий процесс взаимодействия работ во времени
В процесс проектирования входит:
— Определение различных потоков данных
(входные, промежуточные, выходные)
— Определение структур данных и их носителей
Методы разработки данных:
Методы проектирования программ:
— Методы нисходящего проектирования
— Стратегия пошагового уточнения
Связность модуля определяется как мера независимости его частей. Чем выше связность модуля, тем лучше результат проектирования.
Типы связности модуля:
Сцепление модулей представляет собой меру относительной независимости модулей, которая определяет их читабельность и сохранность.
Программа перевода исходного кода компьютерной программы в объектный машинный код
Википедия Значение слова в словаре Википедия
Компиля́тор — программа или техническое средство, выполняющее компиляцию . Компиля́ция — трансляция программы , составленной на исходном языке высокого уровня , в эквивалентную программу на низкоуровневом языке , близком машинному коду ( абсолютный код .
Примеры употребления слова компилятор в литературе.
Поэтому компилятор генерирует адреса для виртуального адресного пространства заданного диапазона, а устройство управления памятью, называемое диспетчером памяти, транслирует виртуальные адреса, сгенерированные компилятором, в адреса ячеек, расположенных в физической памяти.
Все московские ученые, поэты, переводчики, библиоманы, книгопродавцы, компиляторы, разносчики книг, бумажные фабриканты — все любили меня и старались помогать в моих нуждах.
Шопенгауэр предпочитает буддизм христианству, и известный компилятор Бюхнер поддерживает его в этом.
Под пером этих компиляторов британские воины стали норманнскими рыцарями, совершающими подвиги доблести и чести при дворах славных монархов, черпая вдохновение в фантастических описаниях рыцарских добродетелей, культивируемых трубадурами, в то время как друиды почти отказались от своей друидической практики, попахивающей языческим варварством, и обратились к обыкновенной магии, распространенной у всех латинских или, лучше сказать, романских народов.
Впоследствии компилятор заменит все не заключенные в кавычки появления этого имени на соответствующую строку.
В-третьих, типизация повышает производительность приложений, позволяя компиляторам генерировать более специализированный код.
Особая программа, преобразующая команды языка программирования, в условные коды, понятные компьютеру, 10 букв
Ответ на вопрос в сканворде (кроссворде) «Особая программа, преобразующая команды языка программирования, в условные коды, понятные компьютеру», 10 букв (первая — к, последняя — р):
к о м п и л я т о р
Другие определения (вопросы) к слову «компилятор» (14)
- автор компиляции — произведения, составленного путём использования чужих трудов ◆ Любой компилятор , собрав вырезки из газет, мог бы написать именно так об американской школе и об американских пионерах. Т. Габбе и др., «Не так и не то», 1933 г. // «Звезда» ◆ Добросовестных компиляторов ещё можно терпеть, но демагогии нет места в науке. В. П. Аксёнов, «Звездный билет», 1961 г. // «Юность»
Значение слова
КОМПИЛЯ́ТОР, -а, мужской род
Тот, кто занимается компиляцией, автор компиляции.
Компиля́тор — программа, переводящая написанный на языке программирования текст в набор машинных кодов.
Транслятор
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
В общем случае понятие трансляции относится не только к языкам программирования, но и к другим языкам — как формальным компьютерным (вроде языков разметки типа HTML), так и естественным (русскому, английскому и т. п.). [3] [4]
Содержание
Виды трансляторов
- Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени (англ.).
- Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
- Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
- Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
- Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
- Тестовый. Набор макрокомандязыка ассемблера, позволяющих задавать различные отладочныепроцедуры в программах, составленных на языке ассемблера.
- Обратный. Для программы в машинном коде выдаёт эквивалентную программу на каком-либо языке программирования (см.: дизассемблер, декомпилятор).
Реализации
Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.
Язык процессоров (машинный код) обычно является низкоуровневым. Существуют платформы, использующие в качестве машинного язык высокого уровня (например, iAPX-432 [5] ), но они являются исключением из правила в силу сложности и дороговизны. Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется компилятором. [6]
Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и семантического анализов, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при начале исполнения программы загрузчиком.
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.
В случае, если исходный язык является языком ассемблера (низкоуровневым языком, близким к машинному языку), то компилятор такого языка называется ассемблером.
Другой метод реализации — когда программа исполняется с помощью интерпретатора вообще без трансляции. Интерпретатор программно моделирует машину, цикл выборки-исполнения которой работает с командами на языках высокого уровня, а не с машинными командами. Такое программное моделирование создаёт виртуальную машину, реализующую язык. Этот подход называется чистой интерпретацией. [6] Чистая интерпретация применяется как правило для языков с простой структурой (например, АПЛ или Лисп). Интерпретаторы командной строки обрабатывают команды в скриптах в UNIX или в пакетных файлах (.bat) в MS-DOS также как правило в режиме чистой интерпретации.
Достоинство чистого интерпретатора: отсутствие промежуточных действий для трансляции упрощает реализацию интерпретатора и делает его удобнее в использовании, в том числе в диалоговом режиме. Недостаток — интерпретатор должен быть в наличии на целевой машине, где должна исполняться программа. Также, как правило, имеется более или менее значительный проигрыш в скорости. А свойство чистого интерпретатора, что ошибки в интерпретируемой программе обнаруживаются только при попытке выполнения команды (или строки) с ошибкой, можно признать как недостатком, так и достоинством.
Существуют компромиссные между компиляцией и чистой интерпретацией варианты реализации языков программирования, когда интерпретатор перед исполнением программы транслирует её на промежуточный язык (например, в байт-код или p-код), более удобный для интерпретации (то есть речь идёт об интерпретаторе со встроенным транслятором). Такой метод называется смешанной реализацией. [6] Примером смешанной реализации языка может служить Perl. Этот подход сочетает как достоинства компилятора и интерпретатора (бо́льшая скорость исполнения и удобство использования), так и недостатки (для трансляции и хранения программы на промежуточном языке требуются дополнительные ресурсы; для исполнения программы на целевой машине должен быть представлен интерпретатор). Также, как и в случае компилятора, смешанная реализация требует, чтобы перед исполнением исходный код не содержал ошибок (лексических, синтаксических и семантических).
По мере увеличения ресурсов компьютеров и расширения гетерогенных сетей (в том числе Интернета), связывающих компьютеры разных типов и архитектур, выделился новый вид интерпретации, при котором исходный (или промежуточный) код компилируется в машинный код непосредственно во время исполнения, «на лету». Уже скомпилированные участки кода кэшируются, чтобы при повторном обращении к ним они сразу получали управление, без перекомпиляции. Этот подход получил название динамической компиляции.
Достоинством динамической компиляции является то, что скорость интерпретации программ становится сравнимой со скоростью исполнения программ в обычных компилируемых языках, при этом сама программа хранится и распространяется в единственном виде, независимом от целевых платформ. Недостатком является бо́льшая сложность реализации и бо́льшие требования к ресурсам, чем в случае простых компиляторов или чистых интерпретаторов.
Этот метод хорошо подходит для веб-приложений. Соответственно, динамическая компиляция появилась и поддерживается в той или иной мере в реализациях Java, .NET Framework, Perl, Python.
Смешение понятий трансляции и интерпретации
Трансляция и интерпретация — разные процессы: трансляция занимается переводом программ с одного языка на другой, а интерпретация отвечает за исполнение программ. Однако, поскольку целью трансляции как правило является подготовка программы к интерпретации, то эти процессы обычно рассматриваются вместе. Например, языки программирования часто характеризуются как «компилируемые» или «интерпретируемые», в зависимости от того, преобладает при использовании языка компиляция или интерпретация. Причём практически все языки программирования низкого уровня и третьего поколения, вроде ассемблера, Си или Модулы-2, являются компилируемыми, а более высокоуровневые языки, вроде Python или SQL, — интерпретируемыми.
С другой стороны, существует взаимопроникновение процессов трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или шаблонов в C++).
Более того, один и тот же язык программирования может и транслироваться, и интерпретироваться, и в обоих случаях должны присутствовать общие этапы анализа и распознавания конструкций и директив исходного языка. Это относится и к программным реализациям, и к аппаратным — так, процессоры семейства x86 перед исполнением инструкций машинного языка выполняют их декодирование, выделяя в опкодах поля операндов (регистров, адресов памяти, непосредственных значений), разрядности и т. п., а в процессорах Pentium с архитектурой NetBurst тот же самый машинный код перед сохранением во внутреннем кэше дополнительно транслируется в последовательность микроопераций.
Примечания
- ↑ 123 ГОСТ 19781-83 // Вычислительная техника. Терминология: Справочное пособие. Выпуск 1 / Рецензент канд. техн. наук Ю. П. Селиванов. — М .: Издательство стандартов, 1989. — 168 с. — 55 000 экз. — ISBN 5-7050-0155-X
- ↑ 12Першиков В. И., Савинков В. М. Толковый словарь по информатике / Рецензенты: канд. физ.-мат. наук А. С. Марков и д-р физ.-мат. наук И. В. Поттосин. — М .: Финансы и статистика, 1991. — 543 с. — 50 000 экз. — ISBN 5-279-00367-0
- ↑ СТ ИСО 2382/7-77 // Вычислительная техника. Терминология. Указ. соч.
- ↑ Толковый словарь по вычислительным системам = Dictionary of Computing / Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского. — М .: Машиностроение, 1990. — 560 с. — 70 000 (доп,) экз. — ISBN 5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания)
- ↑Органик Э. Организация системы Интел 432 = A Programmer’s View of the Intel 432 System / Пер. с англ. — М .: Мир, 1987. — С. 20, 31. — 446 с. — 59 000 экз.
Можно привести ряд других примеров, в которых архитектура разработанных серий вычислительных машин базировалась или сильно зависела от некоторой модели структуры программы. Так, серия GE/Honeywell Multics основывалась на семантической модели выполнения программ, написанных на языке ПЛ/1. В Burroughs (англ.) B5500, B6700 … B7800 прототипом послужила модель программы этапа выполнения, написанной на расширенном языке Алгол. …
Процессор i432, подобно этим ранним архитектурам, также базируется на семантической модели структуры программы. Однако, в отличие от своих предшественников, i432 не основывается на модели некоторого конкретного языка программирования. Вместо этого, основной целью разработчиков было обеспечение непосредственной поддержки на этапе выполнения как для абстрактных данных (то есть программирование с абстрактными типами данных), так и для доменно-ориентированных операционных систем. …
Язык Ада поддерживает объектно-базированное программирование, что и послужило причиной выбора его в качестве основного языка программирования для i432.