WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Библиоте́ка (от англ. library) в программировании — сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО).

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

Термин «библиотека подпрограмм», по всей видимости, одними из первых упомянули Уилкс М., Уиллер Д., Гилл С. в качестве одной из форм организации вычислений на компьютере[1][2]. Исходя из изложенного в их книге, под библиотекой понимался набор «коротких, заранее заготовленных программ для отдельных, часто встречающихся (стандартных) вычислительных операций»[3].

Библиотеки для компилируемых языков

Динамические библиотеки

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

Расширения файлов динамических библиотек в разных ОС.

РасширениеОСРасшифровкаПримечание
soUNIXангл. shared object
dylibMac OSангл. dynamic library
libraryAmigaOSХранятся в логическом томе Libs:
dllMicrosoft Windows, OS/2англ. dynamic link library

В зависимости от назначения различают:

  • библиотеки, используемые одной программой и содержащие критические для работы программы функции. Недостаток: при отсутствии библиотеки программа не сможет работать;
  • библиотеки, используемые одной программой и содержащие дополнительные функции. Например, библиотеки плагинов используются для расширения функциональности программы;
  • библиотеки общего пользования (англ. shared library). Содержат функции, используемые несколькими программами. Могут загружаться в адресное пространство ОС (англ. system library) для экономии памяти: одна копия библиотеки будет использоваться несколькими процессами.

При написании программы программисту достаточно указать транслятору (компилятору или интерпретатору) путь к библиотеке и имя функции. Ни исходный текст функции, ни её исполняемый код в состав программы не войдут.

Достоинства:

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

Недостатки:

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

Статические библиотеки

Статическая библиотека — файл с исходным кодом или объектный файл, предназначенный для вставки в программу на этапе компоновки.

Библиотеки, распространяемые в виде исходного кода, преобразуются компилятором в объектные файлы. Затем компоновщик соединяет объектные файлы библиотек и объектные файлы вашей программы в один исполняемый файл.

Например, в исходных текстах распространяются:

  • библиотеки для языка Fortran;
  • библиотека Boost для языка C++.

Библиотеки, распространяемые в виде объектных файлов, уже готовы к компоновке. Компоновщик выполняет соединение объектных файлов библиотек и объектных файлов вашей программы во время создания исполняемого файла.

Расширения объектных файлов статических библиотек в разных ОС.

РасширениеОС
«a»UNIX
«lib»Microsoft Windows

Стандартные библиотеки многих компилируемых языков программирования (Fortran, Pascal, C, C++ и других) распространяются в виде объектных файлов.

Достоинства:

  • все необходимые функции включаются в один исполняемый файл.

Недостатки:

  • исполняемый файл занимает больше места на диске и в памяти;
  • при обнаружении ошибок в библиотеке требуется повторная сборка всех программ.

Библиотеки для интерпретируемых языков

Библиотека — файл, содержащий либо код на интерпретируемом языке, либо байт-код для виртуальной машины.

Например, библиотеки для языка Python могут распространяться либо в виде файлов с исходным кодом (расширение «py»), либо в виде файлов с байт-кодом[4] (расширение «pyc», буква «c» от англ. compiled).

См. также

Примечания

  1. Wilkes M. V., Wheeler D. J., Gill S. Preparation of programs for an electronic digital computer. — Addison-Wesley, 1951.
  2. Уилкс М., Уиллер Д., Гилл С. «Составление программ для электронных счётных машин». Издательство иностранной литературы, 1953
  3. Волченскова, Надежда Ивановна, Технология многомашинной реализации и жизнеобеспечения библиотек подпрограмм вычислительной математики на языке Фортран, автореферат к диссертации, 1984
  4. Компиляция файлов python. Документация языка Python на сайте docs.python.org.

Литература

Николай Джосьютис. C++ Стандартная библиотека. Для профессионалов = The C++ Standart Library. A Tutorial and Reference. СПб.: Питер, 2004. — 730 с. ISBN 5-94723-635-4.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии