En programación informática , una biblioteca estándar es la biblioteca disponible en todas las implementaciones de un lenguaje de programación . A menudo, una biblioteca estándar se especifica mediante la especificación del lenguaje de programación asociado , sin embargo, algunas se establecen en parte o en su totalidad mediante prácticas más informales de una comunidad lingüística.
Algunos lenguajes definen una parte central de la biblioteca estándar que debe estar disponible en todas las implementaciones y permiten que otras partes se implementen de forma opcional.
Tal como se define en los aspectos básicos del lenguaje, la línea entre el lenguaje básico y su biblioteca estándar es relativamente sutil. Un programador puede confundir ambos aspectos, aunque los diseñadores del lenguaje los hayan separado intencionalmente.
En algunos lenguajes, la línea entre el lenguaje central y su biblioteca estándar se difumina aún más al definir las construcciones del lenguaje central en términos de su biblioteca estándar. Por ejemplo, Java define un literal de cadena como una instancia de la clase java.lang.String. Smalltalk define una expresión de función anónima (un "bloque") como una instancia de la clase BlockContext de su biblioteca. Scheme no especifica qué partes deben implementarse como lenguaje central y cuáles como biblioteca estándar.
Dependiendo de las construcciones disponibles en el lenguaje principal, una biblioteca estándar puede incluir:
Las funciones comúnmente proporcionadas incluyen:
Las filosofías de diseño de bibliotecas estándar varían ampliamente. Por ejemplo, Bjarne Stroustrup , diseñador de C++ , escribe:
¿Qué debería haber en la biblioteca estándar de C++? Un ideal para un programador es poder encontrar todas las clases, funciones, plantillas, etc. interesantes, significativas y razonablemente generales en una biblioteca. Sin embargo, la pregunta aquí no es "¿Qué debería haber en alguna biblioteca?" sino "¿Qué debería haber en la biblioteca estándar ?" La respuesta "¡Todo!" es una primera aproximación razonable a la respuesta a la primera pregunta, pero no a la segunda. Una biblioteca estándar es algo que cada implementador debe proporcionar para que cada programador pueda confiar en ella. [1]
Esto sugiere una biblioteca estándar relativamente pequeña, que contiene solo las construcciones que "todo programador" podría requerir razonablemente al crear una gran colección de software. Esta es la filosofía que se utiliza en las bibliotecas estándar de C y C++ .
Por el contrario, Guido van Rossum , diseñador de Python , ha adoptado una visión mucho más inclusiva de la biblioteca estándar. Python intenta ofrecer un lenguaje de alto nivel, orientado a objetos y fácil de codificar. [ cita requerida ] En el tutorial de Python, escribe:
Python tiene una filosofía de "baterías incluidas". Esto se aprecia mejor en las capacidades sofisticadas y robustas de sus paquetes más grandes. [2]
Van Rossum continúa enumerando bibliotecas para procesar XML , XML-RPC , mensajes de correo electrónico y localización, funciones que la biblioteca estándar de C++ omite. Esta otra filosofía se encuentra a menudo en lenguajes de scripting (como Python o Ruby ) o lenguajes que utilizan una máquina virtual , como Java o los lenguajes .NET Framework . En C++, estas funciones no forman parte de la biblioteca estándar, sino que se incluyen en otras bibliotecas, como Boost .