Понятие о системе программирования основные функции и компоненты
Оценка 5
Научно-исследовательская работа +4
docx
информатика +1
Взрослым
14.02.2017
В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие систем программирования.
К сегодняшнему дню насчитывают несколько поколений систем программирования. Каждое из последующих поколений по своей функциональной мощности качественно отличается от предыдущего. С появлением персональных компьютеров системы стали составными частями интегрированных сред разработки. Появились системы, применяемые в различных офисных программах.
В настоящее время системы программирования применяются в самых различных областях человеческой деятельности, таких как научные вычисления, системное программирование, обработка информации, искусственный интеллект, издательская деятельность, удаленная обработка информации, описание документов.
понятие о системе программирования основные функции и компоненты.docx
понятие о системе программирования основные функции и компоненты
Системы программирования. Основные понятия и определения
Оглавление
Введение 3
1. Система программирования как неотъемлемая часть современных
ЭВМ 4
1.1 Понятие системы программирования и её функции 4
1.2 Языки программирования 6
2. Классификация и компоненты систем программирования 8
2.1 Классификация систем программирования 8
2.1.1 Машинноориентированные системы программирования 8
2.1.2 Машиннонезависимые системы программирования 11
2.2 Средства создания программ 13
Заключение 15
Список использованных источников 16
Введение
В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах
началось бурное развитие систем программирования.
К сегодняшнему дню насчитывают несколько поколений систем программирования.
Каждое из последующих поколений по своей функциональной мощности качественно
отличается от предыдущего. С появлением персональных компьютеров системы стали
составными частями интегрированных сред разработки. Появились системы,
применяемые в различных офисных программах. В настоящее время системы программирования применяются в самых различных областях
человеческой деятельности, таких как научные вычисления, системное
программирование, обработка информации, искусственный интеллект, издательская
деятельность, удаленная обработка информации, описание документов.
С течением времени одни системы развивались, приобретали новые черты и остались
востребованы, другие утратили свою актуальность и сегодня представляют в лучшем
случае чисто теоретический интерес.
На данном этапе важным остается то, что необходимо владеть информацией о системе
программирования, как части современных ЭВМ а также знать терминологию и уметь ею
пользоваться.
Цель работы изучить систему программирования, как неотъемлемую часть современных
ЭВМ.
Задачи:1. Рассмотреть понятие и функции системы программирования;
2. Описать существующие языки программирования;
3. Изучить виды систем программирования и средства создания программ;
1. Системы программирования как неотъемлемая часть ЭВМ
1.1 Понятие системы программирования и её функции
Неотъемлемая часть современных ЭВМ – системы программного обеспечения,
являющиеся логическим продолжением логических средств ЭВМ, расширяющим
возможности аппаратуры и сферу их использования. Система программного обеспечения,
являясь посредником между человеком и техническими устройствами машины,
автоматизирует выполнение тех или иных функций в зависимости от профиля
специалистов и режимов их взаимодействия с ЭВМ. Основное назначение программного
обеспечения – повышение эффективности труда пользователя, а также увеличение
пропускной способности ЭВМ посредством сокращения времени и затрат на подготовку и
выполнение программ [4].
Программное обеспечение ЭВМ можно подразделить на общее и специальное
программное обеспечение.
Общее программное обеспечение реализует функции, связанные с работой ЭВМ, и
включает в себя системы программирования, операционные системы, комплекс программ
технического обслуживания. Специальное программное обеспечение включает в себя пакеты прикладных программ,
которые проблемно ориентированы на решение вполне определенного класса задач [1].
Системой программирования называется комплекс программ, предназначенный для
автоматизации программирования задач на ЭВМ.
Система программирования освобождает проблемного пользователя или прикладного
программиста от необходимости написания программ решения своих задач на неудобном
для него языке машинных команд, и предоставляют им возможность использовать
специальные языки более высокого уровня. Для каждого из таких языков, называемых
входными или исходными, система программирования имеет программу,
осуществляющую автоматический перевод (трансляцию) текстов программы с входного
языка на язык машины [2].
Важно различать язык программирования и реализацию языка. Язык – это набор правил,
определяющих систему записей, составляющих программу, синтаксис и семантику
используемых грамматических конструкций.Реализация языка – это системная
программа, которая переводит (преобразует) записи на языке высокого уровня в
последовательность машинных команд [5].
Имеется два основных вида средств реализации языка: компиляторы и интерпретаторы.
транслирует весь текст программы, написанной на языке высокого уровня, в
Компилятор
ходе непрерывного процесса. При этом создается полная программа в машинных кодах,
которую затем ЭВМ выполняет без участия компилятора.
Интерпретатор последовательно анализирует по одному оператору программы,
превращая при этом каждую синтаксическую конструкцию, записанную на языке
высокого уровня, в машинные коды и выполняя их одна за другой. Интерпретатор должен
постоянно присутствовать в зоне основной памяти вместе с интерпретируемой
программой, что требует значительных объемов памяти [1].
Следует заметить, что любой язык программирования может быть как интерпретируемым,
так и компилируемым, но в большинстве случаев у каждого языка есть свой
предпочтительный способ реализации. Языки Фортран, Паскаль в основном компилируют;
язык Ассемблер почти всегда интерпретирует; языки Бейсик и Лисп широко используют
оба способа.
Основным преимуществом компиляции является скорость выполнения готовой
программы. Интерпретируемая программа неизбежно выполняется медленнее, чем
компилируемая, поскольку интерпретатор должен строить соответствующую последовательность команд в момент, когда инструкция предписывает выполнение. В то
же время интерпретируемый язык часто более удобен для программиста, особенно
начинающего. Он позволяет проконтролировать результат каждой операции. Особенно
хорошо такой язык подходит для диалогового стиля разработки программ, когда
отдельные части программы можно написать, проверить и выполнить в ходе создания
программы, не отключая интерпретатора [1].
Для построения языков программирования используется совокупность общепринятых
символов и правил, позволяющих описывать алгоритмы решаемых задач и истолковывать
смысл созданного написания.
1.2 Языки программирования
Ядро системы программирования составляет язык. Существующие языки
программирования можно разделить на две группы: процедурные и непроцедурные.
Процедурные (или алгоритмические) программы представляют из себя систему
предписаний для решения конкретной задачи. Роль компьютера сводится к
механическому выполнению этих предписаний.
Процедурные языки разделяют на языки низкого и высокого уровня.
Языки низкого уровня (машинноориентированные) позволяют создавать программы из
машинных кодов, обычно в шестнадцатиричной форме. С ними трудно работать, но
созданные с их помощью высококвалифицированным программистом программы
занимают меньше места в памяти и работают быстрее. С помощью этих языков удобнее
разрабатывать системные программы, драйверы (программы для управления
устройствами компьютера), некоторые другие виды программ [10].
Программы на языках высокого уровня близки к естественному (английскому) языку и
представляют набор заданных команд.
Наиболее известные системы программирования:
1. Фортран (FORmula TRANslating system система трансляции формул); старейший и по
сей день активно используемый в решении задач математической ориентации язык.
2. Бейсик (Beginner's Allpurpose Symbolic Instruction Code универсальный
символический код инструкций для начинающих); несмотря на многие недостатки и
изобилие плохо совместимых версий самый популярный по числу пользователей [8]. 3. Алгол (ALGOrithmic Language алгоритмический язык); сыграл большую роль в
теории, но для практического программирования сейчас почти не используется.
4. ПЛ/1 (PL/I Programming Language язык программирования первый). Многоцелевой
язык; сейчас почти не используется.
5. Си (С «си»); широко используется при создании системного программного
обеспечения [9].
6. Паскаль (Pascal назван в честь ученого Блеза Паскаля); чрезвычайно популярен как
при изучении программирования, так и среди профессионалов. На его базе созданы
несколько более мощных языков (Модула, Ада, Дельфи) [7].
7. Кобол (COmmon Business Oriented Language язык, ориентированный на общий
бизнес); в значительной мере вышел из употребления.
8. Дельфи (Delphi) язык объектноориентированного «визуального» программирования;
в данный момент чрезвычайно популярен.
9. Джава (Java) платформеннонезависимый язык объектноориентированного
программирования, чрезвычайно эффективен для создания интерактивных вебстраниц
[6].
Среди непроцедурных языков наиболее известны: Лисп (Lisp); Пролог (PROgramming in
LOGic); Оккам (назван в честь философа У. Оккама).
Широкое распространение среди разработчиков программ, а также при обучении
программированию, получили системы программирования «Турбо» (Turbo) фирмы
Borland, ядром которых являются трансляторы с языков программирования Бейсик,
Паскаль, Си, Пролог и др. Интерфейс Турбооболочки для любых систем
программирования внешне совершенно одинаков и предоставляет пользователю
стандартный набор функций и команд, описанных выше и отображаемых в главном меню
системы [7].
2. Классификация и компоненты систем программирования
2.1 Классификация систем программирования
По набору входных языков различают системы программирования одно и
многоязыковые. Отличительная черта многоязыковых систем состоит в том, что
отдельные части программы можно составлять на разных языках и с помощью специальных обрабатывающих программ объединять их в готовую для исполнения на
ЭВМ программу [3].
По структуре, уровню формализации входного языка и целевому назначению различают
системы программирования машинноориентированные и машиннонезависимые.
2.1.1 Машинноориентированные системы программирования
Данные системы имеют входной язык, наборы операторов и изобразительные средства
которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры
памяти и т.д.). Машинноориентированные системы позволяют использовать все
возможности и особенности машиннозависимых языков:
высокое качество создаваемых программ;
возможность использования конкретных аппаратных ресурсов;
предсказуемость объектного кода и заказов памяти;
для составления эффективных программ необходимо знать систему команд и
особенности функционирования данной ЭВМ;
трудоемкость процесса составления программ (особенно на машинных языках и
ЯСК), плохо защищенного от появления ошибок;
низкая скорость программирования;
невозможность непосредственного использования программ, составленных на этих
языках, на ЭВМ других типов [1].
Машинноориентированные системы по степени автоматического программирования
подразделяются на классы:
1. Машинный язык. В таких системах программирования отдельный компьютер имеет
свой определенный Машинный Язык (далее МЯ), ему предписывают выполнение
указываемых операций над определяемыми ими операндами, поэтому МЯ является
командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/ и др.)
имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается
информация о местонахождении операндов и типе выполняемой операции. В новых
моделях ЭВМ намечается тенденция к повышению внутренних языков машинно
аппаратным путем реализовывать более сложные команды, приближающиеся по своим
функциональным действиям к операторам алгоритмических языков программирования
[3]. 2. Система Символического Кодирования. В данных системах используются Языки
Символического Кодирования (далее ЯСК), которые так же, как и МЯ, являются
командными. Однако коды операций и адреса в машинных командах, представляющие
собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто
используемых при написании программ) цифр, в ЯСК заменены символами
(идентификаторами), форма написания которых помогает программисту легче
запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение
числа ошибок при составлении программ. Использование символических адресов –
первый шаг к созданию ЯСК. Команды ЭВМ вместо истинных (физических) адресов
содержат символические адреса. По результатам составленной программы определяется
требуемое количество ячеек для хранения исходных промежуточных и результирующих
значений. Назначение адресов, выполняемое отдельно от составления программы в
символических адресах, может проводиться менее квалифицированным программистом
или специальной программой, что в значительной степени облегчает труд программиста
[10].
3. Автокоды. Существуют системы программирования, использующие языки, которые
включают в себя все возможности ЯСК, посредством расширенного введения
макрокоманд – они называются Автокоды. В различных программах встречаются
некоторые достаточно часто использующиеся командные последовательности, которые
соответствуют определенным процедурам преобразования информации. Эффективная
реализация таких процедур обеспечивается оформлением их в виде специальных
макрокоманд и включением последних в язык программирования, доступный
программисту. Макрокоманды переводятся в машинные команды двумя путями –
расстановкой и генерированием. В постановочной системе содержатся «остовы» – серии
команд, реализующие требуемую функцию, обозначенную макрокомандой.
Макрокоманды обеспечивают передачу фактических параметров, которые в процессе
трансляции вставляются в «остов» программы, превращая её в реальную машинную
программу. В системе с генерацией имеются специальные программы, анализирующие
макрокоманду, которые определяют, какую функцию необходимо выполнить и
формируют необходимую последовательность команд, реализующих данную функцию.
Обе указанных системы используют трансляторы с ЯСК и набор макрокоманд, которые
также являются операторами автокода. Развитые автокоды получили название
Ассемблеры. Сервисные программы и пр., как правило, составлены на языках типа
Ассемблер [3].
4. Макрос. В таких системах язык, являющийся средством для замены
последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму – называется Макрос (средство замены). В основном, Макрос
предназначен для того, чтобы сократить запись исходной программы. Компонент
программного обеспечения, обеспечивающий функционирование макросов, называется
макропроцессором. На макропроцессор поступает макросопределяющий и исходный
текст. Реакция макропроцессора на вызов – выдача выходного текста. Макрос одинаково
может работать, как с программами, так и с данными [1].
2.1.2 Машиннонезависимые системы программирования
Машиннонезависимые системы программирования – это средство описания алгоритмов
решения задач и информации, подлежащей обработке. Они удобны в использовании для
широкого круга пользователей и не требуют от них знания особенностей организации
функционирования ЭВМ. В таких системах программы, составляемые языках, имеющих
название высокоуровневых языков программирования, представляют собой
последовательности операторов, структурированные согласно правилам рассматривания
языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые
должна выполнять система после трансляции программы на машинном языке. Таким
образом, командные последовательности (процедуры, подпрограммы), часто
используемые в машинных программах, представлены в высокоуровневых языках
отдельными операторами. Программист получил возможность не расписывать в деталях
вычислительный процесс на уровне машинных команд, а сосредоточиться на основных
особенностях алгоритма [3].
Среди машиннонезависимых систем программирования следует выделить:
1. Процедурноориентированные системы. Входные языки программирования в таких
системах служат для записи алгоритмов (процедур) обработки информации, характерных
для решения задач определенного класса. Эти языки, должны обеспечить программиста
средствами, позволяющими коротко и четко формулировать задачу и получать
результаты в требуемой форме. Процедурных языков очень много, например: Фортран,
Алгол – языки, созданные для решения математических задач; Simula, Слэнг для
моделирования; Лисп, Снобол – для работы со списочными структурами [4].
2. Проблемноориентированные системы в качестве входного языка используют язык
программирования с проблемной ориентацией. С расширением областей применения
вычислительной техники возникла необходимость формализовать представление
постановки и решение новых классов задач. Необходимо было создать такие языки
программирования, которые, используя в данной области обозначения и терминологию,
позволили бы описывать требуемые алгоритмы решения для поставленных задач. Эти
языки, ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и
получать результаты в требуемой форме. Программы, составленные на основе этих
языков программирования, записаны в терминах решаемой задачи и реализуются
выполнением соответствующих процедур.
3. Диалоговые системы. Программные средства, обеспечивают оперативное
взаимодействие человека с ЭВМ. Обеспечивается оперативное воздействия на
прохождение задач. Необходимость обеспечения оперативного взаимодействия с
пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже
после получения объектной программы в машинных кодах. При внесении изменений в
программу система программирования с помощью специальных таблиц устанавливает
взаимосвязь структур исходной и объектной программ. Это позволяет осуществить
требуемые редакционные изменения в объектной программе.
4. Непроцедурные системы. Данные обрабатываются по фиксированным алгоритмам
(табличные языки и генераторы отчетов). Позволяя четко описывать как задачу, так и
необходимые для её решения действия, таблицы решений дают возможность в наглядной
форме определить, какие условия должны выполнятся, прежде чем переходить к какому
либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все
возможные блоксхемы реализаций алгоритмов решения. Табличные методы легко
осваиваются специалистами любых профессий. Программы, составленные на табличном
языке, удобно описывают сложные ситуации, возникающие при системном анализе [4].
2.2 Средства создания программ
Обычно в состав систем программирования входят: трансляторы с языков высокого
уровня; средства редактирования, компоновки и загрузки программ; макроассемблеры
(машинноориентированные языки); отладчики машинных программ [10].
Системы программирования, как правило, включают в себя:
текстовый редактор (Edit), осуществляющий функции записи и редактирования
исходного текста программы;
загрузчик программ (Load), позволяющий выбрать из директория нужный текстовый
файл программы;
запускатель программ (Run), осуществляющий процесс выполнения программы; компилятор (Compile), предназначенный для компиляции или интерпретации исходного
текста программы в машинный код с диагностикой синтаксических и семантических
(логических) ошибок;
отладчик (Debug), выполняющий сервисные функции по отладке и тестированию
программы;
диспетчер файлов (File), предоставляющий возможность выполнять операции с файлами:
сохранение, поиск, уничтожение и т.п. [5].
В самом общем случае для создания программы на выбранном языке программирования
нужно иметь следующие компоненты:
1. Текстовый редактор. Так как текст программы записывается с помощью ключевых
слов, обычно происходящих от слов английского языка, и набора стандартных символов
для записи всевозможных операций, то формировать этот текст можно в любом
редакторе, получая в итоге текстовый файл с исходным текстом программы. Лучше
использовать специализированные редакторы, которые ориентированы на конкретный
язык программирования и позволяют в процессе ввода текста выделять ключевые слова и
идентификаторы разными цветами и шрифтами. Подобные редакторы созданы для всех
популярных языков и дополнительно могут автоматически проверять правильность
синтаксиса программы непосредственно во время ее ввода.
2. Исходный текст с помощью программыкомпилятора переводится в машинный код.
Исходный текст программы состоит, как правило, из нескольких модулей (файлов с
исходными текстами). Каждый модуль компилируется в отдельный файл с объектным
кодом, которые затем требуется объединить в одно целое. Кроме того, системы
программирования, как правило, включают в себя библиотеки стандартных подпрограмм
(имеют расширение LIB). Стандартные подпрограммы имеют единую форму обращения,
что создает возможности автоматического включения таких подпрограмм в вызывающую
программу и настройки их параметров.
3. Объектный код модулей и подключенные к нему стандартные функции обрабатывает
специальная программа – редактор связей. Данная программа объединяет объектные коды
с учетом требований операционной системы и формирует на выходе работоспособное
приложение – исполнимый код для конкретной платформы. Исполнимый код это
законченная программа, которую можно запустить на любом компьютер, где установлена
операционная система, для которой эта программа создавалась. Как правило, итоговый
файл имеет расширение .exe или .com. 4. В современных системах программирования имеется еще один компонент – отладчик,
который позволяет анализировать работу программы во время ее исполнения. С его
помощью можно последовательно выполнять отдельные операторы исходного текста
последовательно, наблюдая при этом, как меняются значения различных переменных.
5. В последние несколько лет в программировании (особенно для операционной среды
Windows) наметился так называемый визуальный подход. Этот процесс автоматизирован в
средах быстрого проектирования. При этом используются готовые визуальные
компоненты, свойства и поведение которых настраиваются с помощью специальных
редакторов [3].
Заключение
Итак, системы программирования это комплекс инструментальных программных
средств, предназначенный для работы с программами на одном из языков
программирования.
Системы программирования предоставляют сервисные возможности программистам для
разработки их собственных компьютерных программ.
Сегодня имеется немало систем программирования, выпускаемых различными фирмами и
ориентированных на различные модели ПК и операционные системы. Наиболее популярны
следующие визуальные среды быстрого проектирования: Microsoft Visual Basic, Turbo
Pascal, C++ Builder, Symantec Café.
Ключевые понятия систем программирования: язык и реализация языка.
Из универсальных языков программирования сегодня наиболее популярны следующие:
Бейсик (Basic) – для освоения требует начальной подготовки (общеобразовательные
школы)
Паскаль (Pascal) – требует специальной подготовки (школы с углубленным изучением
предмета и общетехнические вузы)
Си++ (C++), Ява (Java) – требуют профессиональной подготовки (специализированные
средние и высшие учебные заведения)
Именно эти системы и языки программирования в дальнейшем будут определять развитие
информатики. Итак, рассмотрев понятие и функции системы программирования, описав существующие
языки программирования, классификации и средства создания программ, можем сделать
вывод о достижении поставленной цели.
Список использованных источников
1. Вычислительная техника и программирование / А.В. Петров [и др]. ; под ред.
А.В. Петрова. М.: Высшая школа, 1999. 258с.
2. Гейн, А.Г. Основы информатики и вычислительной техники: учебное пособие/ А.Г.
Гейн. М.: Просвещение, 2003. 246с.
3. Демьяненко, В.Ю. Программные средства создания и ведения баз данных/
В.Ю.Демьяненко. М.: Финансы и статистика, 1998. 216с.
4. Информатика: Базовый курс/ С.В.Симонович [и др]. СПб.: Питер, 2001. 640 с.
5. Ляхович, В.Ф. Основы информатики: учебное пособие/ В.Ф.Ляхович. Ростовна
Дону: Феникс, 2001. 164с.
6. Моначов, В. Язык программирования Java и среда NetBeans/ В.Моначев. 2е изд.
СПб.: БХВПетербург, 2009. 720 с.
7. Моргун, А.Н. Справочник по Turbo Pascal для студентов/ А.Н.Моргун. М.:
Диалектика, 2006. 608 с.
8. Сайлер, Б. Использование Visual Basic 6. Классическое издание/ Б.Сайлер,
Д.Споттс. М.: Вильямс, 2007. 832 с.
9. Страуструп, Б. Язык программирования С++ = The C++ Programming Language /
Пер. с англ. 3е изд. СПб.; М.: Невский диалект Бином, 1999. 991 с.
10.Угринович, Н. Информатика и информационные технологии: учебник для 10 11
классов/ Н.Угринович. М.: Бином. Лаборатория знаний, 2007. 511с.
Конструирование программ.
Современные системы программирования
Основные понятия, факты Основные этапы проектирования программ. Основные блоки транслятора, их функции.
Структура программы. Отладка и тестирование программ. Компоненты интегрированной
среды программирования. Системы визуального программирования.
Навыки и умения
Разработка и отладка программ в интегрированной среде программирования. Разработка
приложений в среде визуального программирования.
ПОДРОБНЕЕ см.
1. Системное программное обеспечение / А.В. Гордеев, А.Ю. Молчанов. – СПб.: Питер,
2001. – С. 347 – 700.
2. Пустоваров В.И. Ассемблер: программирование и анализ корректности машинных
программ: К.: Издательская группа BHV, 2000. – С. 2223 с.
Основные этапы проектирования программ
1. Постановка задачи. Задача формулируется на естественном языке. Определяются
цели. Подготавливается техническое задание на разработку программы.
2. Обоснованный выбор средств разработки (программирования). Разрабатываются
форматы ввода исходных данных и отображения результатов.
3. Выбор метода решения задачи. Анализ возможности использования ранее
разработанного и доступного для программиста ПО.
4. Разработка алгоритма решения задачи. Декомпозиция задачи на подзадачи.
Определение последовательности решения подзадач. Разработка структуры программы.
5. Кодирование средствами выбранного языка программирования.
6. Верификация и проверка корректности. Аналитическое доказательство
правильности программы.
7. Тестирование программы. Разработка тестов и контрольных примеров.
Сопоставление реальных и ожидаемых результатов. 8. Отладка программы в случае обнаружения ошибок. Локализация обнаруженных
ошибок. Коррекция ошибок. Возврат к этапу тестирования.
9. Разработка документации. Текстовое описание программы. Разработка инструкций
пользователю – лицу, применяющему разработанную программу в своей работе.
Разработка инструкций по эксплуатации, содержащих информацию, требующуюся
программистам, ответственным за нормальное функционирование программы.
10. Опытная эксплуатация. Уточнение требований заказчика к представлению исходных
данных и результатов работы программы. При необходимости возврат к предыдущим
этапам.
11. Промышленная эксплуатация. Сопровождение программы. Обработка требований к
новым версиям программы.
Современные системы программирования
Системой программирования будем называть комплекс программных средств,
предназначенных для кодирования, тестирования и отладки программного обеспечения.
Такие комплексы, как правило, включают следующие программные модули.
ü Текстовые редакторы, служащие для создания текстов исходных программ.
ü Компиляторы, предназначенные для перевода исходного текста на входном языке в
язык машинных кодов.
ü Компоновщики, позволяющие объединять несколько объектных модулей,
порождаемых компилятором, в одну программу.
ü Библиотеки прикладных программ, содержащие в себе наиболее часто используемые
подпрограммы в виде готовых объектных модулей.
ü Загрузчики, обеспечивающие подготовку готовой программы к выполнению.
ü Отладчики, выполняющие программу в заданном режиме (например, пошаговом) с
целью поиска, обнаружения и локализации ошибок. Заметим, что любая система программирования может работать только в
соответствующей ОС, под которую она и создана, однако при этом она может позволять
разрабатывать программное обеспечение и под другие ОС.
Редактор текста это программа для ввода и модификации текста.
Трансляторы предназначены для преобразования программ, написанных на языках
программирования, в программы на машинном языке. Программа, подготовленная на
какомлибо языке программирования, называется исходным модулем. В качестве входной
информации трансляторы применяют исходные модули и формируют в результате своей
работы объектные модули, являющиеся входной информацией для редактора связей.
Объектный модуль содержит текст программы на машинном языке и дополнительную
информацию, обеспечивающую настройку модуля по месту его загрузки и объединение
этого модуля с другими независимо оттранслированными модулями в единую программу.
Трансляторы делятся на два класса: компиляторы и интерпретаторы. Компиляторы
переводят весь исходный модуль на машинный язык. Интерпретатор последовательно
переводит на машинный язык и выполнят операторы исходного модуля
(У интерпретаторов два основных недостатка. Первый низкая скорость работы
интерпретируемых программ.)
Преимущество интерпретатора перед компилятором состоит в том, что программа
пользователя имеет одно представление в виде текста. При компиляции одна и та же
программа имеет несколько представлений в виде текста и в виде выполняемого файла.
Компоновщик, или редактор связей системная обрабатывающая программа,
редактирующая и объединяющая объектные (ранее оттраслированные) модули в единые
загрузочные, готовые к выполнению программные модули. Загрузочный модуль может
быть помещен ОС в основную память и выполнен.
Отладчик позволяет управлять процессом исполнения программы, является
инструментом для поиска и исправления ошибок в программе. Базовый набор функций
отладчика включает: ∙ пошаговое выполнение программы (режим трассировки) с отображением результатов,
∙ остановка в заранее определенных точках,
∙ возможность остановки в некотором месте программы при выполнении некоторого
условия;
∙ изображение и изменение значений переменных.
Загрузчик системная обрабатывающая программа, объединяющая основные функции
редактора связей и программы выборки в одном пункте задания. Загрузчик помещает
находящиеся в его входном наборе данных объектные и загрузочные модули в
оперативную память, объединяет их в единую программу, корректирует перемещаемые
адресные константы с учетом фактического адреса загрузки и передает управление в
точку входа созданной программы.
Исторически комплексы для разработки ПО развивались от отдельно поставляемых
компиляторов, представляющих собой обособленные программные модули, к
интегрированным средам программирования, которые первоначально включали в себя
редакторы исходных текстов программ и командный язык компиляции. Развитие
интегрированных сред разработки ПО привело к появлению развитых средств интерфейса
пользователя, сначала текстовых, а потом и графических.
Первой удачной средой называют интегрированную среду программирования Turbo Pascal
на основе языка Pascal производства фирмы Borland. Ее широкая популярность
определила тот факт, что со временем все разработчики компиляторов обратились к
созданию интегрированных средств разработки для своих продуктов.
Эти системы включали помимо встроенного редактора текстов подсистемы работы с
файлами, систему помощи, подсистемы управления компиляцией и редактор связей,
компилятор, встроенный отладчик.
Дальнейшее развитие средств разработки связано с распространением развитых средств
графического интерфейса пользователя. В состав средств разработки ПО сначала были
включены библиотеки, поддерживающие развитый графический интерфейс пользователя
и взаимодействие с функциями API операционных систем. Позже были включены дополнительные средства, предназначенные для разработки внешнего вида интерфейсных
модулей (системы визуального программирования).
Для описания графических элементов программ потребовались соответствующие языки.
На их основе сложилось понятие «ресурсов» прикладных программ.
Ресурсами прикладной программы называют множество данных, обеспечивающих
внешний вид интерфейса пользователя этой программы и не связанных напрямую с
логикой выполнения программы (например, тексты сообщений программы, цветовая
гамма элементов интерфейса, надписи на кнопках, заголовки окон и т.п.).
Для формирования структуры ресурсов в свою очередь понадобились редакторы
ресурсов, а затем и компиляторы ресурсов. Ресурсы, полученные с выхода компилятора
ресурсов, стали обрабатываться компоновщиками и загрузчиками.
Весь этот комплекс программнотехнических средств в настоящее время составляет
понятие «система программирования». [1]
Структуру современной системы программирования можно представить в виде
следующей схемы.
Текстовый ¬® Исходная ¾® Компилятор ¾® Объектная ¾® Редактор ¬¾ Библиотеки
редактор программа программа связей
½
ˉ
Исполняемый
файл
Редакто𠬮 Исходный код ¾® Компилятор ¾® Ресурсы ¾® Загрузчик
ресурсов ресурсов ресурсов интерфейса Выполнение программы
Примерами современных систем программирования являются
Системы программирования Turbo Pascal, Borland Pascal, Borland Delphi, Borland C++
Builder,
Microsoft Visual Basic, Microsoft Visual C++. Новейшими системами программирования
являются система, построенная на базе языка С# и системы, ориентированные на
концепцию .NET.
Системы программирования языка С под ОС Linux и UNIX (функции загрузчика
выполняются самой ОС) долгое время не требовали наличия интегрированной среды и
вполне могли быть ограничены командными файлами компиляции. Однако стали
появляться и системы программирования, построенные на базе интегрированных сред
разработки. В основном они строятся в графической среде на базе стандартного
графического интерфейса пользователя на основе среды X Windows.
Основным модулем системы программирования всегда является компилятор. Именно
технические характеристики компилятора, прежде всего, влияют на эффективность
результирующих программ, порождаемых системой программирования.
Кроме основного компилятора, большинство систем программирования могут содержать
в своем составе целый ряд других компиляторов. Так, большинство систем содержат
компилятор с языка ассемблера и компилятор с входного языка описания ресурсов. Но
они редко непосредственно взаимодействуют с пользователем.
Напомним основные термины и понятия.
Транслятор – это программа, которая переводит входную программу на исходном
(входном) языке в эквивалентную ей выходную программу на результирующем
(выходном) языке.
Близко по смыслу к этому понятию понятие компилятор. Компилятор – это транслятор, который осуществляет перевод исходной программы в
эквивалентную ей объектную программу на языке машинных команд или языке
ассемблера.
Таким образом, компилятор отличается от транслятора тем, что его результирующая
программа написана обязательно на языке машинных команд или языке ассемблера.
Результирующая программа транслятора в общем случае может быть написана на любом
языке (например, транслятор с языка Pascal на язык С).
Таким образом, компиляторы – это вид трансляторов.
Напомним также, что существует еще принципиально отличное понятие «интерпретатор».
Интерпретатор – это программа, которая воспринимает входную программу на исходном
языке и выполняет ее. (Интерпретатор не порождает результирующую программу и
никакого результирующего кода.)
Основные блоки (фазы) компилятора, их функции
Исходная программа, написанная на некотором языке программирования, есть цепочка
знаков. Компилятор в конечном итоге превращает эту цепочку знаков в цепочку битов –
объектный код.
В процессе компиляции можно выделить следующие подпроцессы (блоки, этапы).
1. Лексический анализ.
2. Работа с таблицами.
3. Синтаксический анализ, или разбор.
4. Генерация кода, или трансляция в промежуточный код (например, языка ассемблер).
5. Оптимизация кода.
6. Генерация объектного кода.
Замечание. В конкретных компиляторах порядок может несколько отличаться, а
некоторые блоки могут объединяться в один. В реальном компиляторе блоки не
обязательно разделены. Лексический анализ
Входом является цепочка символов некоторого алфавита.
Некоторые комбинации символов в программе рассматриваются как единые объекты –
лексемы (например, зарезервированные слова, идентификаторы, числовые константы).
Работа лексического анализатора состоит в том, чтобы сгруппировать определенные
символы в единые синтаксические объекты – лексемы.
Выходом является последовательность лексем.
Например, в результате лексического анализа следующей цепочки символов
Cost:= (price + tax) * 0.98
будет обнаружено, что cost, price, tax являются лексемами типа идентификатор; 0.98 –
лексема типа константа; :=, +, * являются лексемами.
Работа с таблицами
Информация о лексемах собирается и записывается в одну или несколько таблиц,
например, в виде списка лексем и соответствующей информации о них.
Синтаксический анализ
Вход – цепочка лексем.
На этом этапе исследуется цепочка лексем и устанавливается, удовлетворяет ли она
структурным условиям, явно сформулированным в определении синтаксиса языка.
Выходом анализатора является дерево, которое представляет синтаксическую структуру,
присущую исходной программе.
Генерация кода
Полученное дерево используется для перевода входной программы в программу на
машинном языке, но чаще осуществляется перевод на промежуточный язык (ассемблер).
Замечание. На практике чаще одновременно строится и дерево, и код.
Существует несколько методов построения промежуточного кода по синтаксическому
дереву. Основным из них является синтаксически управляемый перевод (трансляция). На двух этапах – синтаксического разбора и в начале этапа подготовки к генерации кода –
выполняется семантический анализ. Семантический анализатор проверяет семантические
соглашения входного языка, проверяет элементарные семантические (смысловые) нормы
языков программирования, напрямую не связанных с входным языком; дополняет
внутреннее представление программы в компиляторе операторами и действиями, неявно
предусмотренными семантикой входного языка.
Оптимизация кода
Попытка сделать объектные программы более эффективными (т.е. быстрее работающими
или более компактными).
Так, для операций, составляющих линейный участок программы, может применяться
удаление бесполезных присваиваний, исключение лишних операций, перестановка
операций, арифметические преобразования.
Еще одним методом оптимизации кода является оптимизация вычисления логических
выражений (не всегда полностью надо выполнять вычисление всего выражения, чтобы
знать его результат, иногда по значению одного операнда можно определить значение
всего выражения).
Оптимизация передачи параметров в процедуры и функции через стек не является
эффективным, если выполняются несложные вычисления над небольшим количеством
параметров (всякий раз при вызове процедуры компилятор создает объектный код для
размещения фактических параметров в стеке, а при выходе – код для освобождения
ячеек). Эффективность результирующей программы повышается при передаче
параметров через регистры либо подстановкой кода функции в вызывающий объектный
код.
Для оптимизации циклов используются следующие методы: вынесение инвариантных
вычислений из циклов (вынесение тех операций, операнды которых не изменяются);
замена операций с индуктивными переменными (изменение сложных операций с
переменными, значения которых в процессе выполнения цикла образуют арифметическую
прогрессию, на более простые операции); слияние и развертывание циклов (слияние двух
вложенных циклов в один и замена цикла на линейную последовательность операций).
Генерация объектного кода
Последний заключительный этап. Происходит порождение команд, составляющих
предложения выходного языка и в целом текст результирующей программы.
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Понятие о системе программирования основные функции и компоненты
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.