Interested Article - Библиотека (программирование)

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

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

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

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

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

Расширения имен файлов динамических библиотек в разных ОС
Расширение ОС Расшифровка Примечание
UNIX англ. s hared o bject
dylib Mac OS англ. dy namic lib rary
library AmigaOS Хранятся в логическом томе Libs:
dll Microsoft Windows , OS/2 англ. d ynamic l ink l ibrary

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

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

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

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

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

Недостатки:

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

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

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

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

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

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

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

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

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

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

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

Недостатки:

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

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

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

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

См. также

Примечания

  1. Wilkes M. V., Wheeler D. J., Gill S. Preparation of programs for an electronic digital computer. — Addison-Wesley, 1951.
  2. Уилкс М., Уиллер Д., Гилл С. «Составление программ для электронных счётных машин». Издательство иностранной литературы, 1953
  3. (неопр.) . Дата обращения: 9 октября 2012. 3 мая 2012 года.
  4. Савельев А.М. (рус.) // Журнал "АВИАЦИОННЫЕ ДВИГАТЕЛИ". — 2019.
  5. Robert Elder. . — 2020. 6 марта 2021 года.
  6. jsmanifest. . — 2020. 11 сентября 2020 года.
  7. от 6 февраля 2021 на Wayback Machine . Документация языка Python на сайте docs.python.org.
  8. БУХАРОВ Т.А., НАФИКОВА А.Р., МИГРАНОВА Е.А. (рус.) // COLLOQUIUM-JOURNAL. — 2019.

Литература

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

Same as Библиотека (программирование)