Введение

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

Обзор

Стандартная библиотека языка часто воспринимается пользователями как часть самого языка, хотя разработчики могут рассматривать её как отдельное целое. Многие спецификации языков определяют базовый набор, который должен быть доступен во всех реализациях, в дополнение к другим частям, реализация которых является необязательной. Таким образом, грань между языком и его библиотеками варьируется от языка к языку. Более того, некоторые языки спроектированы таким образом, что смысл определенных синтаксических конструкций невозможно описать без обращения к основной библиотеке. Например, в Java строковый литерал определяется как экземпляр класса `java.lang.String`; аналогично, в Smalltalk анонимное функциональное выражение ("блок") создает экземпляр класса `BlockContext` библиотеки. В противоположность этому, Scheme содержит несколько согласованных подмножеств, которых достаточно для построения остальной части языка в виде библиотечных макросов, поэтому разработчики языка даже не считают нужным указывать, какие части языка должны быть реализованы как языковые конструкции, а какие – как части библиотеки.

Философии

Философии проектирования стандартных библиотек сильно различаются. Например, Бьярне Страуструп, создатель C++, пишет:

Это подразумевает относительно небольшую стандартную библиотеку, содержащую только те конструкции, которые "любой программист" может обоснованно потребовать при разработке большого набора программного обеспечения. Именно эта философия лежит в основе стандартных библиотек C и C++. В отличие от этого, Гидо ван Россум, разработчик Python, придерживается гораздо более широкого взгляда на стандартную библиотеку. Python стремится предоставить простой в использовании, объектно-ориентированный язык программирования высокого уровня. В учебнике по Python он пишет:

Ван Россум далее перечисляет библиотеки для обработки XML, XML RPC, электронных писем и локализации – функциональные возможности, которые отсутствуют в стандартной библиотеке C++. Эта другая философия часто встречается в скриптовых языках (таких как Python или Ruby) или языках, использующих виртуальную машину, например Java или языки платформы .NET. В C++ такие возможности не входят в стандартную библиотеку, а предоставляются другими библиотеками, такими как Boost.