4.Понятие и состав систем программирования.
Система программирования — часть базового программного обеспечения, поддерживающая процесс программирования. Системы программирования представляют собой единство средств статической (инструментальной) и динамической (исполнительной) поддержки.
1. Языки системы программирования. Сюда относятся как языки программирования, предназначенные для записи алгоритмов (Паскаль, Фортран, С, Ассемблер и т.д.), так и другие языки, которые служат для управления самой системой программирования, например, так называемый командный язык (язык командных файлов). Другие языки, входящие в систему программирования, могут предназначаться для автоматизации разработки больших программ (напри- мер, так называемый язык спецификации программ). Вы не должны здесь путать три разных понятия: язык (например, Ассемблер), программу на этом языке и компилятор, который пере- водит Ассемблерные программы (на объектный язык).
2. Служебные программы системы программирования. Со многими из этих программ Вы уже познакомились в нашем курсе, например, сюда входят такие программы.
1. Текстовые редакторы, предназначенные для набора и исправления текстов программ на языках программирования (обычно это исходные модули). 2. Трансляторы (компиляторы) для перевода с одного языка на другой 3. Редакторы внешних связей, собирающие загрузочный модуль из объектных модулей в схеме счета со статической загрузкой и статическим связыванием. 4. Статические и динамические загрузчики, запускающие программы на счет. 5. Отладчики, помогающие пользователям в диалоговом режиме искать и исправлять ошибки в своих программах. 6. Оптимизаторы, позволяющие автоматически улучшать программу, написанную на определенном языке. Бывают оптимизаторы программ как на исходном языке программирования , так и на машинном языке. 7. Профилировщики, которые определяют, какой процент времени выполняется та или иная часть программы. Это позволяет выявить наиболее интенсивно используемые фрагменты программы и оптимизировать их или на исходном языке, или, например, пе- реписав эти фрагменты на Ассемблер. 8. Библиотекари, которые позволяют создавать и изменять файлы-библиотеки процедур , файлы-библиотеки макроопределений, и т.д. 9. Интерпретаторы, которые могут выполнять программы без перевода их на другие языки . 10. И другие служебные программы.
3. Информационное обеспечение системы программирования. Сюда относятся различные структурированные описания языков, служебных программ, библиотек модулей и т.п. Без хороше- го информационного обеспечения современные системы программирования эффективно ра- ботать не могут. Каждый пользователь неоднократно работал с этой компонентой системы программирования, нажимая функциональную клавишу F1 или выбирая из меню пункт Help (Помощь)
1.2. Понятие системы и среды программирования
Под системой программирования понимают язык программирования и совокупность программных средств, поддерживающих разработку и исполнение программ, написанных на этом языке.
Для выполнения программа должна быть загружена в среду исполнения. В случае использования ЯВУ загрузке программы может предшествовать ряд преобразований, целью которых является приведение программы к виду, необходимому для загрузки в среду исполнения.
Для долговременного хранения программа на ЯВУ и программа после каждого преобразования размещается на внешнем запоминающем устройстве в виде файлов. Часть программы, которая хранится в одном файле, называется модулем. В простейшем случае вся программа хранится в одном файле. Имена файлов, как правило, назначает разработчик, а расширения файлов назначаются автоматически по правилам, принятым в среде исполнения.
Модуль, содержащий программу на языке высокого уровня, называется исходным модулем. Текст исходного модуля состоит из отдельных предложений, называемых операторами.
Модуль, содержащий программу в виде, готовом для загрузки в среду исполнения, называется исполняемым модулем.
Процесс преобразования исходного модуля в исполняемый модуль называется трансляция.
Различают две основные схемы трансляции исходного модуля в исполняемый модуль: компиляция и интерпретация.
Схема компиляции используется для представления исполняемого модуля в виде машинных команд. Это означает, что исходный модуль должен быть предварительно переведен на язык машинных команд. Перевод выполняется специальной программой — компилятором. Схема компиляции (трансляции) приведена на рис.1.
Программа на языке Си++ – это текст. С помощью произвольного текстового редактора программист записывает инструкцию, в соответствии с которой компьютер будет работать, выполняя данную программу.
Для того чтобы компьютер мог выполнить программу, написанную на языке Си++, ее нужно перевести на язык машинных инструкций. Эту задачу решает компилятор. Компилятор читает файл с текстом программы, анализирует ее, проверяет на предмет возможных ошибок и, если таковых не обнаружено, создает исполняемый файл, т.е. файл с машинными инструкциями, который можно выполнять.
Рис. 1. Схема компиляции
Откомпилировав программу один раз, ее можно выполнять многократно, с различными исходными данными.
При разработке программ обычно используются ранее созданные подпрограммы, которые хранятся в библиотеке стандартных подпрограмм в виде, пригодном для загрузки в среду исполнения. Подключение стандартных подпрограмм может выполняться в ходе выполнения программы (динамически компонуемые библиотеки) или предварительно до загрузки исполняемого кода в среду исполнения (статически компонуемые библиотеки). В последнем случае модуль, полученный транслятором, называют объектным модулем.
Подключение стандартных подпрограмм возлагается на специальную программу — компоновщик (редактор связей). Обозначения расширений для модулей типично для большинства систем программирования в операционной системе Windows. Транслятор и компоновщик являются составными частями системы программирования.
Отметим, что рассматривать библиотеку просто как набор подпрограмм можно только в предельно упрощенном виде. Операции по добавлению подпрограмм в библиотеку и удаления подпрограмм из библиотеки выполняются специальными программами, которые будем рассматривать как составную часть библиотеки.
Схема интерпретации используется для непосредственного распознавания и выполнения операторов исходного модуля (рис.2). Распознавание и выполнение операторов возлагается на специальную программу – интерпретатор. Понятия исходного и исполняемого модуля в этом случае совпадают.
Таким образом, можно уточнить составные части системы программирования, как показано на рис.3.
Средства разработки могут использоваться автономно или объединятся в систему. В первом случае запуск каждого из средств инициируется разработчиком путем ввода команды операционной системы.
Рис. 2. Схема интерпретации
Средства разработки, объединенные в систему на основе общего интерфейса и общей базы данных, образуют среду программирования.
Система программирования