stringtranslate.com

Biblioteca estándar

En programación de computadoras , 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 una lengua también puede estar determinado (en parte o en su totalidad) por prácticas más informales de la comunidad de una lengua.

Descripción general

Los usuarios suelen tratar la biblioteca estándar de un idioma como parte del mismo , aunque los diseñadores pueden haberla tratado como una entidad separada. Muchas especificaciones de lenguaje definen un conjunto básico que debe estar disponible en todas las implementaciones , además de otras partes que pueden implementarse opcionalmente. Por lo tanto, la línea divisoria entre un idioma y sus bibliotecas difiere de un idioma a otro. De hecho, algunos lenguajes están diseñados de manera que los significados de ciertas construcciones sintácticas ni siquiera pueden describirse sin consultar 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. Dependiendo de las construcciones disponibles en el idioma anfitrión, una biblioteca estándar puede incluir:

La mayoría de las bibliotecas estándar incluyen definiciones para al menos las siguientes instalaciones de uso común:

Filosofías

Las filosofías del 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 es que un programador pueda 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 una respuesta a la primera pregunta, pero no a la segunda. Una biblioteca estándar es algo que todo implementador debe proporcionar para que todos los programadores puedan confiar en ella. [1]

Esto sugiere una biblioteca estándar relativamente pequeña, que contiene sólo las construcciones que "cada programador" podría necesitar 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 nos ofrece medios de lenguaje de alto nivel, orientados a objetos y fáciles de codificar. En el tutorial de Python, escribe:

Python tiene una filosofía de "baterías incluidas". Esto se ve mejor a través de las capacidades sofisticadas y sólidas 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 de otras bibliotecas, como Boost .

Ejemplos de bibliotecas estándar

Referencias

  1. ^ Bjarne Stroustrup. El lenguaje de programación C++ . 3ª edición. Addison-Wesley, 1997
  2. ^ Guido van Rossum. [1].