Стандартная библиотека

Стандартная библиотека

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

Содержание

История

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

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

В некоторых случаях стандартная библиотека описывается непосредственно в стандарте языка (Python, Perl, Java), в некоторых — отдельными стандартами (Си), иногда она определяется исходя из практического наличия функций в реализациях языка (Basic, Pascal).

Типовые подходы к проектированию

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

  • Первый — стандартная библиотека должна содержать в себе только те процедуры и функции, которые используются практически всеми и обладают максимальной универсальностью. В частности, этой позиции придерживается Бьёрн Страуструп, автор языка C++[1]. Одним из оснований этой концепции является простое соображение: чем более специфична предоставляемая библиотекой функциональность, тем труднее реализовать её так, чтобы она в полной мере удовлетворяла требованиям каждого конкретного случая; если библиотечная реализация не будет универсальной и эффективной во всех вариантах применения, то для большинства реальных задач она окажется неподходящей, следовательно — бесполезной.
  • Второй — стандартная библиотека должна содержать в себе максимально возможное количество типичных алгоритмов, обеспечивать простую работу с большинством (в идеале, со всеми) объектами, с которыми может взаимодействовать программа. Одним из примеров реализации этого подхода является язык Python с девизом «Batteries included» (батарейки в комплекте)[2]. Доводом в пользу этого подхода является представление, согласно которому скорость написания программ и их корректность в большинстве случаев важнее эффективности (по крайней мере, для большинства прикладных программ), поэтому лучше всего предоставить программисту максимум готовых, тщательно проверенных механизмов, которые он сможет использовать, чтобы программирование «вручную» было необходимо только для действительно нетривиальных алгоритмов; это сэкономит время и убережёт программиста от технических ошибок в написании того, что уже было реализовано.

Состав

В зависимости от возможностей языка, стандартная библиотека может содержать:

Обычно стандартная библиотека содержит основные алгоритмы и структуры данных, необходимые для:

Бьёрн Страуструп выдвинул следующие 11 принципиальных требований к средствам, предлагаемым стандартной библиотекой:

  1. Востребованность — быть важными доступными для всех пользователей языка.
  2. Используемость — прямо или косвенно использоваться всеми программистами для решения всех задач, связанных с целями библиотеки.
  3. Эффективность — для большинства применений библиотечная реализация должна быть не хуже реализации тех же механизмов «вручную».
  4. Независимость от алгоритмов — предоставлять возможность задавать алгоритмы в качестве параметров. Например, стандартная функция сортировки должна давать возможность определить любой алгоритм сравнения элементов.
  5. Математическая примитивность — каждая компонента должна предоставлять одну определённую функцию либо группу функций, используемых только совместно.
  6. Удобство, эффективность и безопасность — по крайней мере, в большинстве типичных вариантов применения.
  7. Завершённость — «Стандартная библиотека может оставить множество функций другим библиотекам, но если уж она взялась за какую-то задачу, то должна обеспечить достаточную функциональность, чтобы отдельным пользователям и разработчикам не приходилось заменять её средства».
  8. Органично сочетаться с языком — служить естественным продолжением языковых средств, типов, операций.
  9. Типобезопасность — безопасность с точки зрения типов по умолчанию.
  10. Поддержка общепринятых стилей программирования.
  11. Расширяемость — способность единообразно работать со встроенными типами данных и с типами, определяемыми пользователем.

Реализация в синтаксисе языка

В некоторых языках функции ввода/вывода являются частью синтаксиса самого языка (например, Basic, Pascal, Python) и не могут быть воспроизведены как самостоятельные функции (процедуры). С одной стороны, это позволяет создавать более гибкий синтаксис для операторов вывода (например, оператор вывода на экран writeln в Pascal существенно проще по синтаксису чем функция printf в стандартной библиотеке языка Си), с другой стороны, это усложняет синтаксис языка и затрудняет использование компилятора языка для создания программ не использующих эти возможности (например, в встраиваемых компьютерах).

Ссылки

  1. Bjarne Stroustrup. The C++ Programming Language. 3rd Ed. Addison-Wesley, 1997
  2. Guido van Rossum. Python Tutorial

См. также



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Стандартная библиотека" в других словарях:

  • Стандартная библиотека языка Си — Стандартная библиотека языка программирования С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stdbool.h stddef.h …   Википедия

  • Стандартная библиотека языка C++ — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов …   Википедия

  • Стандартная библиотека шаблонов — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов …   Википедия

  • Стандартная библиотека Python — Богатая стандартная библиотека является одной из привлекательных сторон языка программирования Python. Здесь имеются средства для работы со многими сетевыми протоколами и форматами интернета, например, модули для написания HTTP серверов и… …   Википедия

  • Стандартная библиотека PHP — У этого термина существуют и другие значения, см. SPL. Стандартная библиотека PHP (англ. Standard PHP Library, SPL) коллекция классов и интерфейсов для решения стандартных проблем в PHP. Библиотека была введена в PHP 5 и доступна по… …   Википедия

  • Стандартная библиотека шаблонов (язык программирования Си++) — …   Википедия

  • Библиотека (программирование) — У этого термина существуют и другие значения, см. Библиотека (значения). Для улучшения этой статьи желательно?: Найти и оформить в виде сносок ссылки на авторитетные источники, подтвержд …   Википедия

  • Bionic (библиотека) — У этого термина существуют и другие значения, см. Bionic (значения). Bionic Тип стандартная библиотека языка Си Разработчик Google Написана на С Операционная система Android Лицензия …   Википедия

  • Vector (C++) — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов algorithm …   Википедия

  • iostream — Стандартная библиотека языка программирования C++ fstream iomanip ios iostream sstream Стандартная библиотека шаблонов …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»