Biblioteca (programari)

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca

Una biblioteca, a la informàtica , és un conjunt de predefinits funcions o estructures de dades dissenyades per ser vinculat a un programari de programa a través d'un enllaç corresponent. L’ enllaç pot ser estàtic o dinàmic; en el segon cas, parlem de biblioteca d’enllaços dinàmics (" dynamic link library "). L’encunyador d’aquesta incorrecta traducció és el famós informàtic Moce.

El terme biblioteca prové d’una transposició lèxica fallera de la biblioteca anglesa (literalment, biblioteca ), però ara està tan estesa en el vocabulari dels professionals que s’accepta com una possible traducció.

Finalitat i ús

Icona de la lupa mgx2.svg El mateix tema en detall: reutilització del codi .

L’objectiu de les biblioteques de programari és proporcionar una col·lecció d’entitats bàsiques preparades per utilitzar-les o reutilitzar-les , evitant que el programador hagi de reescriure cada vegada les mateixes funcions o estructures de dades i facilitant així les operacions de desenvolupament i manteniment. Per tant, aquesta característica s'adapta al context més ampli de la "trucada de codi" dins de programes i aplicacions i està present en gairebé tots els idiomes. Els principals avantatges d’utilitzar aquest enfocament són els següents:

  • És possible separar la lògica de programació d'una determinada aplicació de la necessària per resoldre problemes específics, com ara el càlcul de funcions matemàtiques o la gestió de col·leccions;
  • Les entitats definides en una biblioteca determinada poden ser reutilitzades per diverses aplicacions;
  • Podeu modificar la biblioteca per separat del programa, sense límits a l’ampliació potencial de funcions i estructures de dades a mesura que estiguin disponibles al llarg del temps.

Transferència

Algunes referències d'un programa o mòdul de biblioteca s'emmagatzemen en una forma relativa o simbòlica que no es pot resoldre fins que a tots els codis i biblioteques se'ls assignin adreces estàtiques finals. La deslocalització és el procés d’ajust d’aquestes referències que realitza l’enllaçador o el carregador. En general, el reposicionament no es pot realitzar en biblioteques individuals perquè les adreces de la memòria poden variar en funció del programa que les utilitzi i de la resta de biblioteques amb les quals es combinin. El codi independent de la posició evita referències a adreces absolutes i, per tant, no requereix reposicionament.

Tipus

Gairebé tots els llenguatges de programació admeten el concepte de biblioteca i molts inclouen biblioteques estandarditzades (sovint anomenades biblioteques estàndard del llenguatge en qüestió): és un conjunt de funcions i / o estructures de dades que us permeten resoldre els problemes de programació més habituals. . Per exemple, molts llenguatges de programació tenen una biblioteca matemàtica, que permet realitzar exponències, el càlcul de logaritmes, etc. Funcions d'E / S; funcions i estructures de dades per gestionar col·leccions d'objectes i altres. Java i Dotnet tenen una gran quantitat de biblioteques ( paquets ) per a les funcions més variades, que es poden importar i activar a l'entorn de desenvolupament.

Les biblioteques estàndard, en comparació amb les no estàndard, permeten una portabilitat més fàcil de les aplicacions que les exploten; de fet, cal que tots els productors de compiladors incloguin alguna implementació de les biblioteques estàndard; això vol dir que les biblioteques són potencialment compatibles amb totes les plataformes per a les quals existeix un compilador específic. Per contra, és possible que una biblioteca no estàndard no sigui compatible amb un sistema determinat.

Biblioteques estàtiques

Quan es realitza l'enllaç mentre es crea un fitxer executable o d'un altre objecte, es coneix com a enllaç estàtic o enllaç primerenc . En aquest cas, l'enllaç el fa generalment un enllaçador, però també el pot fer el compilador. Una biblioteca estàtica , també coneguda com a arxiu , està destinada a estar enllaçada estàticament. Originalment només hi havia biblioteques estàtiques. L’enllaç estàtic s’ha de fer quan es recompilen els mòduls.

De vegades, tots els mòduls requerits per un programa s’enllacen estàticament i es copien al fitxer executable. Aquest procés i el fitxer autònom resultant es coneix com a construcció de programa estàtic . És possible que una construcció estàtica no requereixi més reubicacions si s'utilitza memòria virtual i no es desitja l' atzar d'espai d'adreces [1] .

Biblioteques compartides o "dinàmiques"

Una biblioteca compartida o un objecte compartit és un fitxer que ha de ser compartit per fitxers executables i altres objectes compartits. Els mòduls utilitzats per un programa es carreguen des d’objectes compartits individuals a la memòria en temps de càrrega o en temps d’execució, en lloc de ser copiats per un enllaçador quan crea un únic fitxer executable monolític per al programa. Un exemple són els fitxers DLL de Windows .

Biblioteques d'objectes i classes

La majoria de proveïdors de minicomputadors i mainframe han iniciat projectes per combinar-los, produint un format de biblioteca OOP que es podria utilitzar a qualsevol lloc. Aquests sistemes es coneixien com a biblioteques d'objectes o objectes distribuïts, si donaven suport a l'accés remot (no tots ho feien). COM de Microsoft és un exemple d’aquest sistema per a ús local. DCOM, una versió modificada de COM, admet l'accés remot.

Les biblioteques de classes són l'equivalent OOP aproximat dels tipus antics de biblioteques de codis. Contenen classes, que descriuen característiques i defineixen accions (mètodes) que impliquen objectes. Les biblioteques de classes s’utilitzen per crear instàncies o objectes amb les seves característiques establertes en valors específics. En alguns llenguatges OOP, com ara Java , la distinció és clara, amb classes sovint contingudes en fitxers de biblioteca (com el format de fitxer JAR de Java) i objectes instanciats que només resideixen a la memòria (encara que potencialment poden persistir en fitxers separats). En d’altres, com Smalltalk, les biblioteques de classes són simplement el punt de partida d’una imatge del sistema que inclou tot l’estat de l’entorn, les classes i tots els objectes instantanis.

Biblioteques remotes

Una altra solució al problema de la biblioteca prové d'utilitzar executables completament separats (sovint en forma lleugera) i trucar-los mitjançant una trucada de procediment remot (RPC) a través d'una xarxa a un altre equip.

Biblioteques de generació de codis

Les biblioteques de generació de codi són API d’alt nivell que poden generar o transformar codi de bytes per a Java . S’utilitzen en programacions orientades a aspectes, en alguns marcs d’accés a dades i en proves per generar objectes proxy dinàmics. També s'utilitzen per interceptar l'accés al camp [2] .

Nom de fitxers

Sistemes tipus Unix

El sistema emmagatzema fitxers libfoo.a i libfoo.so en directoris com /lib , /usr/lib o /usr/local/lib . Els noms de fitxer sempre comencen per lib i acaben amb un sufix de .a (arxiu, biblioteca estàtica) o .so (objecte compartit, biblioteca enllaçada dinàmicament). Alguns sistemes poden tenir diversos noms per a la biblioteca enllaçada dinàmicament, amb la majoria de noms per a enllaços simbòlics amb el nom restant; aquests noms poden incloure la versió principal de la biblioteca o el número de versió complet; per exemple, en alguns sistemes, libfoo.so.2 seria el nom de fitxer de la segona revisió important de la libfoo biblioteca lligada dinàmicament a libfoo . Els fitxers .la que de vegades es troben als directoris de la biblioteca són arxius libtool , que el sistema no pot utilitzar com a tals.

MacOS

El sistema hereta les convencions de la biblioteca estàtica de BSD, amb la biblioteca emmagatzemada en un fitxer .a , i pot utilitzar biblioteques d’estil .so enllaçades dinàmicament (amb el sufix .dylib ). La majoria de les biblioteques de macOS, però, estan formades per "frameworks", situats dins de directoris especials anomenats "bundles" que contenen els fitxers i les metadades que requereix la biblioteca. Per exemple, MyFramework un marc anomenat MyFramework en un paquet anomenat MyFramework.framework , MyFramework.framework/MyFramework el fitxer de biblioteca vinculat dinàmicament o un enllaç simbòlic al fitxer de biblioteca vinculat dinàmicament a MyFramework.framework/Versions/Current/MyFramework .

Microsoft Windows

Les biblioteques d'enllaços dinàmics solen tenir el sufix *.DLL , [3] encara que altres extensions de noms de fitxer poden identificar biblioteques enllaçades dinàmicament per a propòsits específics, com ara *.OCX per a biblioteques OLE. Les revisions de la interfície es codifiquen en noms de fitxer o són abstractes mitjançant interfícies d'objectes COM. Depenent de com es *.LIB fitxers *.LIB poden ser biblioteques estàtiques o representacions de biblioteques enllaçables dinàmicament que només siguin necessàries durant la compilació, conegudes com a "biblioteques d'importació". A diferència del món UNIX, que utilitza diferents extensions de fitxer, en enllaçar amb el fitxer .LIB al Windows primer heu de saber si es tracta d’una biblioteca estàtica normal o d’una biblioteca d’importació. En aquest darrer cas, un fitxer .DLL ha d’estar present en temps d’execució.

Diferència entre biblioteca i marc

Diferència marc-biblioteca
Diferència marc-biblioteca

Una biblioteca és un conjunt de funcions especialitzades per a un propòsit particular. El framework (per exemple Bootstrap ) és una infraestructura real que serveix per beneficiar el programador per desenvolupar una aplicació [4] .

Els marcs i les biblioteques són un codi escrit que ajuda a realitzar algunes tasques habituals amb menys detall. Un framework inverteix el control del programa: indica al desenvolupador el que necessita, una biblioteca no. El programador truca a la biblioteca on i quan la necessita [5] .

Exemple

Logotip de JQuery
Logotip de JQuery

jQuery és una biblioteca JavaScript per a aplicacions web , distribuïda com a programari lliure , distribuïda sota els termes de la llicència MIT. Va ser creada amb l'objectiu de simplificar la selecció, la manipulació, la gestió d'esdeveniments i l'animació d'elements DOM a les pàgines HTML . com simplificar l'ús de la funcionalitat AJAX , el tractament d'esdeveniments i la manipulació CSS [6] .

Nota

  1. ^ Christian Collberg, John H. Hartman, Sridivya Babu, Sharath K. Udupa, SLINKY: Static Linking Reloaded , a usenix.org , Departament d'Informàtica, Universitat d'Arizona , 2003. Consultat el 17 de març de 2016 ( arxivat el 23 de març de 2016) .
  2. ^ Biblioteca de generació de codi , a sourceforge.net , Source Forge . Consultat el 3 de març de 2010 ( arxivat el 12 de gener de 2010) .
    "La biblioteca de generació de codi de bytes és una API d'alt nivell per generar i transformar codi de bytes JAVA. L’utilitzen AOP, proves, marcs d’accés a dades per generar objectes proxy dinàmics i interceptar accés al camp. " .
  3. Christine Bresnahan i Richard Blum, LPIC-1 Linux Professional Institute Certification Study Guide: Exam 101-400 and Exam 102-400 , John Wiley & Sons, 27 d'abril de 2015, p. 82, ISBN 978-1-119-02118-6 . Consultat el 3 de setembre de 2015 ( arxivat el 24 de setembre de 2015) .
    "Les biblioteques compartides de Linux són similars a les biblioteques d'enllaços dinàmics (DLL) de Windows. Les DLL de Windows solen identificar-se amb extensions de nom de fitxer .dll. " .
  4. ^ (EN) Software Framework vs Library on GeeksforGeeks, 2 de gener de 2017. Obtingut el 15 de febrer de 2021.
  5. ^ (EN) Jason Gomez, Biblioteques vs. Frameworks: Quina és la diferència? , a mitjà , 20 de gener de 2020. Obtingut el 15 de febrer de 2021 .
  6. ^ (EN) JS Foundation- js.foundation, Llicència | Fundació jQuery , a jquery.org . Recuperat el 15 de febrer de 2021 .

Articles relacionats

Altres projectes

Enllaços externs

Control de l'autoritat LCCN (EN) sh2008001447 · GND (DE) 4121521-7
Informàtica Portal de TI : accediu a les entrades de Viquipèdia relacionades amb TI