Biblioteca (software)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

O bibliotecă , în informatică , este un set de funcții predefinite sau structuri de date concepute pentru a fi legate de un program software printr-o legătură adecvată. Legătura poate fi statică sau dinamică; în cel de-al doilea caz vorbim de biblioteca de legături dinamice („ biblioteca de legături dinamice ”). Creatorul acestei traduceri greșite este celebrul informatician Moce.

Termenul bibliotecă provine dintr-o transpunere lexicală falace a bibliotecii englezești (literalmente, bibliotecă ), dar este acum atât de răspândit în vocabularul profesioniștilor încât este acceptat ca o posibilă traducere.

Scop și utilizare

Pictogramă lupă mgx2.svg Același subiect în detaliu: refolosirea codului .

Scopul bibliotecilor software este de a furniza o colecție de entități de bază gata de utilizare sau reutilizare a codului , evitând ca programatorul să fie nevoit să rescrie de fiecare dată aceleași funcții sau structuri de date și facilitând astfel operațiile de dezvoltare și întreținere. Prin urmare, această caracteristică se încadrează în contextul mai larg al „apelului de cod” din cadrul programelor și aplicațiilor și este prezentă în aproape toate limbile. Principalele avantaje ale utilizării unei astfel de abordări sunt următoarele:

  • Este posibil să se separe logica de programare a unei anumite aplicații de cea necesară pentru rezolvarea problemelor specifice, cum ar fi calculul funcțiilor matematice sau gestionarea colecțiilor;
  • Entitățile definite într-o anumită bibliotecă pot fi refolosite de mai multe aplicații;
  • Puteți modifica biblioteca separat de program, fără a limita potențialul de funcții și structuri de date pe măsură ce acestea devin disponibile în timp.

Transfer

Unele referințe dintr-un program sau modul de bibliotecă sunt stocate într-o formă relativă sau simbolică care nu poate fi rezolvată până când tuturor codurilor și bibliotecilor nu li se atribuie adrese statice finale. Relocarea este procesul de ajustare a acestor referințe și se face de către linker sau încărcător. În general, repoziționarea nu poate fi efectuată pe biblioteci individuale, deoarece adresele din memorie pot varia în funcție de programul care le folosește și de celelalte biblioteci cu care sunt combinate. Codul independent de poziție evită referințele la adrese absolute și, prin urmare, nu necesită repoziționare.

Tipuri

Aproape toate limbajele de programare acceptă conceptul de bibliotecă și multe includ biblioteci standardizate (adesea numite biblioteci standard ale limbajului în cauză): este un set de funcții și / sau structuri de date care vă permit să rezolvați cele mai frecvente probleme de programare. . De exemplu, multe limbaje de programare au o bibliotecă matematică, care vă permite să efectuați exponențierea, calculul logaritmilor și așa mai departe; Funcții I / O; funcții și structuri de date pentru gestionarea colecțiilor de obiecte și altele. Java și Dotnet au o multitudine de biblioteci ( pachete ) pentru cele mai variate funcții, care pot fi importate și activate în mediul de dezvoltare.

Bibliotecile standard, comparativ cu cele non-standard, permit o portabilitate mai ușoară a aplicațiilor care le exploatează; de fapt, fiecare producător de compilatoare trebuie să includă o anumită implementare a bibliotecilor standard; aceasta înseamnă că bibliotecile sunt susținute potențial de toate platformele pentru care există un compilator specific. În schimb, o bibliotecă nestandardizată poate să nu fie acceptată pe un anumit sistem.

Biblioteci statice

Când legătura se face în timp ce creați un fișier executabil sau alt obiect, este cunoscut sub numele de legare statică sau legătură timpurie . În acest caz, legarea se face de obicei de către un linker, dar poate fi făcută și de către compilator. O bibliotecă statică , cunoscută și sub numele de arhivă , este menită să fie legată static. Inițial existau doar biblioteci statice. Conectarea statică trebuie făcută atunci când modulele sunt recompilate.

Toate modulele necesare unui program sunt uneori legate static și copiate în fișierul executabil. Acest proces și fișierul independent rezultat este cunoscut sub numele de construcție de program static . Este posibil ca o construcție statică să nu necesite relocare suplimentară dacă este utilizată memoria virtuală și nu este dorită randomizarea spațiului de adrese [1] .

Biblioteci partajate sau „dinamice”

O bibliotecă partajată sau un obiect partajat este un fișier care trebuie partajat de fișierele executabile și de alte obiecte partajate. Modulele utilizate de un program sunt încărcate din obiecte partajate individuale în memorie la timpul de încărcare sau la timpul de rulare, mai degrabă decât să fie copiate de un linker atunci când creează un singur fișier executabil monolitic pentru program. Un exemplu este fișierele DLL pentru Windows .

Biblioteci de obiecte și clase

Majoritatea furnizorilor de mini-computere și mainframe au început proiecte de combinare a celor două, producând un format de bibliotecă OOP care ar putea fi folosit oriunde. Astfel de sisteme erau cunoscute sub numele de biblioteci de obiecte sau obiecte distribuite, dacă suportau accesul de la distanță (nu toate făceau acest lucru). COM de la Microsoft este un exemplu de astfel de sistem pentru uz local. DCOM, o versiune modificată a COM, acceptă accesul de la distanță.

Bibliotecile de clase sunt echivalentul OOP aproximativ al tipurilor mai vechi de biblioteci de coduri. Acestea conțin clase, care descriu caracteristici și definesc acțiuni (metode) care implică obiecte. Bibliotecile de clase sunt utilizate pentru a crea instanțe sau obiecte cu caracteristicile lor setate la valori specifice. În unele limbaje OOP, cum ar fi Java , distincția este clară, cu clase adesea conținute în fișiere de bibliotecă (cum ar fi formatul de fișier JAR al Java) și obiecte instanțiate care locuiesc doar în memorie (deși pot fi persistate în fișiere separate). În altele, cum ar fi Smalltalk, bibliotecile de clase sunt pur și simplu punctul de plecare pentru o imagine de sistem care include întreaga stare a mediului, clase și toate obiectele instantanee.

Biblioteci la distanță

O altă soluție la problema bibliotecii vine din utilizarea executabilelor complet separate (adesea într-o formă ușoară) și apelarea acestora folosind un apel de procedură la distanță (RPC) printr-o rețea către un alt computer.

Biblioteci de generare de coduri

Bibliotecile de generare a codului sunt API-uri de nivel înalt care pot genera sau transforma cod de octeți pentru Java . Acestea sunt utilizate de programarea orientată pe aspect, unele cadre de acces la date și pentru testarea pentru a genera obiecte proxy dinamice. Ele sunt, de asemenea, utilizate pentru a intercepta accesul la câmpul [2] .

Denumirea fișierelor

Sisteme de tip Unix

Sistemul stochează libfoo.a și libfoo.so fișiere în directoare , cum ar fi /lib , /usr/lib sau /usr/local/lib . Numele de fișiere încep întotdeauna cu lib și se termină cu un sufix de .a (arhivă, bibliotecă statică) sau .so (obiect partajat, bibliotecă legată dinamic). Unele sisteme pot avea mai multe nume pentru biblioteca legată dinamic, cu cele mai multe nume pentru legături simbolice către numele rămas; aceste nume ar putea include versiunea principală a bibliotecii sau numărul versiunii complete; de exemplu, pe unele sisteme libfoo.so.2 ar fi numele de fișier pentru a doua revizuire majoră a libfoo bibliotecii legată dinamic de libfoo . Fișierele .la care se găsesc uneori în directoarele bibliotecii sunt arhive libtool , care nu pot fi utilizate de sistem ca atare.

MacOS

Sistemul moștenește convențiile bibliotecii statice de la BSD, cu biblioteca stocată într-un fișier .a și poate utiliza biblioteci de stil .so legate dinamic (cu sufixul .dylib în schimb). Majoritatea bibliotecilor din macOS, totuși, sunt alcătuite din „cadre”, plasate în directoare speciale numite „pachete” care conțin fișierele și metadatele cerute de bibliotecă. De exemplu, un cadru numit MyFramework ar fi implementat într-un pachet numit MyFramework.framework , MyFramework.framework/MyFramework fiind fișierul de bibliotecă legat dinamic sau o legătură simbolică către fișierul de bibliotecă legat dinamic în MyFramework.framework/Versions/Current/MyFramework .

Microsoft Windows

Bibliotecile de legături dinamice au de obicei sufixul *.DLL , [3] deși alte extensii de nume de fișiere pot identifica biblioteci legate dinamic în scopuri specifice, cum ar fi *.OCX pentru bibliotecile OLE. Revizuirile interfeței sunt fie codate în nume de fișiere, fie abstract, folosind interfețe de obiect COM. În funcție de modul în care sunt compilate, fișierele *.LIB pot fi biblioteci statice sau reprezentări ale bibliotecilor care pot fi *.LIB dinamic, necesare numai în timpul compilării, cunoscute sub numele de "biblioteci de import". Spre deosebire de lumea UNIX, care utilizează diferite extensii de fișiere, atunci când .LIB legătura cu fișierul .LIB din Windows, trebuie să știți mai întâi dacă este o bibliotecă statică normală sau o bibliotecă de import. În acest din urmă caz, un fișier .DLL trebuie să fie prezent la runtime.

Diferența dintre bibliotecă și cadru

Diferență cadru-bibliotecă
Diferență cadru-bibliotecă

O bibliotecă este un set de funcții specializate pentru un anumit scop. Cadrul (de exemplu Bootstrap ) este o infrastructură reală care servește în beneficiul programatorului de a dezvolta o aplicație [4] .

Cadrele și bibliotecile sunt ambele coduri scrise care ajută la îndeplinirea mai puțin detaliată a unor sarcini comune. Un cadru inversează controlul programului: îi spune dezvoltatorului de ce are nevoie, o bibliotecă nu. Programatorul apelează biblioteca unde și când are nevoie de ea [5] .

Exemplu

Sigla JQuery
Sigla JQuery

jQuery este o bibliotecă JavaScript pentru aplicații web , distribuită ca software gratuit , distribuită în condițiile licenței MIT. A fost creată cu scopul de a simplifica selecția, manipularea, gestionarea evenimentelor și animația elementelor DOM în paginile HTML ., precum și simplificând utilizarea funcționalității AJAX , a gestionării evenimentelor și a manipulării CSS [6] .

Notă

  1. ^ Christian Collberg, John H. Hartman, Sridivya Babu, Sharath K. Udupa, SLINKY: Static Linking Reloaded , la usenix.org , Departamentul de Informatică, Universitatea din Arizona , 2003. Accesat la 17 martie 2016 ( arhivat la 23 martie 2016) .
  2. ^ Biblioteca de generare a codului , la sourceforge.net , Source Forge . Accesat la 3 martie 2010 ( arhivat la 12 ianuarie 2010) .
    "Biblioteca de generare de coduri de octeți este un API de nivel înalt pentru a genera și transforma cod de octeți JAVA. Este folosit de AOP, testare, cadre de acces la date pentru a genera obiecte proxy dinamice și a intercepta accesul la câmp. " .
  3. ^ Christine Bresnahan și Richard Blum, LPIC-1 Linux Professional Institute Certification Study Guide: Exam 101-400 și Exam 102-400 , John Wiley & Sons, 27 aprilie 2015, p. 82, ISBN 978-1-119-02118-6 . Adus la 3 septembrie 2015 ( arhivat la 24 septembrie 2015) .
    "Bibliotecile partajate Linux sunt similare cu bibliotecile de legături dinamice (DLL) din Windows. DLL-urile Windows sunt de obicei identificate prin extensii de nume de fișier .dll. " .
  4. ^ (EN) Software Framework vs Library on GeeksforGeeks, 2 ianuarie 2017. Accesat la 15 februarie 2021.
  5. ^ (EN) Jason Gomez, Biblioteci vs. Cadre - Care este diferența? , pe mediu , 20 ianuarie 2020. Adus 15 februarie 2021 .
  6. ^ (EN) JS Foundation- js.foundation, License | Fundația jQuery , la jquery.org . Adus la 15 februarie 2021 .

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh2008001447 · GND (DE) 4121521-7
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT