Скачиваний:
15
Добавлен:
02.05.2014
Размер:
203.78 Кб
Скачать

Елабужский филиал Казанского Государственного Технического

университета имени А.Н.Туполева

Курсовая работа

по дисциплине: «Системное программное обеспечение»

на тему:

«Использование библиотек в различных системах программирования»

Работу выполнила

студентка 2 курса

Проверил:

Елабуга 2008г.

Содержание:

Введение 3

I. Библиотеки подпрограмм как составная часть систем программирования 4

II. Включение текстов из файлов 7

III. Библиотеки объектных модулей 11

IV. Создание статической библиотеки 12

V. Создание библиотеки. 15

VI. Создание динамической библиотеки 19

VII. Пример использования некоторых библиотек 21

VIII. Язык программирования Python. Стандартная библиотека 23

IX. Библиотека TURBO VISION для TURBO PASCAL 29

Заключение 31

Список используемой литературы: 32

Введение

В процессе развития систем программирования состав библиотек постоянно расширялся. В них включалось все большее и большее число функций. Это было вызвано тем, что система программирования, предоставляющая пользователю более широкий выбор библиотечных функций, получала лучшие позиции на рынке средств разработки программного обеспечения. Сами подпрограммы и функции, созданные для того или иного языка, также являлись товаром на рынке средств разработки. Этот естественный процесс продолжается до сих пор, и чем длиннее история существования того или иного, языка программирования, тем шире диапазон существующих для него библиотек.

Системы программирования, для некоторых языков продолжают существовать во многом благодаря тому, что для них, создан мощный аппарат, библиотечных функций. Так, язык FORTRAN существует благодаря широчайшему набору математических и физических функций, а язык GOBQL — функций из финансовой сферы.

В ходе развития систем программирования принципы создания и использования библиотечных функций претерпели мало изменений. Принципиально новые возможности предоставили только современные ОС, которые позволили подключать к результирующим программам не статические, а динамические библиотеки.

Динамические библиотеки в отличие от традиционных (статических) библиотек подключаются к программе не в момент ее компоновки, а непосредственно в ходе выполнения, как только программа затребовала ту или иную функцию, находящуюся в библиотеке. Преимущества таких библиотек очевидны — они не требуют включать в программу объектный код часто используемых функций. Различные программы, выполняемые в ОС, могут пользоваться кодом одной и той же библиотеки, которая содержится в данной операционной системе.

I. Библиотеки подпрограмм как составная часть систем программирования

Библиотеки подпрограмм составляют существенную часть систем программирования. Наряду с дружественностью пользовательского интерфейса состав доступных библиотек подпрограмм во многом определяет возможности системы программирования и ее позиции на рынке средств разработки программного обеспечения.

Библиотеки подпрограмм входили в состав средств разработки, начиная с самых ранних этапов их развития. Даже когда компиляторы еще представляли собой отдельные программные модули, они уж были связаны соответствующими библиотеками, поскольку компиляция, так или иначе, предусматривает связь программ со стандартными функциями исходного языка. Эти функции обязательно должны входить в состав библиотек.

С точки зрения системы программирования, библиотеки подпрограмм состоят из двух основных компонентов. Это собственно – множество файлов библиотеки, содержавших объектный код, и набор файлов описаний функций, подпрограмм, констант и переменных, составляющих библиотеку. Описания оформляются на соответствующем входном языке (например, для языка С это будет набор заголовочных файлов). Иногда эти файлы могут быть совмещены.

Объектный код библиотеки подключается компоновщиком к результирующей программе при создании исполняемого модуля. По структуре он мало чем отличается от обычных объектных файлов, порождаемых компилятором. Чаще всего система программирования хранит объектный код входящих в ее состав библиотек в некотором упакованном виде.

Набор файлов описания библиотеки, служит для информирования компилятора о составе входящих в библиотеку функций. Обрабатывая эти файлы, компилятор получает всю необходимую информацию о составе библиотеки с точки зрения входного языка программирования. Эти файлы предназначены только для того, чтобы избавить разработчика от необходимости постоянного описания библиотечных функций, подпрограмм, констант и переменных.

В состав системы программирования может входить большое количество разнообразных библиотек. Среди них всегда можно выделить основную библиотеку, содержащую обязательные функции входного языка программирования. Эта библиотека всегда используется компилятором, поскольку без нее разработка программ на данном входном языке невозможна. Разработчик даже не должен указывать необходимость использования этой библиотеки (некоторые разработчики программ и не догадываются, что пользуются подобной библиотекой). Все остальные библиотеки необязательны и подключаются к результирующей программе только по прямому указанию разработчика.

В ходе развития систем программирования принципы создания и использования библиотечных функций претерпели мало изменений. Принципиально новые возможности предоставили только современные ОС, которые позволили подключать к результирующим программам не статические, а динамические библиотеки.

Формат файлов динамических библиотек может быть различным — как правило, он строго определяется требованиями соответствующей операционной системы. Как и статические библиотеки, динамические библиотеки предусматривают описание входящих в них функций в виде текста на соответствующем входном языке, чтобы дать информацию о них компилятору в ходе обработки исходного текста программы и избавить разработчика от создания таких описаний.

Конечно, динамические библиотеки требуют наличия в операционной системе специального механизма, позволяющего подключать часть объектного кода непосредственно по ходу выполнения программы. Однако для довременных операционных систем, выполняющихся в вычислительных системах, которые поддерживают широкий набор методов адресации, это не является проблемой.

Проблемы, главным образом, связаны с тем, что различные прикладные программы связываются объектным кодом, непосредственно не входящим в их состав. Таким образом, логика (алгоритм) работы всех этих программ становится зависимой от кода библиотек. Изменение библиотеки, которое может происходить независимо от разработчиков прикладных программ, может непроизвольно повлиять и на функционирование данных программ. Такое развитие событий порой оказывается неожиданным для пользователя программ.

Поэтому использование динамических библиотек накладывает определенные обязательства, как на разработчика программы, так и на создателя самой библиотеки. Разработчик прикладной программы должен использовать библиотеку только так, как это определено ее создателем, а создатель библиотеки в случае ее модификации должен организовывать изменения таким образом, чтобы они не сказывались на логике работы программы, ориентированной на предыдущие версии его библиотеки. Подавляющее большинство разработчиков (как программ, так и библиотек) стремится придерживаться этих правил, но не всегда им это удается.

Статическая библиотека – могут быть в виде исходного текста, подключаемого программистом к своей программе на этапе написания (например, для языка Fortran существует огромное количество библиотек для решения разных задач именно в исходных текстах), либо в виде объектных файлов, присоединяемых (линкуемых) к исполняемой программе на этапе компиляции (в Microsoft Windows такие файлы имеют расширение .lib, в UNIX, и ему подобных ОС — обычно имеют расширение .a). В результате программа включает в себя все необходимые функции, что делает её автономной, но увеличивает размер.

Динамическая библиотека – это отдельные файлы, предоставляющие прикладным программам набор наиболее часто используемых функций, и загружаемые на этапе выполнения при обращении программы к ОС с заявкой на выполнение функции из библиотеки. Если запрошенная библиотека уже загружена в основное запоминающее устройство, программа будет пользоваться загруженной копией. Такой подход позволяет экономить память, поскольку несколько программ используют одну копию библиотеки, загруженную в память.

Динамические библиотеки хранятся обычно в определенном месте и имеют стандартное расширение. Например, файлы .library в логическом томе Libs: в AmigaOS; в Microsoft Windows и OS/2 файлы библиотек общего пользования имеют расширение .dll; в UNIX и ему подобных ОС — обычно .so; в MacOS — .dylib.

Сложный процесс загрузки динамических библиотек замедляет запуск программы, но у него есть существенный, даже можно сказать неоценимый плюс – если другая запускаемая программа линкована с этой же загруженной динамической библиотекой, то она использует туже копию библиотеки. Это означает, что требуется гораздо меньше памяти для запуска нескольких программ, сами загрузочные файлы меньше по размеру, что экономит место на дисках.

Однако если Вы модифицируете динамическую библиотеку и попытаетесь ее использовать при запуске программы, то если загрузчик обнаружит уже загруженную старую библиотеку он будет упорно использовать ее функции. При этом Вы так и не сможете загрузить новую версию библиотеки.При этом Вы так и не сможете загрузить новую версию библиотеки. Но есть пути решения этой проблемы, и они будут рассмотрены позже.