
- •Раздел 1 Системы программирования
- •Тема 1.1 Принципы функционирования систем программирования
- •Тема 1.2 Трансляторы, компиляторы и интерпретаторы — общая схема работы
- •Тема 1.3 Таблицы идентификаторов. Организация таблиц идентификаторов
- •Тема 1.4 Назначение и функции компоновщика
- •Тема 1.5 Назначение и функции программы загрузчика
- •Тема 1.6 Программные отладчики и их эксплуатация
Раздел 1 Системы программирования
Тема 1.1 Принципы функционирования систем программирования
Структура современной системы программирования
Системой программирования будем называть весь комплекс программных средств, предназначенных для кодирования, тестирования и отладки программного обеспечения. Нередко системы программирования взаимосвязаны и с другими техническими средствами, служащими целям создания программного обеспечения на более ранних этапах жизненного цикла (от формулировки требований и анализа до проектирования). Однако рассмотрение таких систем выходит за рамки данного учебника.
На рис. 1 приведена общая структура современной системы программирования. На ней выделены основные составляющие системы программирования и их взаимосвязь. Отдельные составляющие разбиты по группам в соответствии с этапами развития средств разработки.
Рис. 1 – Общая структура систем программирования
Из рис. 1 видно, что современная система программирования — это достаточно сложный комплекс различных программно-технических средств. Все они служат цели создания прикладного и системного программного обеспечения.
Текстовый редактор позволяет готовить и вносить изменения в тексты исходных программ, но в современных системах программирования его функции не ограничиваются только этим — с ним связаны практически все сервисные возможности.
Редактор ресурсов дает возможность разработчику готовить ресурсы пользовательского интерфейса для результирующей программы. Как правило, подготовка ресурсов выполняется в графическом виде (в форме графических образов), а результатом является описание ресурсов интерфейса на языке описания ресурсов, которое, в свою очередь, может быть обработано с помощью обычного текстового редактора
Компиляторы являются главной составляющей системы программирования. В состав системы программирования могут входить несколько компиляторов. Основным, конечно, является компилятор с исходного языка, на работу с которым ориентирована данная система. Также необходимым является компилятор ресурсов, обеспечивающий обработку описания ресурсов. Остальные компиляторы включаются в состав системы программирования по мере необходимости (например, в состав многих систем программирования входит компилятор с языка ассемблера).
Библиотеки подпрограмм обеспечивают работоспособность системы программирования и ее конкурентоспособность на рынке средств разработки. Для разработки необходимы, как минимум, две библиотеки подпрограмм и функций: библиотека функций исходного языка и библиотека функций целевой ОС, на которой будет выполняться результирующая программа. Но, как правило, система программирования предлагает пользователю обширный перечень дополнительных библиотек и функций, и чем шире этот перечень, тем богаче возможности системы программирования.
Компоновщик обеспечивает объединение всех исходных модулей в единый файл. Функции этого средства разработки практически не изменились за всю историю развития систем программирования.
Загрузчик обеспечивает подготовку результирующей программы к выполнению. В современных ОС он не входит в состав систем программирования, а является частью самой ОС.
Отладчик способствует поиску и локализации ошибок в программе. Обычно речь идет о семантических ошибках, так как подавляющее большинство синтаксических ошибок обнаруживаются компилятором.
В качестве основных тенденций в развитии современных систем программирования следует указать внедрение в них средств разработки на основе так называемых «языков четвертого поколения» — 4GL (Fourth Generation Languages), а также поддержка систем «быстрой разработки программного обеспечения» — RAD (Rapid Application Development).
Языки четвертого поколения — 4GL — представляют собой широкий набор средств, ориентированных на проектирование и разработку программного обеспечения. Они строятся на основе оперирования не синтаксическими структурами языка и описаниями элементов интерфейса, а представляющими их графическими образами. На таком уровне проектировать и разрабатывать прикладное программное обеспечение может пользователь, не являющийся квалифицированным программистом, зато имеющий представление о предметной области, на работу в которой ориентирована прикладная программа. Языки четвертого поколения являются следующим (четвертым по счету) этапом в развитии систем программирования.
Описание программы, построенное на основе языков 4GL, транслируется затем в исходный текст и файл описания ресурсов интерфейса, представляющие собой обычный текст на соответствующем входном языке высокого уровня. С этим текстом уже может работать профессиональный программист-разработчик — он может корректировать и дополнять его необходимыми функциями. Дальнейший ход создания программного обеспечения идет уже традиционным путем, как это показано на рис. 1.
Такой подход позволяет разделить работу проектировщика, ответственного за общую концепцию всего проекта создаваемой системы, дизайнера, отвечающего за внешний вид интерфейса пользователя, и профессионального программиста, отвечающего непосредственно за создание исходного кода программного обеспечения.
В целом языки четвертого поколения решают уже более широкий класс задач, чем традиционные системы программирования. Они составляют часть средств автоматизированного проектирования и разработки программного обеспечения, поддерживающих все этапы жизненного цикла — CASE-систем (Computer Aided Software Engineering).