Program libraries · Bibliotecas de programas
| English | Português |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | biblioteca de programas |
| subroutines/ˈsʌbruːtiːnz/ | subrotinas |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | rotinas de biblioteca |
| static library/ˈstætɪk ˈlaɪbrəri/ | biblioteca estática |
| executable/ɪɡˈzekjʊtəbl/ | executável |
| 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.
Onze linhas que quebraram a internet
- Em março de 2016, um programador excluiu uma pequena biblioteca chamada
left-padde um repositório público. Ela tinha onze linhas: adicionava espaços à frente de uma string. - Em poucas horas, as compilações falharam em empresas ao redor do mundo. Milhares de programas nunca escreveram essas onze linhas. Todos as haviam emprestado, e o empréstimo era invisível até o momento em que parou de funcionar.
- É assim que o software moderno é feito. Uma biblioteca de programas 程序库 é esse empréstimo, feito propositalmente, e esta lição mostra o que ela oferece a um desenvolvedor, qual o custo e as duas formas pelas quais ela pode ser vinculada a um 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
O que é uma biblioteca de programas
- Uma biblioteca de programas é uma coleção de rotinas pré-escritas e testadas, subrotinas 子程序, classes e módulos, que um programa pode usar em vez de escrever as suas próprias.
- Uma biblioteca matemática, uma biblioteca gráfica, uma biblioteca de rede, uma biblioteca de busca de caminho, uma biblioteca de compactação: cada uma resolve uma área de problemas uma vez, para todo programa que precise dela.
- Software em desenvolvimento normalmente é construído a partir dessas rotinas de biblioteca 库例程 mais o código específico do novo programa.

O novo código é a parte pequena; o código emprestado é a parte grande
Computing concept lab · Laboratório de conceitos de computação
Classify concrete examples by the computing idea they demonstrate. · Classifique exemplos concretos pelo conceito de computação que eles demonstram.
A program library is: · Uma biblioteca de programas é:
Libraries provide ready-made, tested code (maths, graphics, network…) that a program can call instead of writing its own. · Bibliotecas fornecem código pronto e testado (matemática, gráficos, rede…) que um programa pode chamar em vez de escrever o seu próprio.
A collection of ready-made, reusable, tested code is a program ______. · Uma coleção de código pronto, reutilizável e testado é uma ______ de programa.
Libraries save time and reduce bugs. · Bibliotecas economizam tempo e reduzem bugs.
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.
Os benefícios para o desenvolvedor
- As rotinas já estão escritas e testadas, então o desenvolvimento é mais rápido e barato.
- Elas são confiáveis: usadas por muitos programas, portanto largely error-free.
- O desenvolvedor não precisa de expertise nessa área, gráficos, criptografia, busca de caminho, e pode gastar o tempo nas características próprias do programa.
- O programa é mais fácil de manter, porque o código comum vive em um só lugar, e uma equipe pode trabalhar em paralelo, cada membro usando as mesmas rotinas.
A benefit of using a library is that the code is: · Um benefício de usar uma biblioteca é que o código é:
Library code is tested, widely used and standardised — reusing it saves time and improves reliability. · Código de biblioteca é testado, amplamente utilizado e padronizado — reutilizá-lo economiza tempo e melhora a confiabilidade.
Which are benefits to a developer of building software from library routines? Select all · todos that apply. · Quais são os benefícios para um desenvolvedor de construir software a partir de rotinas de biblioteca? Selecione todos os que se aplicam.
Tested routines, no expertise needed, easier maintenance. The program's own code still has to be tested. · Rotinas testadas, sem necessidade de expertise, manutenção mais fácil. O próprio código do programa ainda precisa ser testado.
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.
As desvantagens
- A rotina pode não atender exatamente à necessidade, e o desenvolvedor não pode alterá-la, então ele deve contornar suas limitações.
- O programa depende da biblioteca: um bug, uma atualização ausente ou uma biblioteca retirada, como com
left-pad, torna-se o problema do programa. - A licença da biblioteca pode restringir como o programa pode ser vendido ou compartilhado, e rotinas não usadas podem tornar o programa maior.
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".
Exemplo resolvido: o robô de restaurante
- Uma equipe escrevendo o software para um robô de restaurante usa uma biblioteca de programas que inclui uma rotina para encontrar o menor caminho entre mesas. Explique dois benefícios e uma desvantagem para a equipe.
- Benefício: a rotina já está escrita e testada, então a equipe economiza tempo e pode confiar em seus resultados. Benefício: a equipe não precisa entender algoritmos de busca de caminho por si mesma e pode gastar o tempo nas características próprias do robô.
- Desvantagem: a rotina pode não lidar com as necessidades exatas do restaurante, mover cadeiras, corredores unidirecionais, e a equipe não pode alterá-la, então elas podem ter que contornar suas limitações.
- Vincule cada ponto a esta equipe e esta rotina. Um "economiza tempo" genérico ganha menos pontos que "economiza o tempo de escrever e testar um algoritmo de busca de caminho".
Which is a drawback for the robot team of using the path-finding routine from a library? · Qual é uma desvantagem para a equipe de robôs de usar a rotina de busca de caminho de uma 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. · A equipe não pode alterar o código da biblioteca, então qualquer incompatibilidade com suas necessidades deve ser contornada. Não precisar entender o algoritmo é um benefício, não uma desvantagem.
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.
Bibliotecas estáticas
- Uma biblioteca estática 静态库 é copiada para o executável 可执行文件 quando o programa é compilado e ligado.
- O programa então fica sozinho: não precisa de nenhum outro arquivo para rodar.
- O custo: cada programa carrega sua própria cópia, então executáveis são maiores, e uma atualização da biblioteca significa recompilar todos os programas que a usam.
A static library differs from a dynamic library because it is: · Uma biblioteca estática difere de uma biblioteca dinâmica porque ela é:
A static library is built into the executable; a dynamic library is loaded at run time and shared between programs. · Uma biblioteca estática é construída no executável; uma biblioteca dinâmica é carregada no tempo de execução e compartilhada 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
Bibliotecas dinâmicas e arquivos DLL
- Uma biblioteca dinâmica 动态库, uma Dynamic Link Library (DLL) no Windows ou um arquivo
.sono Linux, permanece como um arquivo separado e é carregada na memória apenas quando um programa a chama, no tempo de execução. - Executáveis são menores; vários programas em execução compartilham uma cópia na memória; e uma DLL pode ser atualizada uma vez, correção de bug ou novo dispositivo, sem recompilar os programas que a usam.
- A memória é usada apenas enquanto a biblioteca for necessária. O custo: o programa não funcionará se a DLL estiver ausente ou for a versão errada.

Copiada no tempo de compilação, ou carregada e compartilhada no tempo de execução
A dynamic library can be shared by many programs and updated once for all of them. · Uma biblioteca dinâmica pode ser compartilhada por muitos programas e atualizada uma vez para todos.
Because it is loaded at run time, one shared dynamic library serves many programs; updating it fixes them all without rebuilding each. · Por ser carregada no tempo de execução, uma única biblioteca dinâmica compartilhada serve a muitos programas; atualizá-la corrige-os todos sem recompilar cada um.
Match each trait to a static or a dynamic library. · Combine cada característica com uma biblioteca estática ou 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). · Linkagem estática copia código para o executável (maior, autocontido); linkagem dinâmica carrega uma biblioteca compartilhada no tempo de execução (menor, atualizável uma vez para todos).
Put the events of a program using a DLL routine in order. · Organize os eventos de um programa usando uma rotina DLL em ordem.
Loading happens at run time, on the first call, and one copy serves every program. · O carregamento ocorre no tempo de execução, na primeira chamada, e uma única cópia serve a todos os programas.
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.
Exemplo resolvido: os benefícios dos arquivos DLL
- Um desenvolvedor de software usa arquivos DLL. Descreva os benefícios. [4]
- O arquivo executável é menor, porque o código da biblioteca não é copiado para dentro dele.
- Uma única cópia da DLL na memória é compartilhada por todo programa em execução que a usa, economizando memória.
- A DLL pode ser atualizada para corrigir um bug ou suportar um novo dispositivo sem recompilar ou reinstalar os programas que a chamam.
- A biblioteca é carregada apenas quando é necessária, então a memória é usada apenas enquanto uma rotina está em uso.
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.
Escolhendo entre estático e dinâmico
- O programa deve rodar em uma máquina onde nada mais pode ser instalado, um dispositivo embutido ou um único arquivo baixado: estático, porque o executável é autônomo.
- Muitos programas em um sistema compartilham as mesmas rotinas, ou as rotinas mudam frequentemente: dinâmico, porque uma única cópia compartilhada é menor e é atualizada uma vez para todos.
- Justifique com o trade-off: autocontido, mas grande e reconstruído para atualização, ou pequeno e compartilhado, mas dependente do arquivo estar presente.
A program that must run from a single file on a device where nothing else can be installed should use a dynamic library. · Um programa que deve executar a partir de um único arquivo em um dispositivo onde nada mais pode ser instalado deve usar uma 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. · Uma biblioteca dinâmica é um arquivo separado que deve estar presente. Uma biblioteca estática é copiada para o executável, que é exatamente o que um programa autocontido precisa.
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.
Marcas que escapam
- Uma DLL é carregada em tempo de execução, não de compilação. Essa única frase é a marca da resposta.
- Os benefícios são para o desenvolvedor: já escrito e testado, sem necessidade de especialização, manutenção mais fácil. "O programa roda mais rápido" não está na lista.
- Uma biblioteca é código, não uma ferramenta. A IDE é a ferramenta; a biblioteca é o que o programa chama.
- Um desvantagem deve ser um inconveniente de usar a biblioteca: não pode alterá-la, pode não se encaixar, dependência. "Custa dinheiro" raramente é o ponto 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
Entendeu?
- uma biblioteca de programas é código pré-escrito e testado que um programa invoca em vez de escrever seu próprio
- benefícios: desenvolvimento mais rápido e barato, rotinas confiáveis, sem necessidade de expertise naquela área, manutenção mais fácil, equipes trabalham em paralelo; desvantagens: pode não se encaixar, não pode ser alterada, dependência
- estático: copiado para o executável em tempo de compilação, autocontido, mas maior e reconstruído para atualizar
- dinâmico (DLL): um arquivo separado carregado em tempo de execução, menor, compartilhado por muitos programas, atualizado uma vez para todos