Библиотека

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Различающимися по назначению. Вот несколько примеров: библиотека для научных вычислений, библиотека для нужд фронтенда, для бэкенда, для шифрования данных, для работы с сетью, передачи запросов или файлов, обработки графики, 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 или на официальном сайте.

(рейтинг: 5, голосов: 4)
Добавить комментарий