표준 라이브러리

컴퓨터 프로그래밍에서 표준 라이브러리(standard library)란 프로그래밍 언어의 여러 구현체에서 통용될 수 있도록 만들어진  라이브러리를 말한다. 이러한 라이브러리는 관습적으로 프로그래밍 언어의 명세에 포함되어 있지만, 어떤 언어와 연관된 라이브러리의 내용은 (부분적으로든 전체적으로든) 그 언어를 사용하는 커뮤니티의 비공식적인 실천에 따라 결정되기도 한다.

언어를 고안한 사람들은 표준 라이브러리와 언어를 분리해서 독립적인 것으로 생각하더라도, 해당 언어의 사용자들은 표준 라이브러리 역시 언어의 일부로서 취급하곤 한다. 많은 언어 명세들은 모든 구현체가, 그리고 일부만 구현된 부분체라도, 포함해야 하는 핵심적인 부분(core set)을 정의하고 있다. 그래서 한 언어와 그 라이브러리 간의 관계는 언어마다 다르다. 사실, 어떤 언어들은 핵심 라이브러리를 참조하지 않고서는 통사적 구성물(syntactic constructs: 언어 문법)의 의미를 기술할 수 없도록 설계되어 있기도 하다. 예를 들어, 자바(Java)에서, 문자열 리터럴은 java.lang.String 클래스의 인스턴스로 정의되어 있다. 비슷하게, Smalltalk에서 익명 함수 표현(소위 "block")은 라이브러리의 BlockContext 클래스의 인스턴스를 생성한다. 반대로, Scheme은 여러 개의 일관된 부분집합을 가지고 있는데, 이것은 라이브러리 매크로로서 해당 언어의 나머지 부분을 구성하는 데 부족함이 없다. 그래서 언어 설계자는, 언어의 문법(constructs - 흔히 syntax를 대신해서 사용됨)으로서 어떤 부분이 반드시 구현되어야 하는지, 어떤 부분이 라이브러리의 부분으로 구현되어야 하는지 말할 필요조차 없다

구성물 
표준 라이브러리는 일반적으로 공통으로 사용되는 알고리즘, 데이터 구조, 입출력을 위한 매커니즘을 위한 정의들을 포함하고 있다. 호스트 언어에서 사용 가능한 구성체에 따라 표준 라이브러리는 다음을 포함할 수 있다:
 함수
 매크로 정의
 전역 변수
 클래스 정의
 템플릿
대부분의 표준 라이브러리는 적어도 공통으로 쓰이는 다음의 기능들을 위한 정의들을 포함한다:
 알고리즘 (예: 정렬 알고리즘)
 자료 구조 (예: 리스트, 트리, 해시 테이블)
 호스트 플랫폼과의 상호 작용 (입출력, 운영 체제 호출 포함)

표준 라이브러리의 예 
 C 표준 라이브러리
 C++ 표준 라이브러리
 표준 템플릿 라이브러리 (STL) - C++ 표준 라이브러리
 자바 클래스 라이브러리 (JCL) - 자바 프로그래밍 언어, 자바 플랫폼
 베이스 클래스 라이브러리 (BCL) - 닷넷 프레임워크
 PHP 표준 라이브러리 (SPL) - PHP  

라이브러리