Что такое библиотека в программировании
Перейти к содержимому

Что такое библиотека в программировании

  • автор:

Библиотека

Библиотека — это готовый набор функций и объектов для какого-либо языка программирования. Обычно такие наборы объединены назначением или сферой использования, например математические библиотеки или веб-библиотеки. Программисты пользуются ими, чтобы ускорять и упрощать свою работу.

«IT-специалист с нуля» наш лучший курс для старта в IT

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

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

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Для чего нужны библиотеки

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

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

Библиотеки помогают реализовать принцип DRY — don’t repeat yourself, «не повторяйся». Эффективнее и правильнее с точки зрения чистоты кода воспользоваться функцией из библиотеки, чем пытаться реализовать ее с нуля и «изобретать велосипед».

Какие возможности дают библиотеки

В теории — никаких, кроме тех, которые и так можно реализовать внутри языка. Например, библиотека для отправки запросов. Отправить запрос можно и без нее — да, это займет сотни строк кода и много сил, но в теории это возможно.

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

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

Какими бывают библиотеки

У библиотек довольно широкая классификация в зависимости от назначения, типа распространения, способа использования и так далее. Вот какими они бывают.

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

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

А еще бывают системные библиотеки — system libraries. Это такие, которые изначально встроены в операционную систему. Обычно они нужны для разнообразного системного программирования и работы в консоли.

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

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

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

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Статическими и динамическими. Статическая библиотека — это файл с программным кодом, который описывает нужные сущности. Ее подключают к программе с помощью специальной команды; некоторые языки позволяют подключать не библиотеку целиком, а только ее части. При запуске код из библиотеки как бы «вставляется» в программу и становится ее частью.

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

Динамические библиотеки позволяют уменьшить размер программы, и их можно быстро обновить, не «пересобирая» программу. Но их считают более уязвимыми. Если файл библиотеки повредить или подменить, вся программа будет работать неправильно. Статические же модули не повредишь: они уже встроились в исходный код.

Различающимися по назначению. Вот несколько примеров: библиотека для научных вычислений, библиотека для нужд фронтенда, для бэкенда, для шифрования данных, для работы с сетью, передачи запросов или файлов, обработки графики, 3D-моделирования… Список можно продолжать бесконечно. Под любые нужды, скорее всего, найдется подходящая библиотека.

Примеры популярных библиотек

Библиотек существует тысячи, и перечислить их все для каждого языка программирования невозможно. Поэтому мы приведем примеры популярных библиотек для трех распространенных языков: JavaScript, Python и Java.

JavaScript. Этот язык в основном используют для веба, поэтому и библиотеки рассчитаны на него. Например, Webix UI Library нужна для создания пользовательских интерфейсов. В нее входят разнообразные виджеты, готовые блоки с уже запрограммированной логикой. Разработчику остается настроить их. Есть и другие библиотеки компонентов: DHTMLX, Kendo и прочие.

Но библиотеки для JS — это не только компоненты для веба. Например, Choreographer-JS служит для создания и настройки анимаций, а Omniscient добавляет в интерфейсы элементы функционального программирования. А знаменитый Redux, который используется в связке с фреймворками React и Angular, помогает управлять состоянием приложения.

Python. Он многофункциональный, но самые популярные отрасли его использования — data science и машинное обучение, веб и автоматическое тестирование. Поэтому и библиотеки для него в основном направлены на эти отрасли.

В первую очередь стоит упомянуть NumPy и SciPy — библиотеки для математических и научных вычислений. Еще есть TensorFlow, которая популярна в машинном обучении и помогает легко создавать нейронные сети. Сюда же можно отнести библиотеки Scikit Learn, Keras и Pandas — они тоже нужны для ML.

Для веба и других задач есть, например, Requests — библиотека, которая упрощает запросы. Для разработки игр существует Pygame, а для построения графиков — Matplotlib и Seaborn. Еще есть Pillows для работы с изображениями и многое другое.

Java. Этот многофункциональный язык чаще всего используют в крупных корпоративных проектах. Он довольно своеобразный: например, его многословный синтаксис заставляет писать немало повторяющегося кода. Поэтому многие популярные библиотеки для него — MapStruct, Lombok и еще некоторые — нужны для генерации кода с помощью аннотаций. Такой код решает рутинные задачи. Например, MapStruct нужен для маппинга: «связывания» объектов одних сущностей с другими. Это легко, но долго и неудобно делать вручную.

Стоит вспомнить библиотеки для работы с базами данных: Liquibase, FlyWay и другие. Легковесный Blade для веб-разработки можно назвать облегченным аналогом фреймворка Spring.

Библиотеки есть и для многих других целей. Apache POI генерирует отчеты в разных текстовых форматах. Log4j помогает с логированием. libGDX нужен для работы с разнообразным мультимедиа, а Guava — многофункциональный сборник библиотек от Google для самых разных общих задач.

Когда нужно использовать библиотеки

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

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

Новичкам стоит начинать работать с библиотеками сразу, как только они понимают, что освоили основные принципы языка и могут создавать что-то новое. Так разработка станет эффективнее, а начинающие получат опыт работы с профессиональными инструментами — соответственно, повысят уровень.

Как начать пользоваться библиотеками

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

Обычно библиотека — это файл, который можно «импортировать» в код. Команда для этого может иметь разный синтаксис. Чаще всего она называется import. Пишут ее обычно в самом начале файла с кодом; после этого можно пользоваться функциями из библиотеки по своему усмотрению.

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

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Фреймворки и библиотеки: что нужно знать IT рекрутерам

Почему нужно знать о фреймворках и библиотеках? Как IT рекрутер, вам уже недостаточно знать только названия определенных языков программирования – вы также должны понимать основы того, как создается программное обеспечение.

Когда речь заходит о создании производственного программного обеспечения, необходимо учитывать два очень важных фактора: во-первых — разработка приложений становится все более сложной. Во-вторых, программисты всегда стараются быть более результативными в своей работе. В результате каждая команда программистов должна решить, следует (или нет) создавать приложение, используя либо фреймворк, либо библиотеку ПО (или несколько библиотек).
По той же причине вы должны знать, какие библиотеки и фреймворки имеют отношение к определенной должности, на которую вы подбираете сотрудников. Так как сможете найти разработчиков, наиболее подходящих для вакансии. Полное понимание того, как языки программирования, фреймворки и библиотеки работают вместе, позволит вам действительно выделиться на фоне коллег (а также позволит вам чувствовать себя более уверенно, когда вы говорите «о технологиях») с кандидатами.

В чем разница между фреймворком и библиотекой?
Основное различие заключается в вопросе о том, кто контролирует определенные ключевые действия в процессе создания программного обеспечения (и когда программное обеспечение фактически работает).
Например, когда разработчик использует функцию из библиотеки, он контролирует – другими словами, код разработчика полностью контролирует последовательность событий. Однако в случае фреймворка направление управления инвертируется (это называется инверсией управления), поскольку фреймворк управляет разработчиком – в данном случае фреймворк управляет кодом разработчика. В каком-то смысле фреймворк работает так же, как и так называемый голливудский принцип: «Не звони нам, мы тебе позвоним».

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

Что такое библиотеки в кодировании?
Библиотека — это набор функций, к которым разработчик может получить доступ. Библиотека обычно организована в так называемые «классы». Вся идея такой библиотеки заключается в том, что она содержит код, который можно повторно использовать для определенной цели в определенном домене. Таким образом, библиотека упрощает конкретные задачи, предоставляя набор общих функциональных возможностей. Затем они готовы к использованию в программном обеспечении. Например, большинство языков программирования предоставляют библиотеки для функциональных возможностей, таких как форматирование строки или ведение журнала исключений, которые могут возникнуть. Используя соответствующие библиотеки, разработчики могут сократить объем кода, который им необходимо написать. В то же время хорошо известные библиотеки имеют хорошую документацию и были протестированы. Поэтому в большинстве случаев IT специалистам лучше пользоваться библиотекой, а не тратить время и силы на написание, тестирование и документирование собственного кода.

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

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

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

Вопрос: Могут ли программисты кодировать приложение без библиотеки или фреймворка, но используя только свой собственный код, написанный с нуля?
Ответ: Да, они могут, но это всегда займет больше времени.

Вопрос: Могут ли программисты кодировать приложение, используя фреймворк плюс какой-то свой собственный код?
Ответ: Да, они могут.

Вопрос: Могут ли программисты программировать приложение, используя либо одну библиотеку (или несколько библиотек), либо часть своего собственного кода?
Ответ: Да, они могут.

Вопрос: Могут ли программисты написать свою собственную библиотеку?
Ответ: Да, и большинство программистов делают это в процессе своей собственной работы. Это один из лучших способов избежать любой формы дублирования, которая не нравится всем разработчикам. Они иногда решают выпустить в сообщество библиотеки, которые оказались особенно полезными. Как рекрутер, стоит спросить кандидатов, сделали ли они какие-либо такие вещи с открытым исходным кодом.

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

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

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

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

Вывод
Как IT рекрутер, очень важно, чтобы вы отбирали кандидатов не только с точки зрения языков программирования, но и с точки зрения фреймворков и библиотек.

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

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

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

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

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

Часть основной программы, которая загружается в ОС по запросу работающей программы в ходе её выполнения (Run-time), то есть динамически (Dynamic Link Library, DLL в Windows, SO в Linux). Один и тот же набор функций (подпрограмм) может быть использован сразу в нескольких работающих программах, из-за чего они имеют ещё одно название — библиотеки общего пользования (Shared Library). Если динамическая библиотека загружена в адресное пространство самой ОС (System Library), то единственная копия может быть использована множеством работающих с нею программ, что положительно сказывается на степени использовании ресурса ОЗУ. Динамические библиотеки могут содержать в себе как критические для работы программы части, так и дополнительные функции. Дополнительным плюсом такого подхода является то, что динамическая библиотека может быть использована в качестве плагина (Plug-ins), расширяющего функциональность программы. Минусом является то, что в случае, если модуль, который содержит в себе критическую часть, отсутствует, программа не сможет продолжить работу.

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

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

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

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

Примечания

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

Литература

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

Новосибирский государственный университет

Словарь-справочник по информатике (онтология информатики)

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

Синонимы: библиотека; библиотека стандартных программ; библиотека подпрограмм; библиотека программ;

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

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

Впервые такие понятия, как подпрограмма и библиотека подпрограмм были намечены в комментариях леди Лавлейс .

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

Ключевые термины, связанные с термином «библиотека»:

Литература

Ссылки на персон:

© 2007-2024, Новосибирский государственный университет, Новосибирск
© 1998-2024, Институт вычислительных технологий СО РАН, Новосибирск
© 1998-2024, Федотов А.М.
Дата последней модификации: 25.11.2013

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *