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 en la especificación del lenguaje de programación correspondiente ; sin embargo, algunas se establecen, total o parcialmente, mediante prácticas más informales de la comunidad del lenguaje.
Algunos lenguajes definen una parte fundamental de la biblioteca estándar que debe estar disponible en todas las implementaciones, al tiempo que permiten que otras partes se implementen de forma opcional.
En muchos lenguajes, la biblioteca estándar suele tener su propio espacio de nombres. Por ejemplo, C++ , D y Rust usan std::*como espacio de nombres de la biblioteca estándar. C# usa System.*, mientras que Java usa java.*y . Sin embargo, en algunos como Python y Gojavax.* , no existe un "espacio de nombres de biblioteca estándar" ni un prefijo común para los módulos que pertenecen a la biblioteca estándar.jdk.*
Tal como se define en los aspectos centrales del lenguaje, la línea que separa el lenguaje principal de su biblioteca estándar es relativamente sutil. Un programador puede confundir ambos aspectos, aunque los diseñadores del lenguaje los separen intencionadamente.
En algunos lenguajes, la distinción entre el lenguaje principal y su biblioteca estándar se difumina aún más al definir las construcciones del lenguaje principal en función de su biblioteca estándar. Por ejemplo, Java define un literal de cadena como una instancia de la java.lang.Stringclase. Smalltalk define una expresión de función anónima (un "bloque") como una instancia de la clase de su biblioteca BlockContext. Scheme no especifica qué partes deben implementarse como lenguaje principal y cuáles como biblioteca estándar.
Contenido
Dependiendo de las construcciones disponibles en el lenguaje principal, una biblioteca estándar puede incluir:
- Subrutinas
- Definiciones macro
- Variables globales
- Definiciones de clase
- Plantillas
Las funcionalidades que se ofrecen habitualmente incluyen:
- Algoritmos , como los algoritmos de ordenación
- Estructuras de datos , como la lista , el árbol y la tabla hash.
- Interacción con sistemas externos (entrada/salida)
- Interacción con el sistema operativo anfitrión
Filosofías
Las filosofías de diseño de las bibliotecas estándar varían ampliamente. Por ejemplo, Bjarne Stroustrup , diseñador de C++ , escribe:
¿Qué debería incluir la biblioteca estándar de C++? Lo ideal sería que un programador pudiera encontrar en una biblioteca todas las clases, funciones, plantillas, etc., interesantes, significativas y razonablemente generales. Sin embargo, la pregunta aquí no es "¿Qué debería incluir alguna biblioteca?", sino "¿Qué debería incluir la biblioteca estándar ?". La respuesta "¡Todo!" es una primera aproximación razonable a la primera pregunta, pero no a la segunda. Una biblioteca estándar es algo que todo implementador debe proporcionar para que todo 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 necesitar razonablemente al crear una gran cantidad de software. Esta es la filosofía que se utiliza en las bibliotecas estándar de C y C++ . Como resultado, la biblioteca estándar de C y la de C++ son significativamente más pequeñas en tamaño y alcance en comparación con, por ejemplo, la biblioteca estándar de Java y la de C# , que ofrecen funcionalidades más amplias.
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 programar. En el tutorial de Python, escribe:
Python tiene una filosofía de "todo incluido". Esto se aprecia mejor a través de las capacidades sofisticadas y robustas de sus paquetes más grandes. [ 2 ]
Van Rossum continúa enumerando bibliotecas para el procesamiento de XML , XML-RPC , mensajes de correo electrónico y localización, funcionalidades 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 de .NET Framework . En C++, estas funcionalidades no forman parte de la biblioteca estándar, sino que se incluyen en otras bibliotecas, como Boost o POCO . En Java, las antiguas bibliotecas estándar Java Platform, Enterprise Edition (ahora Jakarta EE) y JavaFX se trasladaron a bibliotecas independientes separadas.
Ejemplos
- Biblioteca estándar de C
- Biblioteca estándar de C++
- Biblioteca de clases de .NET Framework (FCL)
- Biblioteca de clases de Java (JCL)
- Biblioteca estándar de Rust
- Biblioteca de estándares de factores
- Biblioteca estándar de Ruby
- biblioteca estándar de Python
- Bibliotecas estándar de la Infraestructura de Lenguaje Común (CLI)
Referencias
- Bibliotecas de programación
- estándares de lenguajes de programación