Program libraries · Bibliotecas de programas
| English | Español |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | biblioteca de programas |
| subroutines/ˈsʌbruːtiːnz/ | subrutinas |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | rutinas de biblioteca |
| static library/ˈstætɪk ˈlaɪbrəri/ | biblioteca estática |
| executable/ɪɡˈzekjʊtəbl/ | ejecutable |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | biblioteca dinámica |
Eleven lines that broke the internet
- In March 2016 a programmer deleted a tiny library called
left-padfrom a public repository. It was eleven lines long: it added spaces to the front of a string. - Within hours, builds failed at companies around the world. Thousands of programs had never written those eleven lines. They had all borrowed them, and the borrowing had been invisible until the moment it stopped working.
- That is how modern software is made. A program library 程序库 is the borrowing, done on purpose, and this lesson is what it gives a developer, what it costs, and the two ways it can be attached to a program.
Onceía líneas que rompieron internet
- En marzo de 2016, un programador eliminó una pequeña librería llamada
left-padde un repositorio público. Tenía once líneas: añadía espacios al principio de una cadena de texto. - En cuestión de horas, las compilaciones fallaron en empresas de todo el mundo. Miles de programas nunca habían escrito esas once líneas. Las habían copiado todas, y esa copia era invisible hasta el momento en que dejó de funcionar.
- Así se crea el software moderno. Una librería de programas 程序库 es esa copia, realizada a propósito, y esta lección explica qué ofrece a un desarrollador, cuál es su coste y las dos formas en que puede vincularse a un programa.
What a program library is
- A program library is a collection of pre-written, tested routines, subroutines 子程序, classes and modules, that a program can use instead of writing its own.
- A maths library, a graphics library, a network library, a path-finding library, a compression library: each solves one area of problems once, for every program that needs it.
- Software under development is normally constructed from such library routines 库例程 plus the code that is specific to the new program.
The new code is the small part; the borrowed code is the large part
Qué es una librería de programas
- Una librería de programas es una colección de rutinas preescritas y probadas, subrutinas 子程序, clases y módulos que un programa puede utilizar en lugar de escribir los suyos propios.
- Una librería matemática, una librería gráfica, una librería de red, una librería de búsqueda de rutas, una librería de compresión: cada una resuelve un área específica de problemas una sola vez, para todos los programas que lo necesiten.
- El software en desarrollo se construye normalmente a partir de tales rutinas de librería 库例程 más el código específico del nuevo programa.

El nuevo código es la parte pequeña; el código prestado es la parte grande
Computing concept lab · Laboratorio de conceptos informáticos
Classify concrete examples by the computing idea they demonstrate. · Clasificar ejemplos concretos según el concepto informático que demuestran.
A program library is: · Una biblioteca de programas es:
Libraries provide ready-made, tested code (maths, graphics, network…) that a program can call instead of writing its own. · Las bibliotecas proporcionan código listo y probado (matemáticas, gráficos, red...) que un programa puede llamar en lugar de escribir su propio código.
A collection of ready-made, reusable, tested code is a program ______. · Una colección de código listo, reutilizable y probado es una ______ de programa.
Libraries save time and reduce bugs. · Las bibliotecas ahorran tiempo y reducen errores.
The benefits to the developer
- The routines are already written and tested, so development is faster and cheaper.
- They are reliable: used by many programs, so largely error-free.
- The developer needs no expertise in that area, graphics, encryption, path-finding, and can spend the time on the program's own features.
- The program is easier to maintain, because common code lives in one place, and a team can work in parallel, each member using the same routines.
Los beneficios para el desarrollador
- Las rutinas están ya escritas y probadas, por lo que el desarrollo es más rápido y económico.
- Son confiables: usadas por muchos programas, por lo que son mayoritariamente libres de errores.
- El desarrollador no necesita experticia en esa área (gráficos, cifrado, búsqueda de rutas) y puede dedicar el tiempo a las características propias del programa.
- El programa es más fácil de mantener, porque el código común reside en un solo lugar y un equipo puede trabajar en paralelo, con cada miembro utilizando las mismas rutinas.
A benefit of using a library is that the code is: · Un beneficio de usar una biblioteca es que el código es:
Library code is tested, widely used and standardised — reusing it saves time and improves reliability. · El código de las bibliotecas está probado, es ampliamente utilizado y estandarizado; reutilizarlo ahorra tiempo y mejora la fiabilidad.
Which are benefits to a developer of building software from library routines? Select all · todos that apply. · ¿Cuáles son los beneficios para un desarrollador al construir software a partir de rutinas de biblioteca? Seleccione todos los que correspondan.
Tested routines, no expertise needed, easier maintenance. The program's own code still has to be tested. · Rutinas probadas, sin necesidad de experiencia, mantenimiento más fácil. El código propio del programa aún debe probarse.
The drawbacks
- The routine may not fit the exact need, and the developer cannot change it, so they must work around its limits.
- The program depends on the library: a bug, a missing update or a withdrawn library, as with
left-pad, becomes the program's problem. - The library's licence may restrict how the program can be sold or shared, and unused routines can make the program larger.
Los inconvenientes
- La rutina puede no ajustarse exactamente a la necesidad, y el desarrollador no puede modificarla, por lo que debe encontrar soluciones alternativas a sus limitaciones.
- El programa depende de la librería: un error, una actualización faltante o una librería retirada, como en el caso de
left-pad, se convierte en un problema del programa. - La licencia de la librería puede restringir cómo se puede vender o compartir el programa, y las rutinas no utilizadas pueden hacer que el programa sea más grande.
Worked example: the restaurant robot
- A team writing the software for a restaurant robot uses a program library that includes a routine to find the shortest path between tables. Explain two benefits and one drawback to the team.
- Benefit: the routine is already written and tested, so the team saves time and can trust its results. Benefit: the team need not understand path-finding algorithms themselves and can spend the time on the robot's own features.
- Drawback: the routine may not handle the restaurant's exact needs, moving chairs, one-way aisles, and the team cannot alter it, so they may have to work around its limits.
- Tie each point to this team and this routine. A generic "saves time" earns less than "saves the time of writing and testing a path-finding algorithm".
Ejemplo resuelto: el robot de restaurante
- Un equipo que escribe el software para un robot de restaurante utiliza una librería de programas que incluye una rutina para encontrar la ruta más corta entre mesas. Explica dos beneficios y un inconveniente para el equipo.
- Beneficio: la rutina ya está escrita y probada, así que el equipo ahorra tiempo y puede confiar en sus resultados. Beneficio: el equipo no necesita comprender algoritmos de búsqueda de rutas por sí mismo y puede dedicar el tiempo a las características propias del robot.
- Inconveniente: la rutina puede no manejar las necesidades exactas del restaurante, como mover sillas o pasillos de un solo sentido, y el equipo no puede alterarla, por lo que podría tener que adaptar su funcionamiento a sus limitaciones.
- Vincula cada punto a este equipo y esta rutina específica. Un "ahorra tiempo" genérico obtiene menos puntos que "ahorra el tiempo de escribir y probar un algoritmo de búsqueda de rutas".
Which is a drawback for the robot team of using the path-finding routine from a library? · ¿Cuál es una desventaja para el equipo de robots de usar la rutina de búsqueda de rutas de una biblioteca?
The team cannot change library code, so any mismatch with their needs must be worked around. Not needing to understand the algorithm is a benefit, not a drawback. · El equipo no puede cambiar el código de la biblioteca, por lo que cualquier discrepancia con sus necesidades debe resolverse de otro modo. No necesitar entender el algoritmo es una ventaja, no una desventaja.
Static libraries
- A static library 静态库 is copied into the executable 可执行文件 when the program is compiled and linked.
- The program then stands alone: it needs no other file to run.
- The cost: every program carries its own copy, so executables are larger, and a library update means rebuilding every program that uses it.
Librerías estáticas
- Una librería estática 静态库 se copia dentro del ejecutable 可执行文件 cuando el programa se compila y enlaza.
- El programa queda entonces independiente: no necesita otros archivos para ejecutarse.
- El coste: cada programa lleva su propia copia, por lo que los ejecutables son más grandes, y una actualización de la librería implica recompilar todos los programas que la utilizan.
A static library differs from a dynamic library because it is: · Una biblioteca estática difiere de una biblioteca dinámica porque es:
A static library is built into the executable; a dynamic library is loaded at run time and shared between programs. · Una biblioteca estática se integra en el ejecutable; una biblioteca dinámica se carga en tiempo de ejecución y se comparte entre programas.
Dynamic libraries and DLL files
- A dynamic library 动态库, a Dynamic Link Library (DLL) on Windows or a
.sofile on Linux, stays a separate file and is loaded into memory only when a program calls it, at run time. - Executables are smaller; several running programs share one copy in memory; and a DLL can be updated once, a bug fix or a new device, without recompiling the programs that use it.
- Memory is used only while the library is needed. The cost: the program will not run if the DLL is missing or the wrong version.
Copied in at compile time, or loaded and shared at run time
Librerías dinámicas y archivos DLL
- Una librería dinámica 动态库, una Dynamic Link Library (DLL) en Windows o un archivo
.soen Linux, permanece como un archivo separado y se carga en la memoria solo cuando un programa la llama, en el momento de ejecución. - Los ejecutables son más pequeños; varios programas en ejecución comparten una sola copia en la memoria; y una DLL se puede actualizar una sola vez, para corregir un error o añadir soporte para un nuevo dispositivo, sin recompilar los programas que la llaman.
- La memoria solo se utiliza mientras la librería sea necesaria. El coste: el programa no funcionará si falta la DLL o si tiene la versión incorrecta.

Copiada en el momento de la compilación, o cargada y compartida en el momento de ejecución
A dynamic library can be shared by many programs and updated once for all of them. · Una biblioteca dinámica puede ser compartida por muchos programas y actualizada una sola vez para todos ellos.
Because it is loaded at run time, one shared dynamic library serves many programs; updating it fixes them all without rebuilding each. · Porque se carga en tiempo de ejecución, una única biblioteca dinámica compartida sirve a muchos programas; actualizarla corrige todos ellos sin recompilar cada uno.
Match each trait to a static or a dynamic library. · Asocia cada característica con una biblioteca estática o dinámica.
Static linking copies code into the executable (bigger, self-contained); dynamic linking loads a shared library at run time (smaller, updatable once for all). · La vinculación estática copia el código en el ejecutable (más grande, autocontenido); la vinculación dinámica carga una biblioteca compartida en tiempo de ejecución (más pequeña, actualizable una vez para todos).
Put the events of a program using a DLL routine in order. · Ordena los eventos de un programa que usa una rutina DLL.
Loading happens at run time, on the first call, and one copy serves every program. · La carga ocurre en tiempo de ejecución, en la primera llamada, y una sola copia sirve a cada programa.
Worked example: the benefits of DLL files
- A software developer uses DLL files. Describe the benefits. [4]
- The executable file is smaller, because the library code is not copied into it.
- One copy of the DLL in memory is shared by every running program that uses it, saving memory.
- The DLL can be updated to fix a bug or support a new device without recompiling or reinstalling the programs that call it.
- The library is loaded only when it is needed, so memory is used only while a routine is in use.
Ejemplo resuelto: los beneficios de los archivos DLL
- Un desarrollador de software utiliza archivos DLL. Describe los beneficios. [4]
- El archivo ejecutable es más pequeño, porque el código de la librería no se copia en él.
- Una sola copia de la DLL en la memoria es compartida por todos los programas en ejecución que la utilizan, ahorrando memoria.
- La DLL se puede actualizar para corregir un error o dar soporte a un nuevo dispositivo sin recompilar ni reinstalar los programas que la llaman.
- La librería se carga solo cuando es necesaria, por lo que la memoria se utiliza únicamente mientras se usa una rutina.
Choosing static or dynamic
- The program must run on a machine where nothing else can be installed, an embedded device or a single downloaded file: static, because the executable is self-contained.
- Many programs on one system share the same routines, or the routines change often: dynamic, because one shared copy is smaller and is updated once for all.
- Justify with the trade-off: self-contained but large and rebuilt to update, or small and shared but dependent on the file being present.
Elegir entre estático y dinámico
- El programa debe ejecutarse en una máquina donde no se pueda instalar nada más, un dispositivo embebido o un único archivo descargado: estático, porque el ejecutable es autocontenido.
- Muchos programas en un mismo sistema comparten las mismas rutinas, o las rutinas cambian con frecuencia: dinámico, porque una única copia compartida es más pequeña y se actualiza una sola vez para todos.
- Justifica con el compromiso: autocontenido pero grande y requiere recompilación para actualizar, o pequeño y compartido pero dependiente de la presencia del archivo.
A program that must run from a single file on a device where nothing else can be installed should use a dynamic library. · Un programa que debe ejecutarse desde un único archivo en un dispositivo donde nada más pueda instalarse debería usar una biblioteca dinámica.
A dynamic library is a separate file that must be present. A static library is copied into the executable, which is exactly what a self-contained program needs. · Una biblioteca dinámica es un archivo separado que debe estar presente. Una biblioteca estática se copia en el ejecutable, que es exactamente lo que necesita un programa autocontenido.
Marks that slip away
- A DLL is loaded at run time, not compile time. That single phrase is the mark.
- Benefits are to the developer: written and tested already, no expertise needed, easier maintenance. "The program runs faster" is not on the list.
- A library is code, not a tool. The IDE is the tool; the library is what the program calls.
- A drawback must be a drawback of using the library: cannot alter it, may not fit, dependency. "It costs money" is rarely the point.
Puntos que se pierden fácilmente
- Una DLL se carga en el momento de ejecución, no en el momento de la compilación. Esa frase concreta es clave para obtener el punto.
- Los beneficios son para el desarrollador: ya escritas y probadas, no se necesita experticia, mantenimiento más sencillo. "El programa se ejecuta más rápido" no figura en la lista.
- Una librería es código, no una herramienta. El IDE es la herramienta; la librería es lo que el programa invoca.
- Un inconveniente debe ser algo negativo de usar la librería: no poder alterarla, puede no ajustarse a la necesidad, dependencia. "Cuesta dinero" rara vez es el punto principal.
You've got it
- a program library is pre-written, tested code that a program calls instead of writing its own
- benefits: faster and cheaper development, reliable routines, no expertise needed in that area, easier maintenance, teams work in parallel; drawbacks: may not fit, cannot be altered, dependency
- static: copied into the executable at compile time, self-contained but larger and rebuilt to update
- dynamic (DLL): a separate file loaded at run time, smaller, shared by many programs, updated once for all
Lo has entendido
- una librería de programas es código preescrito y probado que un programa invoca en lugar de escribirlo él mismo
- beneficios: desarrollo más rápido y económico, rutinas confiables, no se necesita experticia en esa área, mantenimiento más sencillo, equipos trabajan en paralelo; inconvenientes: puede no ajustarse, no se puede alterar, dependencia
- estático: se copia en el ejecutable en el momento de la compilación, es autocontenido pero más grande y requiere recompilación para actualizar
- dinámico (DLL): un archivo separado cargado en el momento de ejecución, más pequeño, compartido por muchos programas, se actualiza una sola vez para todos