- •1. Трансляторы, компиляторы, интерпретаторы.
- •2 . Ассемблер
- •3. Лексический анализ.
- •4. Синтаксический анализ.
- •6. Подготовка к генерации кода. Распределение памяти. Виды переменных и областей памяти. Выравнивание границ. Менеджеры памяти. Статическое и динамическое связывание.
- •7. Системы программирования. Интегрированные среды разработки. Структура современной системы программирования. Текстовые редакторы Лексический анализ «на лету».
- •8. Система подсказок и справок. Компоновщики. Загрузчики. Трансляция адресов. Настраивающий загрузчик. Динамические загрузчики.
- •9. Отладчики. Функции отладчиков. Библиотеки подпрограмм. Статические и динамические библиотеки подпрограмм. Ресурсы пользовательского интерфейса.
7. Системы программирования. Интегрированные среды разработки. Структура современной системы программирования. Текстовые редакторы Лексический анализ «на лету».
Система программирования — это система для разработки новых программ на конкретном языке программирования.
Составные систем программирования:
• компилятор или интерпретатор;
• интегрированная среда разработки;
• средства создания и редактирования текстов программ;
• обширные библиотеки стандартных программ и функций;
• отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;
• "дружественная" к пользователю диалоговая среда;
• многооконный режим работы;
• мощные графические библиотеки; утилиты для работы с библиотеками
• встроенный ассемблер;
• встроенная справочная служба;
• другие специфические особенности.
Интерпретатор — переводит и выполняет программу строка за строкой.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался.
Структура современной системы программирования
Системой программирования будем называть весь комплекс программных средств, предназначенных для кодирования, тестирования и отладки программного обеспечения. Нередко системы программирования взаимосвязаны и с другими техническими средствами, служащими целям создания программного обеспечения на более ранних этапах жизненного цикла (от формулировки требований и анализа до проектирования).
текстовые редакторы — компьютерные программы, предназначенные для создания и изменения текстовых файлов, а также их просмотра на экране, вывода на печать, поиска фрагментов текста
Лексический анализ "на лету" - это функция текстового редактора в составе системы программирования. Она заключается в поиске и выделении лексем входного языка в тексте программы непосредственно в процессе ее создания разработчиком.
Реализуется это следующим образом: разработчик создает исходный текст программы (набирает его или получает из некоторого другого источника), и в то же время система программирования параллельно выполняет поиск лексем в этом тексте.
В простейшем случае обнаруженные лексемы просто выделяются в тексте с помощью графических средств интерфейса текстового редактора - цветом, шрифтом и т. п. Это облегчает труд разработчика программы, делает исходный текст более наглядным и способствует обнаружению ошибок на самом раннем этапе - на этапе подгон тки исходного кода.
В более развитых системах программирования найденные лексемы не просто выделяются по ходу подготовки исходного кжлаа, но и помещаются в таблицу идентификаторов компилятора, входящею в состав системы программирования. Такой подход позволяет экономии, время на этапе компиляции, поскольку первая ее фаза - лексический анализ - уже выполнена на этапе подготовки исходною юкем программы.
8. Система подсказок и справок. Компоновщики. Загрузчики. Трансляция адресов. Настраивающий загрузчик. Динамические загрузчики.
текстовые редакторы — компьютерные программы, предназначенные для создания и изменения текстовых файлов, а также их просмотра на экране, вывода на печать, поиска фрагментов текста и т. п.;
компоновщики (редакторы связей) — программы, которые производят компоновку — принимают на вход один или несколько объектных модулей и собирают по ним исполнимый модуль;
Загру́зчик (англ. loader) — в информатике, программа, отвечающая за загрузку исполнимых файлов и запуск соответствующих новых процессов. Обычно является частью операционной системы, но может быть и самостоятельной программой — к примеру, позволяющей операционной системе запускать программы, скомпилированные для других операционных систем (см. также: эмуляторы, WINE).
Трансляция адресов
Модуль, который выполняет преобразование относительных адресов в реальные (абсолютные), то есть осуществляет трансляцию.
Настраивающий загрузчик
Чтобы избежать необходимости повторного ассемблирования всех подпрограмм при внесении изменения в одну из них, а также чтобы освободить программиста от задач распределения памяти и осуществления связи подпрограмм, были разработаны так называемые загрузчики. Этот загрузчик допускает наличие в программе нескольких программных сегментов и одного сегмента данных (общего сегмента). Ассемблер транслирует каждый сегмент отдельно и передает загрузчику текст и информацию, касающуюся перемещений и перекрестных ссылок между сегментами.
Выходом ассемблера при такой схеме является объектная программа и информация обо всех других программах, к которым в данной программе имеются обращения. Кроме того, имеется информация о тех местах, которые должны быть изменены при загрузке (информация о перемещении), т.е. о ячейках, содержимое которых зависит от расположения программы в памяти.
Динамические загрузчики
Если общее количество памяти, требуемое для подпрограмм меньше доступной памяти машины, возникают затруднения. Эти трудности преодолеваются применением схемы динамической загрузки с последовательным использованием объединителя и загрузчика. Эта схема основывается на том, что обычно разные подпрограммы требуются в разное время и могут взаимно исключать себя. Используя явное определение того, какая подпрограмма содержит обращения к другим подпрограммам, можно задать, так называемую, структуру с перекрытием (оверлейную структуру), которая указывает взаимоисключающие подпрограммы.
Формируется загрузочный модуль. Он является перемещаемым, в нем должна быть таблица перемещений. Также в структуре загрузочного модуля должна быть информация о связях. Загрузчик должен содержать такую часть, как диспетчер оверлеев, он отбирает из загрузочных модулей именно те, которые являются стартовыми, в процессе работы организует загрузку в ОП необходимых модулей.
