Стандартная библиотека
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2019 г. ) |
В компьютерном программировании стандартная библиотека — это библиотека, доступная во всех реализациях языка программирования . Эти библиотеки традиционно описываются в спецификациях языков программирования ; однако содержимое связанной с языком библиотеки также может определяться (частично или полностью) более неформальными практиками языкового сообщества.
Обзор
[ редактировать ]как часть языка Стандартная библиотека языка часто рассматривается пользователями , хотя дизайнеры могли рассматривать ее как отдельный объект. Многие спецификации языка определяют базовый набор, который должен быть доступен во всех реализациях в дополнение к другим частям, которые могут быть реализованы опционально. Поэтому граница между языком и его библиотеками различается от языка к языку. Действительно, некоторые языки устроены так, что значения определенных синтаксических конструкций невозможно даже описать без обращения к базовой библиотеке. Например, в Java строковый литерал определяется как экземпляр класса java.lang.String; аналогично в Smalltalk выражение анонимной функции («блок») создает экземпляр библиотечного класса BlockContext. И наоборот, Scheme содержит множество связных подмножеств, которых достаточно, чтобы сконструировать остальную часть языка в виде библиотечных макросов, поэтому разработчики языка даже не утруждают себя указанием, какие части языка должны быть реализованы как языковые конструкции, а какие должны быть реализованы как части. библиотеки.
Содержание
[ редактировать ]Стандартные библиотеки обычно включают определения часто используемых алгоритмов, структур данных и механизмов ввода и вывода. В зависимости от конструкций, доступных на основном языке, стандартная библиотека может включать:
- Подпрограммы
- макросов Определения
- Глобальные переменные
- классов Определения
- Шаблоны
Большинство стандартных библиотек включают определения как минимум следующих часто используемых средств:
- Алгоритмы (например, алгоритмы сортировки )
- Структуры данных (например , списки , деревья и хеш-таблицы )
- Взаимодействие с хост-платформой, включая ввод/вывод и операционной системы . вызовы
Философия
[ редактировать ]Философия проектирования стандартных библиотек сильно различается. Например, Бьёрн Страуструп , разработчик C++ , пишет:
Что должно быть в стандартной библиотеке C++? В идеале программист должен иметь возможность найти в библиотеке каждый интересный, важный и достаточно общий класс, функцию, шаблон и т. д. Однако вопрос здесь не в том, «Что должно быть в какой-то библиотеке?» но «Что должно быть в стандартной библиотеке?» Ответ «Все!» является разумным первым приближением к ответу на первый вопрос, но не на второй. Стандартная библиотека — это то, что должен предоставить каждый разработчик, чтобы каждый программист мог на нее положиться. [ 1 ]
Это предполагает относительно небольшую стандартную библиотеку, содержащую только те конструкции, которые могут разумно потребоваться «каждому программисту» при создании большой коллекции программного обеспечения. Это философия, которая используется в стандартных библиотеках C и C++ .
Напротив, Гвидо ван Россум , разработчик Python , придерживается гораздо более инклюзивного видения стандартной библиотеки. Python пытается предложить простой в кодировании объектно-ориентированный язык высокого уровня. [ нужна ссылка ] В учебнике по Python он пишет:
У Python есть философия «батарейки включены». Лучше всего это видно по сложным и надежным возможностям более крупных пакетов. [ 2 ]
Ван Россум продолжает перечислять библиотеки для обработки XML , XML-RPC , сообщений электронной почты и локализации — средства, которые отсутствуют в стандартной библиотеке C++. Эта другая философия часто встречается в языках сценариев (например, Python или Ruby ) или в языках, использующих виртуальную машину , таких как Java или языки .NET Framework . В C++ такие возможности не являются частью стандартной библиотеки, а включены в другие библиотеки, такие как Boost .
Примеры стандартных библиотек
[ редактировать ]![]() |
- Стандартная библиотека C для языка программирования C.
- Стандартная библиотека C++ для языка программирования C++.
- Библиотека классов Framework (FCL) для .NET Framework
- Библиотека классов Java (JCL) для языка программирования Java и платформы Java.
- Стандартная библиотека Factor для языка программирования Factor.
- Стандартная библиотека Ruby для языка программирования Ruby.
- Стандартная библиотека Python для языка программирования Python.
- Стандартные библиотеки (CLI)