Л.Е. Карпов - Системы программирования (1114903)
Текст из файла
Московский Государственный Университетимени М. В. ЛомоносоваФакультет вычислительной математики и кибернетикиЛ. Е. КарповСистемы программированияУчебное пособиеМосква2009Печатается по решению Редакционно-издательского советафакультета вычислительной математики и кибернетикиМГУ им. М. В. ЛомоносоваРецензентыд.ф.-м.н.д.ф.-м.н.Карпов Л. Е.КСистемы программирования: Учебное пособие.
– М.:Издательский отдел факультета ВМК МГУ (лицензия ИД № 05899от 24.09.2001), 2009 – ХХХХХХ с.: ил.ISBNНастоящее пособие является дополнением к ранее выпущенномунесколькими изданиями пособия по курсу “Системы программирования”, которыйчитается на факультете ВМ и К МГУ им.
М. В. Ломоносова с середины 1990-х годов. Втечение всего времени в курсе излагались основы построения системпрограммирования и тенденции их развития, однако, в ранее выпущенных пособияхэти темы, давшие название всему курсу, отражения не получили. Настоящее пособиевосполняет этот пробел.В основе курса – изучение комплексной системы программирования,обеспечивающей поддержку всего жизненного цикла программных продуктов, начинаяот их проектирования и заканчивая их сопровождением в процессе эксплуатации.УДКББКISBN© Издательский отдел факультетавычислительной математики и кибернетикиМГУ им.
М. В. Ломоносова, 2009© Карпов Л.Е., 2009ОглавлениеЖизненный цикл программного продукта1.1. Этапы жизненного цикла1.2. Основные требования к системам программирования1.3. Основные компоненты систем программирования2. Классическая система программирования2.1. Общая схема работы систем программирования2.2. Интегрированная среда разработки3.
Компоненты классической системы программирования3.1. Редакторы текстов3.1.1. Виды текстовых редакторов3.1.2. Лексический анализ “на лету”3.2. Трансляторы, компиляторы, интерпретаторы3.2.1. Схемы работы трансляторов1.3.3.3.4.3.5.3.6.3.2.2.
Смешанная стратегия трансляцииКомпилятор, как основной компонент системы программирования3.3.1. Общая схема работы компилятора3.3.1.1. Основные компоненты компилятора и фазы компиляции3.3.1.2. Однопроходный компилятор3.3.2. Задачи семантического анализа3.3.2.1. Проверка контекстных условий3.3.2.2. Дополнение внутреннего представления3.3.2.3. Проверка правил программирования3.3.2.4 Разнесение имен по пространствам именования3.3.3. Внутреннее представление программ3.3.4. Оптимизация в компиляторах3.3.4.1. Машинно-независимая оптимизация3.3.4.2. Машинно-зависимая оптимизация3.3.5. Основные методы динамического распределения памяти3.3.6.
Генерация кодаРедакторы связей: назначение, принципы работыЗагрузчики: основные функции, принципы работыТехника работы с библиотеками3.6.1. Статические библиотеки3.6.2. Динамически загружаемые библиотеки3.6.3. Основные типы библиотек3.6.3.1. Библиотеки функций, процедур и макроопределений3.6.3.2. Библиотеки классов3.6.3.3. Библиотеки компонентов3561112161717212121232425262727273033343535363741434851576062636364666768693.6.3.4.
Критерии проектирования стандартных библиотек3.7. Средства конфигурирования3.8. Системы управления версиями программных комплексов3.9. Средства отладки и тестирования программ3.10. Профилировщики3.11. Справочные системы4. Краткий обзор современных систем программирования4.1. Компонентный подход и визуальное программирование4.2. Системы программирования компании Borland4.2.1. Turbo Pascal4.2.2.
Delphi4.2.3. C++ Builder4.3. Системы программирования компании Microsoft4.3.1. Visual Basic4.3.2. VBA4.3.3. Visual C++4.3.4. Концепция .NET и C#4.4. Системы программирования ОС UNIX и Linux4.5. Проект GNU4.6. Системы программирования компании IBM4.6.1. Комплексная система программирования Rational Software4.6.2. Интегрированная среда разработки Eclipse4.6.3. Системы программирования ЭВМ zSeries5. Разработка распределенных программ5.1. Системы клиент-сервер5.2. Технологии COM/DCOM5.3. Брокеры объектов CORBA5.4.
Серверы приложений и сетевые службы6. Средства автоматического грамматического разбора6.1. Построение лексических анализаторов по регулярным выражениям6.2. Автоматизация построения синтаксических анализаторовЛитература469727375798082828383858888899090919395989899100104104107109112115115119123Автор выражает глубокую признательностьИрине Анатольевне Волковой и ТамареВасильевне Руденко, советы которых помоглиему при подготовке настоящего пособия.1. Жизненный цикл программного продуктаВ иерархии программно-аппаратного обеспечения системам программированияотводится место между программами управления логическими ресурсами иприкладным программным обеспечением:прикладное программное обеспечениесистемы программированияпрограммы управления логическими ресурсамипрограммы управления физическими ресурсамиаппаратураОпределение:системойпрограммированияназываетсякомплекспрограммных средств, предназначенных для поддержки программного продукта напротяжении всего жизненного цикла этого продукта.Для обозначения результатов труда программистов обычно использованиеследующих терминов: программа, программный продукт и системный (илиинтегрированный) программный продукт.
Программа создается для решенияотдельной задачи автором программы и используется в некоторой конкретнойоперационной среде. Программа неотделима от ее автора. Программным продуктомназывается такая программа, которая работает без авторского присутствия в рамкахнекоторого набора операционных сред. Программный продукт может исполняться,тестироваться и модифицироваться без участия автора (он отчужден от автора).Качество программного продукта должно быть существенно выше качества обычнойпрограммы.
Для программных продуктов разрабатывается документация, необходимаядля пользователей, чтобы они могли работать с программным продуктом в целяхрешения собственных задач, и разработчиков, модифицирующих продукт.Программный продукт должен быть настраиваемым, причем эта настройка должнавыполняться путем задания некоторых параметров настройки.Системный (интегрированный) программный продукт есть комплекспрограммных продуктов (пакет).
Примером интегрированного программного продуктаможет служить пакет Microsoft Office, включающий в себя около десятка программныхпродуктов, обладающих согласованными интерфейсами. Способы задания параметров,режимов работы и действий пользователя во всех компонентах одинаковы или похожи,хотя каждый компонент обладает собственными специализированными средствами.Между компонентами легко организовать передачу данных. Например, подготовив5сложную электронную таблицу (Excel), ее легко презентовать в наглядном виде(PowerPoint).1.1.
Этапы жизненного циклаРабота с программой и над программой (а значит и использование системыпрограммирования) продолжается на протяжении всей жизни программ, которая улюбой из них состоит из трех фаз – фазы разработки, фазы использования и фазысопровождения:Фаза использованияФаза разработкиФаза сопровождения(продолжающейся разработки)Разработка может вестись коллективом разработчиков новых продуктов.Сопровождение может передаваться другому коллективу, может быть другойорганизации. Использование программных продуктов часто ведется совсем другимилюдьми.
Фаза разработки предшествует двум другим фазам, которые проходят вовремени параллельно друг другу. Для больших и длительно используемых программфазу сопровождения иногда называют фазой продолжающейся разработки.Необходимость сопровождения объясняется двумя причинами. Во-первых, в большойпрограмме всегда имеется некоторое количество ошибок, которые не выявляются притестировании. Во-вторых, программа должна развиваться. Появляются новыепотребности, пожелания, к вычислительным машинам подключаются новые видывнешних устройств, с которыми программа должна научиться взаимодействовать.Неправильный подход к организации процесса разработки, применениенеподходящих для этого средств разработки и систем программирования можетпривести к искажению жизненного цикла получающихся программ, к возникновениюпатологического цикла с разрывом между разработкой и сопровождением:Фаза использованияФаза разработкиФаза сопровождения(продолжающейся разработки)Такого рода процессы часто возникают, если разработчики программногообеспечения пренебрегают правилами и стандартами разработки.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.