Library (computing)

An 1888 paper on his Analytical Engine suggested that computer operations could be punched on separate cards from numerical input.

"[1] In 1947 Goldstine and von Neumann speculated that it would be useful to create a "library" of subroutines for their work on the IAS machine, an early computer that was not yet operational at that time.

A filing cabinet of punched tape held the subroutine library for this computer.

[8] JOVIAL has a Communication Pool (COMPOOL), roughly a library of header files.

Another major contributor to the modern library concept came in the form of the subprogram innovation of FORTRAN.

So prior to the introduction of modules in Fortran-90, type checking between FORTRAN[NB 1] subprograms was impossible.

Starting with the popularity of the IBM System/360, libraries containing other types of text elements, e.g., system parameters, also became common.

The first object-oriented programming language, Simula, developed in 1965, supported adding classes to libraries via its compiler.

If a linker (or binder) does not find a symbol, then it fails, but multiple matches may or may not cause failure.

Position-independent code avoids references to absolute addresses and therefore does not require relocation.

A static build may not need any further relocation if virtual memory is used and no address space layout randomization is desired.

In addition to the names and entry points of the code located within, due to inheritance, OOP binding also requires a list of dependencies – since the full definition of a method may be in different places.

The remote object technology was developed in parallel to support multi-tier programs with a user interface application running on a personal computer (PC) using services of a mainframe or minicomputer such as data storage and processing.

Client code explicitly specifies dependencies to external libraries in build configuration files (such as a Maven Pom in Java).

This distributed architecture allows for minimizing installation of the library and support for it on each consuming system and ensuring consistent versioning.

They are used by aspect-oriented programming, some data access frameworks, and for testing to generate dynamic proxy objects.

A .lib file can be either a static library or contain the information needed to build an application that consumes the associated DLL.

Illustration of an application which uses libvorbisfile to play an Ogg Vorbis file
A woman working next to a filing cabinet containing the subroutine library on reels of punched tape for the EDSAC computer.