Библиотеки программ
| English | Русский |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | библиотека программ |
| subroutines/ˈsʌbruːtiːnz/ | подпрограммы |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | библиотечные процедуры |
| static library/ˈstætɪk ˈlaɪbrəri/ | статическая библиотека |
| executable/ɪɡˈzekjʊtəbl/ | исполняемый файл |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | динамическая библиотека |
Одиннадцать строк, сломавших интернет
- В марте 2016 года программист удалил крошечную библиотеку под названием
left-padиз публичного репозитория. Она состояла из одиннадцати строк: добавляла пробелы в начало строки. - В течение нескольких часов сборка проектов проваливалась в компаниях по всему миру. Тысячи программ никогда не писали эти одиннадцать строк. Все они заимствовали их, и это заимство было невидимо до момента, когда всё перестало работать.
- Так создаются современные программы. Библиотека программного обеспечения — это намеренное заимствование, и этот урок объясняет, что это дает разработчику, какова цена и два способа привязки такой библиотеки к программе.
Что такое библиотека программного обеспечения
- Библиотека программного обеспечения — это набор заранее написанных, протестированных рутин, подпрограмм, классов и модулей, которые программа может использовать вместо того, чтобы писать свой собственный код.
- Математическая библиотека, графическая библиотека, сетевая библиотека, библиотека поиска пути, библиотека сжатия: каждая решает одну область проблем один раз для всех программ, которым это нужно.
- Разрабатываемое программное обеспечение обычно собирается из таких библиотечных рутин плюс код, специфичный для новой программы.

Новый код — это малая часть; заимствованный код — большая часть
Лаборатория вычислительных концепций
Классифицируйте конкретные примеры по вычислительной идее, которую они демонстрируют.
Библиотека программ — это:
Библиотеки предоставляют готовый, проверенный код (математика, графика, сети...), который программа может вызвать вместо того, чтобы писать свой собственный.
Набор готового, повторяемого, проверенного кода — это программа ______.
Библиотеки экономят время и сокращают количество ошибок.
Преимущества для разработчика
- Рутины уже написаны и протестированы, поэтому разработка идет быстрее и дешевле.
- Они надежны: используются многими программами, поэтому практически лишены ошибок.
- Разработчику не нужны экспертные знания в этой области (графика, шифрование, поиск пути), и он может потратить время на собственные функции программы.
- Программу легче поддерживать, так как общий код живет в одном месте, и команда может работать параллельно, используя одни и те же рутины.
Преимущество использования библиотеки заключается в том, что код:
Код библиотек протестирован, широко используется и стандартизирован — его повторное использование экономит время и повышает надежность.
Какие из перечисленных вариантов являются преимуществами для разработчика при создании программного обеспечения из библиотечных рутин? Выберите все подходящие варианты.
Протестированные рутины, отсутствие необходимости в экспертизе, легкое обслуживание. Собственный код программы по-прежнему нужно тестировать.
Недостатки
- Рутинная программа может не полностью соответствовать требованиям, а разработчик не может ее изменить, поэтому ему приходится обходить её ограничения.
- Программа зависит от библиотеки: ошибка, отсутствующее обновление или снятая с производства библиотека, как в случае с⟩
left-pad⟨, становятся проблемой программы. - Лицензия библиотеки может ограничивать способы продажи или распространения программы, а неиспользуемые рутинные программы могут увеличить размер приложения.
Разобранный пример: робот-официант
- Команда, пишущая программное обеспечение для робота-официанта, использует программную библиотеку, включающую routine для поиска кратчайшего пути между столами. Опишите два преимущества и один недостаток для команды.
- Преимущество: routine уже написана и протестирована, поэтому команда экономит время и может доверять её результатам. Преимущество: команде не нужно самостоятельно разбираться в алгоритмах поиска пути, и она может уделить это время собственным функциям робота.
- Недостаток: routine может не учитывать точные особенности ресторана, перемещение стульев, односторонние проходы, и команда не может её изменить, поэтому ей, возможно, придётся обходить её ограничения.
- Связать каждый пункт с этой командой и этой routine. Общее утверждение «экономит время» получит меньше баллов, чем конкретное «экономит время на написании и тестировании алгоритма поиска пути».
Каков недостаток для команды роботов использования рутины поиска пути из библиотеки?
Команда не может изменять код библиотеки, поэтому любое несоответствие требованиям приходится обходить. Отсутствие необходимости понимать алгоритм является преимуществом, а не недостатком.
Статические библиотеки
- Статическая библиотека копируется в исполняемый файл во время компиляции и линковки программы.
- После этого программа существует самостоятельно: ей не нужен другой файл для запуска.
- Цена этого подхода: каждая программа содержит свою собственную копию, поэтому исполняемые файлы становятся больше, а обновление библиотеки требует пересборки каждой программы, которая её использует.
Статическая библиотека отличается от динамической тем, что:
Статическая библиотека встраивается в исполняемый файл; динамическая библиотека загружается во время выполнения и используется совместно несколькими программами.
Динамические библиотеки и файлы DLL
- Динамическая библиотека, Dynamic Link Library (DLL) в Windows или файл
.soв Linux, остаётся отдельным файлом и загружается в память только тогда, когда программа обращается к ней, во время выполнения (run time). - Исполняемые файлы меньше; несколько запущенных программ делят одну копию в памяти; а DLL можно обновить один раз (исправить ошибку или добавить поддержку нового устройства) без повторной компиляции программ, которые её используют.
- Память используется только в то время, пока нужна библиотека. Цена этого подхода: программа не запустится, если DLL отсутствует или установлена неправильная версия.

Скопирована во время компиляции или загружена и разделена во время выполнения
Динамическую библиотеку могут использовать многие программы, и обновлять ее достаточно один раз для всех.
Поскольку она загружается во время выполнения, одна общая динамическая библиотека служит многим программам; обновление её исправляет их все без пересборки каждой.
Сопоставьте каждое свойство со статической или динамической библиотекой.
Статическая линковка копирует код в исполняемый файл (больше, автономно); динамическая линковка загружает общую библиотеку во время выполнения (меньше, обновляется один раз для всех).
Расставьте события программы, использующей рутину DLL, в правильном порядке.
Загрузка происходит во время выполнения, при первом вызове, и одна копия обслуживает все программы.
Разобранный пример: преимущества файлов DLL
- Разработчик программного обеспечения использует файлы DLL. Опишите преимущества. [4]
- Размер исполняемого файла меньше, так как код библиотеки не копируется в него.
- Одна копия DLL в памяти разделяется всеми запущенными программами, которые её используют, что экономит память.
- DLL можно обновить для исправления ошибки или поддержки нового устройства без повторной компиляции или переустановки программ, которые её вызывают.
- Библиотека загружается только при необходимости, поэтому память расходуется только в момент использования routine.
Выбор статической или динамической библиотеки
- Программа должна работать на машине, где нельзя устанавливать ничего лишнего, на встроенном устройстве или представлять собой одиночный скачиваемый файл: статическая, потому что исполняемый файл самодостаточен.
- Множество программ на одной системе используют одни и те же routine, или routine меняются часто: динамическая, потому что одна общая копия занимает меньше места и обновляется один раз для всех.
- Обосновать через компромисс: самодостаточна, но велика и требует пересборки для обновления, или мала и разделяема, но зависит от наличия файла.
Программа, которая должна выполняться из одного файла на устройстве, где нельзя устанавливать ничего другого, должна использовать динамическую библиотеку.
Динамическая библиотека — это отдельный файл, который должен присутствовать. Статическая библиотека копируется в исполняемый файл, что именно необходимо для самодостаточной программы.
Потерянные баллы
- DLL загружается во время выполнения (run time), а не компиляции. Именно эта фраза является ключевой для получения балла.
- Преимущества для разработчика: уже написана и протестирована, не требуется экспертиза в этой области, легче поддерживать. Утверждение «программа работает быстрее» не входит в список правильных ответов.
- Библиотека — это код, а не инструмент. IDE — это инструмент; библиотека — это то, к чему обращается программа.
- Недостаток должен быть недостатком использования библиотеки: невозможно изменить, может не подойти, зависимость. Фраза «это стоит денег» редко является сутью ответа.
Вы поняли
- Библиотека программ — это заранее написанный и протестированный код, к которому обращается программа вместо написания собственного.
- Преимущества: более быстрая и дешевая разработка, надежные routines, не требуется экспертиза в данной области, проще поддерживать, команды работают параллельно; недостатки: может не подойти, невозможно изменить, зависимость.
- Статическая: копируется в исполняемый файл во время компиляции, самодостаточна, но велика и требует пересборки для обновления.
- Динамическая (DLL): отдельный файл, загружаемый во время выполнения, меньше размера, разделяется многими программами, обновляется один раз для всех.