En programación informática , una biblioteca estándar es la biblioteca disponible en todas las implementaciones de un lenguaje de programación . Estas bibliotecas se describen convencionalmente en las especificaciones del lenguaje de programación ; sin embargo, el contenido de la biblioteca asociada a un lenguaje también puede estar determinado (en parte o en su totalidad) por prácticas más informales de la comunidad de un lenguaje.
Descripción general
La biblioteca estándar de un lenguaje suele ser tratada como parte del lenguaje por sus usuarios , aunque los diseñadores pueden haberla tratado como una entidad separada. Muchas especificaciones de lenguaje definen un conjunto central que debe estar disponible en todas las implementaciones , además de otras partes que pueden implementarse opcionalmente. Por lo tanto, la línea entre un lenguaje y sus bibliotecas difiere de un lenguaje a otro. De hecho, algunos lenguajes están diseñados de modo que los significados de ciertas construcciones sintácticas ni siquiera pueden describirse sin hacer referencia a la biblioteca central. Por ejemplo, en Java , un literal de cadena se define como una instancia de la clase java.lang.String; de manera similar, en Smalltalk , una expresión de función anónima (un "bloque") construye una instancia de la clase BlockContext de la biblioteca. Por el contrario, Scheme contiene múltiples subconjuntos coherentes que son suficientes para construir el resto del lenguaje como macros de biblioteca, por lo que los diseñadores del lenguaje ni siquiera se molestan en decir qué partes del lenguaje deben implementarse como construcciones del lenguaje y cuáles deben implementarse como partes de una biblioteca.
Contenido
Las bibliotecas estándar suelen incluir definiciones de algoritmos, estructuras de datos y mecanismos de entrada y salida de uso común. Según las construcciones que pone a disposición el lenguaje anfitrión, una biblioteca estándar puede incluir:
- Subrutinas
- Definiciones de macro
- Variables globales
- Definiciones de clases
- Plantillas
La mayoría de las bibliotecas estándar incluyen definiciones para al menos las siguientes funciones de uso común:
- Algoritmos (como algoritmos de ordenación )
- Estructuras de datos (como listas , árboles y tablas hash )
- Interacción con la plataforma host, incluidas las llamadas de entrada/salida y del sistema operativo
Filosofías
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 .
Ejemplos de bibliotecas estándar
- Biblioteca estándar de C , para el lenguaje de programación C
- Biblioteca estándar de C++ , para el lenguaje de programación C++
- Biblioteca de clases de Framework (FCL) para .NET Framework
- Biblioteca de clases Java (JCL), para el lenguaje de programación Java y la plataforma Java
- Biblioteca estándar de Factor, para el lenguaje de programación Factor
- Biblioteca estándar de Ruby, para el lenguaje de programación Ruby
- Biblioteca estándar de Python, para el lenguaje de programación Python
- Bibliotecas estándar (CLI)
Referencias
- ^ Bjarne Stroustrup. El lenguaje de programación C++ . 3.ª edición. Addison-Wesley, 1997
- ^ Guido van Rossum. [1].