Green-sell.info

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

В интегрированную систему программирования входят

Интегрированные среды программирования.

S: Компонент интегрированной системы программирования, предназначенный для перевода исходного текста программы в машинный код, называется…

S: Интегрированная система программирования включает компонент для перевода исходного текста программы в машинный код, который называется…

S: Одной из важных функций, реализуемых системой программирования, является…

-: автоматическое тестирование программного продукта на всех вариантах входных данных

+: автоматическая сборка разработанных модулей в единый проект

-: автоматизация выбора языка программирования, исходя из постановки задачи

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

S: В интегрированной системе программирования компилятор…

-: воспринимает исходную программу и исполняет ее

+: преобразует исходную программу в эквивалентную ей программу в машинных кодах

-: отлаживает работу программы

-: генерирует диаграмму связей между модулями

S: Системами программирования являются:

а) Adobe PhotoShop

в) Borland Delphi

S: В состав средств программирования на языке высоко уровня обязательно входит…

S: При поиске логических ошибок в программе на языке высокого уровня можно

-: проверить синтаксис программы

-: использовать режим пошагового выполнения программы

-: использовать режим «семантический анализ»

+: подключить библиотеки отладки

S: В интегрированную систему программирования входят

+: текстовый редактор, средства отладки, библиотека подпрограмм

-: текстовый редактор, редактор презентаций

-: текстовый редактор, редактор презентаций, средства отладки, библиотека подпрограмм

-: редактор презентаций, средства отладки, библиотека подпрограмм

S: Процесс поиска ошибок в программе принято называть…

-: анализом выходных данных

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

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

+: автоматической сборки разработанных модулей в единый проект

-: автоматического построения математической модели исходя из постановки задачи

-: выбора языка программирования

S: Служебным (сервисным) программным обеспечением является …

-: комплекс программ «1С Предприятие»

-: Borland Pascal 7.0

S: Системным программным обеспечением является …

S: Прикладным программным обеспечением является …

-: программа форматирования диска

-: ядро операционной системы

S: Функцией утилитне является …

-: обслуживание жёсткого диска

-: работа с архивами

+: разработка программ для компьютера

S: Обнаруженное при отладке программы нарушение формы записи программы приводит к сообщению о(б) ____________ ошибке.

S: Программа интерпретатор всегда работает с …

-: объектным кодом программы

+: исходным текстом программы

S: Транслятор, который осуществляет перевод исходной программы в эквивалентную ей результирующую программу на языке машинных команд, называется …

S: Данные входят в состав команд компьютера в виде …

S: Компилятор используется при программировании на языке …

S: Язык программирования низкого уровня является …

S: Программа компилятор …

-: обрабатывает структуры данных программы на языке высокого уровня

-: оптимизирует код программы на языке высокого уровня

-: компонует программу на языке высокого уровня

+: переводит исходный текст программы на языке высокого уровня в машинный код

S: Ошибка «пропущена точка с запятой» при трансляции может быть выполнена на этапе…

S: Режим интерпретации можно использовать …

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

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

-: для компоновки программ на языке высокого уровня

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

Статьи к прочтению:

Уроки по С++. Урок 0. Выбор среды программирования.

Похожие статьи:

ВВЕДЕНИЕ В рамках данного курсового проекта необходимо реализовать usb сниффер для операционной системы Windows. Usb сниффер – это программа,…

ПСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ И.А. Полетаев, Д.И. Полетаев, О.А. Полетаева ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ Методические…

Интегрированные системы программирования

Интегрированные системы программирования, или просто системы программирования (СП) – это пакеты программ для создания или изменения программ для ЭВМ. Это инструментальные средства программного обеспечения.

Язык программирования, с которым работает СП, называется ее входным языком. Системы программирования именуются по названию своего входного языка. Например: «Система Бейсик», «Система Паскаль», «Система СИ» и т.д. Иногда название СП содержит префиксы, обозначающие, например, ее фирменное происхождение, например, «Турбо-Бейсик», «Турбо-Паскаль». Приставка «Турбо» означает, что данная СП разработана фирмой Borland International (США).

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

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

Транслятор является обязательным элементом любой системы программирования.

Для того чтобы исходный текст программы, написанный на языке высокого уровня, был переведен на «понятный» ЭВМ язык машинных команд, нужна программа-переводчик – транслятор (англ. – translater).

Существуют два различных метода трансляции. Они соответственно называются: интерпретация и компиляция (англ. compile – составлять, собирать).

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

1. Синхронный перевод. Преподаватель читает лекцию, переводчик одновременно с ним слово за словом переводит ее.

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

Интерпретация является аналогом синхронного перевода, а компиляция – аналогом полного предварительного перевода. Соответственно программы-трансляторы, работающие тем или иным методом, называются интерпретатором и компилятором.

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

Результаты этих переводов в памяти не сохраняются. Если один и тот же оператор встречается в тексте несколько раз, интерпретатор будет добросовестно выполнять его так, как будто встретил его впервые. Вследствие этого программы-интерпретаторы работают достаточно медленно. Но интерпретатор имеет свои преимущества – с его помощью проще отлаживать программу.

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

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

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

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

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

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

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

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

На рис. 1.1 показан порядок создания исполняемого модуля в интегрированной системе программирования Turbo Pascal (ТР). Прежде всего с помощью экранного редактора вводится исходный текст программы (исходный модуль), который записывается в файл, например, Prog1.pas. Затем выполняется компиляция и строится объектный модуль – файл Prog1.obj, который далее преобразуется компоновщиком в исполняемый модуль – файл Prog1.exe. Модули Prog1.pas, Prog1.obj и Prog1.exe хранятся на диске. Загрузчик переносит файл Prog1.exe в оперативную память ЭВМ. После этого управление передается на программу, и она начинает выполняться. По окончании процесса происходит возврат в среду Turbo Pascal.

Интегрированные системы программирования

Дата добавления: 2015-08-31 ; просмотров: 4248 ; Нарушение авторских прав

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

Читать еще:  Что входит в систему программирования

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

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

Таб.1 Основные системы программирования

Пакеты прикладных программ

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

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

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

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

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

· коллективная работа в сети;

· экспорт — импорт файлов различных форматов;

· группировка объектов, передвижение, растяжка, поворот, разрезание, изменение размеров, работа со слоями;

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

· работа с цветом;

· автоматизация отдельных процедур с использованием встроенного макроязыка.

Примерами пакетов этого класса являются: AutoCAD (AutoDesk), DesignCAD, Grafic CAD Professional, DrawBase, Microstation, TurboCAD.

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

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

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

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

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

Редакторы растровой графики используются для работы с фотографиями. Они кодируют фотоизображения в цифровую форму и позволяют выполнять над ними различные редактирующие операции (выделение фрагментов, перемещение, вырезание, копирование и т.д.). Примерами редакторов этого класса являются: Adobe Photoshop, Aldus Photo Styler, Picture Publisher, Photo Works Plus.

Редакторы векторной графики используются для профессиональной работы, связанной с технической и художественной иллюстрацией с последующей цветной печатью. Они занимают промежуточное место между САПР и настольными издательскими системами. Включают инструментарий для создания графического объекта; средства манипулирования объектами; средства обработки текста в части оформления и модификации параграфов, работы со шрифтами; средства вывода на печать и настройки цвета. Примерами графических редакторов этого класса являются Corel Draw, Adobe Illustrator, Aldus Free Hand, Professional Draw.

Системы управления базами данных (СУБД) используются для автоматизации процедур создания, хранения и извлечения электронных данных. Различаются способом организации данных, форматом, языком формирования запросов на операции с данными. типичными примерами являются MS Access, Oracle, Paradox.

Пакеты программ мультимедиа используются для отображения (воспроизведения) и обработки аудио- и видеоинформации. Включают, в частности, пакеты Director for Windows, Multimedia Viewer Kit, NEC MultiSpin.

Пакеты демонстрационной графики это конструкторы графических образов деловой информации, призванные в наглядной и динамической форме представлять результаты некоторых аналитических исследований. последовательность работы с такими пакетами включает шаги: разработка общего плана представления, выбор шаблона для оформления элементов, формирование и импорт элементов (текст, графика, таблицы, диаграммы, звуковые эффекты, видеоклипы). Примеры таких пакетов: Power Point, Harvard Graphics, WordPerfect Presentations

ü офисные. Обеспечивают организационное управление деятельностью офиса. Включают органайзеры (записные и телефонные книжки, календари, презентации и т.д.), средства распознавания текста;

Офисные пакеты обеспечивают организационное управление деятельностью офиса. Включают:

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

1) органайзеры для управления проектами. используются для сетевого планирования и управления проектами. Позволяют спланировать проект любой величины и сложности, эффективно распределить людские, финансовые и материальные ресурсы, составить оптимальный график работ и проконтролировать его исполнение. К ним относятся Time Line, MS Project, CА — Super Project;

2) органайзеры для организации деятельности отдельного человека. Это электронные секретари для эффективного управления деловыми контактами. Включают, в частности, Lotus Organizer, ACTI.

Программы для распознавания символов используются для перевода графических изображений букв и цифр в ASCII-коды этих символов. Применяются в сканерах. Примерами таких пакетов являются Fine Reader, Cunie Form, Tiger, Omni Page

ü настольные издательские системы – более функционально мощные текстовые процессоры;

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

· компоновать (верстать) текст;

· использовать всевозможные шрифты и выполнять полиграфические изображения;

· осуществлять редактирование текста на уровне лучших текстовых процессоров;

· обрабатывать графические изображения;

· выводить документы полиграфического качества;

· работать в сетях на разных платформах.

Примерами таких пакетов являются: Corel Ventura, Page Maker, QuarkXPress, Frame Maker, MS Publisher, Page Plus, Compu Work Publisher.

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

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

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

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

Читать еще:  Виды сред программирования

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

Интеграция компиляторов в среды программирования

Программный архитектор Евгений Зуев о развитии компиляторов, системе Turbo Pascal и интегрированных средах

Поделиться статьей

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

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

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

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

Система Turbo Pascal появилась в 90-х годах прошлого века и мгновенно завоевала громадную популярность. Программисту гораздо удобнее видеть на экране текст своей программы с возможностью исправлять его, вносить в него изменения или улучшения. Причем этот текст, что называется, синтаксически расцвечен, то есть различные элементы программы представлены различными цветами, что помогает лучше увидеть структуру программы, и, нажав одну лишь кнопку, программист может свою программу скомпилировать, получить машинный код и выполнить его тут же, не выходя из этой среды. По сравнению с традиционными средствами, когда в распоряжении программиста был отдельный редактор, отдельный компилятор, отдельный отладчик, никак друг с другом не связанные, это было громадное достижение. Сейчас это достижение представляется уже обыденностью. Имеются не одна и не две развитые, мощные, интегрированные среды программирования, среди которых прежде всего нужно назвать систему Eclipse, а также систему Visual Studio фирмы Microsoft. Эти среды действительно интегрируют различные компоненты, причем степень интеграции этих компонентов достаточно глубока.

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

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

Продвинутая архитектура компиляторов, состоящая из нескольких компонентов, взаимодействующих друг с другом и способных взаимодействовать с другими элементами интегрированных сред, требует нового инженерного подхода при их разработке. В начале 2000-х годов в лаборатории факультета ВМК МГУ мы начали работать над новой архитектурой компилятора для языка C++. Этот компилятор задумывался как совокупность компонентов, доступ к которым мог быть организован независимо друг от друга. Компилятор не представлял собой единую монолитную программу, это была именно совокупность компонент, и эти компоненты были спроектированы таким образом, чтобы обеспечить легкое включение в интегрированную среду. Например, компонента, занимающаяся синтаксическим разбором программы, могла бы взаимодействовать с визуальным редактором и тем самым поставлять этому визуальному редактору информацию о структуре программы. Этот редактор мог бы отображать эту структуру в наглядном виде на экране монитора.

К настоящему моменту есть по крайней мере две выдающиеся разработки, проводимые в сходном ключе. Первый проект носит название Roslyn, продвигается фирмой Microsoft, он реализован для языка C Sharp (C#) — совокупность компонент, позволяющих легкое включение их в любую среду программирования. Вторая известная система — это так называемая LLVM, Low Level Virtual Machine. Это свободно доступная система. Впрочем, Roslyn тоже уже стал с недавнего времени свободной системой, и каждый может бесплатно ее скачать на свой компьютер и использовать в своих проектах.

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

Разработчики, которые занимаются созданием интегрированных сред и компиляторов, сталкиваются с большим числом проблем. И чисто инженерные проблемы здесь составляют только часть. Дело в том, что наряду с очень динамичным развитием информатики достаточно большое количество решений в настоящее время остаются теми же, которые были приняты 20–30 лет назад. Так, очень многие программисты до сих пор используют обычные командные компиляторы, которые были созданы 20–30 лет назад. Эти компиляторы, будучи спроектированными по-старому, очень трудно интегрировать в современную среду, потому что они были спроектированы как большие, монолитные программы. На этом пути создаются и предлагаются всевозможные решения, но их нельзя назвать приемлемыми именно в силу того, что традиционный компилятор — это монолит, черный ящик, невозможно получить доступ к его компонентам и к его внутренним структурам данных.

С другой стороны, чтобы сделать новый компилятор для того же самого языка, может потребоваться достаточно большое количество усилий, большой объем времени, и далеко не каждая организация, далеко не каждая компания способна пойти на этот шаг. В этом состоит сложность. Существующие компиляторы очень трудно интегрировать в среды, а для того, чтобы сделать новый компилятор для того же самого языка, например для C++, требуется очень много усилий и времени.

Многие современные интегрированные среды поддерживают работу со многими языками программирования.

Таким образом, разработчик, получивший в свое распоряжение такую среду, может решать достаточно широкий комплекс задач. Какие-то задачи удобно решать с помощью языка C, какие-то задачи удобно решать с помощью языка Java, а какие-то, быть может, с помощью языка Lisp. Многие среды поддерживают несколько языков в рамках единой инфраструктуры.

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

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

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

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

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

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

· транслятор с соответствующего языка;

· компоновщик (редактор связей);

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

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

Редактор текста — это программа для ввода и модификации текста.

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

Например, в системе программирования Borland Pascal редактор сохраняет тексты программ в файлах с расширением pas .

Трансляторы предназначены для преобразования программ, написанных на языках программирования, в программы на машинном языке.

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

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

Объектный модуль, как правило, имеет расширение obj .

Трансляторы делятся на два класса: компиляторы и интерпретаторы.

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

При компиляции одна и та же программа имеет несколько представлений — в виде текста и в виде выполняемого файла.

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

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

Соответственно говорят о компилируемых и интерпретируемых языках программирования.

Языки программирования Pascal , Object Pascal и С-подобные языки (С, С ++ , С#) являются компилируемыми.

Язык Java — ; пример интерпретируемого языка программирования.

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

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

Загрузочный модуль, подготовленный системой программирования Borland Pascal , имеет расширение exe .

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

Базовый набор функций отладчика включает:

· пошаговое выполнение программы (режим трассировки) с отображением результатов,

· остановка в заранее определенных точках,

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

· изображение и изменение значений переменных.

В системе программирования Borland Pascal отладчик запускается с помощью режима меню Debug .

Загрузчик — системная обрабатывающая программа.

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

В системе программирования Borland Pascal загрузчик начинает свою работу после выполнения команды Run . Эта команда объединяет функции редактора связей и загрузчика.

Примерами современных систем программирования являются системы программирования

Borland C++ Builder,

Microsoft Visual Basic,

Microsoft Visual C ++

и многие-многие другие.

Современными системами программирования являются система, построенная на базе языка С# и системы, ориентированные на концепцию . NET .

Основные сведения о компиляции

Основным модулем системы программирования всегда является компилятор .

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

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

Основные термины и понятия.

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

Близко по смыслу к этому понятию понятие компилятор.

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

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

Таким образом, компиляторы – это вид трансляторов.

Повторим еще раз принципиально отличное понятие «интерпретатор».

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

Основные блоки (фазы) компилятора, их функции

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

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

1. Лексический анализ.

2. Работа с таблицами.

3. Синтаксический анализ, или разбор.

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

5. Оптимизация кода.

6. Генерация объектного кода.

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

Лексический анализ

Входом является цепочка символов некоторого алфавита.

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

Работа лексического анализатора состоит в том, чтобы сгруппировать определенные символы в единые синтаксические объекты – лексемы.

Выходом является последовательность лексем.

Например, в результате лексического анализа следующей цепочки символов

с ost:= (price + tax) * 0.98

будет обнаружено, что

cost , price , tax являются лексемами типа идентификатор;

0.98 — лексема типа константа;

Работа с таблицами

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

Синтаксический анализ

Вход – цепочка лексем.

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

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

Генерация кода

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

Замечание. На практике чаще одновременно строится и дерево, и код.

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

На двух этапах – синтаксического анализа и в начале этапа подготовки к генерации кода – выполняется семантический анализ. Семантический анализатор проверяет семантические соглашения входного языка, проверяет элементарные семантические (смысловые) нормы языков программирования, напрямую не связанных с входным языком; дополняет внутреннее представление программы в компиляторе операторами и действиями, неявно предусмотренными семантикой входного языка.

Оптимизация кода

На этом этапе производится попытка сделать объектные программы более эффективными (т.е. быстрее работающими или более компактными).

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

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

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

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

Генерация объектного кода

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

В системе программирования Borland Pascal компиляция запускается с помощью режима меню Compile .

В случае отсутствия синтаксических ошибок (перевод осуществлен успешно) система программирования сообщает об этом пользователю и предлагает нажать любую клавишу для продолжения работы:

Compile successful. Press any key.

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

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