Kitapxana (esaplaw texnikası)

Esaplaw texnikasında **kitapxana** ‒ bul kompyuter programmasın ámelge asırıw ushın programmalıq támiynattı islep shıǵıw barısında paydalanılatuǵın resurslar jıynaǵı. Ádette, kitapxana kompilyaciyalanǵan funkciyalar hám klasslardan ibarat orınlanıwshı koddan boladı, yamasa derek kodınıń jıynaǵı bolıwı múmkin. Resurs kitapxanası súwretler hám tekst sıyaqlı maǵlıwmatlardı óz ishine alıwı múmkin.

Kitapxananı óz aldına islewshi bir neshe tutınıwshılar (programmalar hám basqa kitapxanalar) paydalanıwı múmkin. Bul ádette tek sol programma tárepinen paydalanılıwı múmkin bolǵan programmada anıqlanǵan resurslardan ayırmashılıǵı bar. Tutınıwshı kitapxana resursın paydalanǵanda, onı ózi ámelge asırıwdıń zárúrligisiz kitapxananıń qunlılıǵına iye boladı. Kitapxanalar programmalıq támiynattı modulli túrde qayta paydalanıwǵa járdem beredi. Kitapxanalar basqa kitapxanalardı paydalanıwı múmkin, bul programmada kitapxanalar ierarxiyasın payda etedi.

Kitapxananı paydalanatuǵın kodtı jazǵanda, baǵdarlamashı tek onı qalay paydalanıwdı biliwi kerek - onıń ishki táreplerin emes. Mısalı, programma quramalı sistema shaqırıwın abstrakciyalaytuǵın kitapxanadan paydalanıwı múmkin, solay etip baǵdarlamashı sistema funkciyasınıń qıyınshılıqların úyreniwge waqıt jumsamay-aq sistema ózgesheligin paydalana aladı.

## Tariyxı
Kompyuter kitapxanası ideyası Charlz Bebbidj tárepinen jaratılǵan birinshi kompyuterlerge barıp taqaladı. 1888-jılǵı onıń Analitikalıq mashinası haqqındaǵı maqalada kompyuter operaciyalarınıń sanlı kirgiziw maǵlıwmatlarınan ayırım kartalarǵa tesip jazılıwı múmkinligi usınılǵan edi. Eger bul operaciyalıq perfokartalar qayta paydalanıw ushın saqlansa, onda "áste-aqırın mashinanıń óziniń kitapxanası payda bolar edi"

1947-jılı Goldstayn hám fon Neyman sol waqıtta ele iske túspegen erte kompyuterlerdiń biri IAS mashinası ústindegi jumısları ushın kishi programmalardıń "kitapxanasın" jaratıwdıń paydalı bolatuǵının boljaǵan. Olar hárbir sım qayta paydalanılatuǵın kompyuter kodın saqlaytuǵın magnitli sım jazbalarınıń fizikalıq kitapxanasın kóz aldına keltirgen

Fon Neymannan ilhamlanǵan Uilks hám onıń komandası EDSACtı qurdı. Tesik lentalı fayl shkafı bul kompyuter ushın kishi programmalar kitapxanasın saqlaǵan. EDSAC ushın programmalar tiykarǵı programmadan hám kishi programmalar kitapxanasınan kóshirilgen kishi programmalar izbe-izliginen turatuǵın edi. 1951-jılı komanda programmalastırıw boyınsha birinshi sabaqlıqtı járiyaladı, "Elektronlı cifrlı kompyuter ushın programmalardı tayarlaw" dep atalǵan bul kitapta kitapxananıń dóretiliwi hám maqseti tolıq bayanlanǵan.

COBOL 1959-jılı "kitapxana sisteması ushın dáslepki múmkinshiliklerdi" óz ishine alǵan, biraq Jan Sammet olardı keyin "jetkiliksiz kitapxana múmkinshilikleri" dep táriyiplegen.

Zamanagóy kitapxana koncepciyasına taǵı bir úlken úles qosqan FORTRAN tiliniń kishi programma innovaciyası boldı. FORTRAN kishi programmaları bir-birinen ǵárezsiz kompilyaciya etiliwi múmkin, biraq kompilyatorda baylanıstırıwshı joq edi. Sonlıqtan, Fortran-90 da moduller engizilgenge shekem, FORTRAN kishi programmaları arasında tip tekseriwi múmkin emes edi.

1960-jıllardıń ortasına kelip, assemblerler ushın kóshiriw hám makro kitapxanaları keń tarqalǵan edi. IBM System/360 dıń keń qollanılıwı menen baslanıp, basqa da tekst elementlerin, mısalı, sistema parametrlerin óz ishine alǵan kitapxanalar da keń tarqaldı.

IBM nıń OS/360 hám onıń izinen kelgen sistemalarında bul bólingen maǵlıwmatlar toplamı dep ataladı.

Birinshi obektke baǵdarlanǵan programmalastırıw tili Simula 1965-jılı islep shıǵılıp, óziniń kompilyatorı arqalı kitapxanalarǵa klasslar qosıwdı qollap-quwatladı.

## Baylanıstırıw
Baylanıstırıw (yamasa biriktiriw) procesi konfiguraciyalanǵan kitapxanalar qatarı izlenip, simvollar (yamasa sіltemeler) dep atalatuǵın sіltemelerdi sheshedi. Eger baylanıstırıwshı (yamasa biriktiriwshi) simvoldı tappasa, onda ol sátsiz boladı, biraq bir neshe sáykeslikler sátsizlikke alıp keliwi de, kelmewi de múmkin.

Statikalıq baylanıstırıw - bul dúziw waqtında baylanıstırıw bolıp, onda kitapxana orınlanıwshı kodı programmaǵa kirgiziledi. Dinamikalıq baylanıstırıw - bul orınlanıw waqtında baylanıstırıw; ol dinamikalıq baylanıs kitapxanasına (DBK) orınlanıw waqtında baylanıstırıwdı qollap-quwatlaytuǵın informaciya menen programmanı dúziwdi óz ishine aladı. Dinamikalıq baylanıstırıw ushın úylesimli DBK faylı orınlanıw waqtında programma ushın qoljetimli bolıwı kerek, al statikalıq baylanıstırıw ushın programma óz aldına jumıs isleydi.

Aqıllı baylanıstırıw, baylanıstırıw processinde paydalanılmaytuǵın kodtı alıp taslaytuǵın qurıw quralı tárepinen orınlanadı. Mısalı, tek pútin sanlar menen arifmetikalıq ámellerdi orınlaytuǵın yamasa hesh qanday arifmetikalıq ámellerdi orınlamaytuǵın programma qalqıwshı útirli kitapxana proceduraların alıp taslay aladı. Bul kishirek programma fayl ólshemine hám kemeytilgen yad paydalanıwına alıp keliwi múmkin.

## Orın almastırıw
Programma yamasa kitapxana modulindegi ayırım sіltemeler barlıq kod hám kitapxanalar aqırǵı statikalıq mánzillerge tayınlanǵanǵa shekem sheshilmeytuǵın salıstırmalı yamasa simvollıq formada saqlanadı. Orın almastırıw (qayta jaylastırıw) - bul usı sіltemelerdi dúzetiw procesi bolıp, ol ya baylanıstırıwshı, ya júklewshi tárepinen orınlanadı. Ulıwma alǵanda, qayta jaylastırıw ayırım kitapxanalardıń ózlerine orınlanıwı múmkin emes, sebebi yadtaǵı mánziller olardı paydalanatuǵın programmaǵa hám olar menen biriktirilgen basqa kitapxanalarǵa baylanıslı túrde ózgeriwi múmkin. Poziciyaǵa ǵárezsiz kod absolyut mánzillerge sіltemelerden qashadı hám sonlıqtan qayta jaylastırıwdı talap etpeydi.

## Kategoriyalar

### Orınlanıwshı
Orınlanıwshı kitapxana derek kodtan mashina kodına yamasa baytkod sıyaqlı aralıq formaǵa aylandırılǵan kodtan ibarat. Baylanıstırıwshı hárbir sіltemeni obekt jaylasqan mánzil menen baylanıstırıw arqalı kitapxana obektlerin paydalanıwǵa múmkinshilik beredi. Mısalı, C tilinde kitapxana funkciyası C tiliniń ádettegi funkciya shaqırıw sintaksisi hám semantikası arqalı shaqırıladı.

Variant - bul operaciyalıq sistema tárepinen júklene almaytuǵın, biraq baylanıstırıwshı tárepinen oqıla alatuǵın formadaǵı kompilyaciyalanǵan kodtı (IBM nomenklaturasında obekt kodı) óz ishine alatuǵın kitapxana.

### Statikalıq
Statikalıq kitapxana - bul qurıw waqtında baylanıstırıwshı (yamasa baylanıstırıwdı orınlaytuǵın qurıw quralı) tárepinen programmaǵa baylanıstırılatuǵın orınlanıwshı kitapxana. Bul process hám nátiyjedegi óz aldına fayl programmanıń statikalıq qurılısı dep ataladı. Eger virtual yad paydalanılsa hám adres keńisligi jaylasıwın randomizaciyalaw talap etilmese, statikalıq qurılıs qosımsha qayta jaylastırıwdı talap etpewi múmkin.

Statikalıq kitapxana geyde Unix sıyaqlı sistemalarda arxiv dep te ataladı.

### Dinamikalıq
Dinamikalıq kitapxana programma orınlanǵanda - ya júklew waqtında, ya orınlanıw waqtında baylanıstırıladı. Dinamikalıq kitapxana statikalıq kitapxanadan keyin qosımsha programmalıq támiynattı jaylastırıw iykemliligin qollap-quwatlaw ushın oylap tabılǵan.

### Derek
Derek kitapxanası derek kodtan turadı; kompilyaciyalanǵan kod emes.

### Bólisilgen
Bólisilgen kitapxana - bul bir neshe kompyuter programmaları yamasa basqa kitapxanalar tárepinen orınlanıw waqtında paydalanılıwǵa arnalǵan orınlanıwshı kodtı óz ishine alatuǵın kitapxana. Bunda kodtıń tek bir versiyası yadta saqlanadı hám ol kodtı paydalanatuǵın barlıq programmalar tárepinen bólisiledi.

### Obekt
Búgingi kúnde ulıwma eski texnologiya bolsa da, obekt kitapxanası obektke baǵdarlanǵan programmalastırıw (OBP) ushın resurslardı usınadı, al tarqatılǵan obekt bolsa alıstan obekt kitapxanası bolıp tabıladı. Mısallar: COM/DCOM, SOM/DSOM, DOE, PDO hám hár qıylı CORBA tiykarındaǵı sistemalar.

Obekt kitapxanası texnologiyası OBP keń tarqalǵan waqıtta rawajlandı, óytkeni OBP orınlanıw waqtındaǵı baylanıstırıwı zamanagóy kitapxanalar bermeytuǵın informaciyanı talap etetuǵını anıq boldı. Ishindegi kodtıń atları hám kiriw noqatlarınan tısqarı, miyras alıw sebepli, OBP baylanıstırıwı sonday-aq ǵárezlilikler dizimin de talap etedi - sebebi metodtıń tolıq anıqlaması hár túrli jerlerde bolıwı múmkin. Sonıń menen bir qatarda, bul bir kitapxananıń basqa kitapxana xızmetlerin talap etiwin kórsetiwden kóbirek nárseni talap etedi. OBP-da kitapxanalardıń ózleri kompilyaciya waqtında belgili bolmawı hám sistemadan sistemaǵa ózgeriwi múmkin.

Alıstan obekt texnologiyası kóp qatlamlı programmalardı qollap-quwatlaw ushın parallel túrde rawajlandırıldı. Bunda paydalanıwshı interfeysi qollanbası jeke kompyuterde (JK) jumıs islep, maǵlıwmatlardı saqlaw hám qayta islew sıyaqlı úlken yamasa orta ólshemli kompyuterlerdiń xızmetlerinen paydalanadı. Mısalı, JK-degi programma alıstan proceduranı shaqırıw (RPC) arqalı orta ólshemli kompyuterge xabarlar jiberip, salıstırmalı úlken maǵlıwmatlar jıynaǵınan salıstırmalı kishi úlgilerdi alıwı múmkin. Buǵan juwap retinde tarqatılǵan obekt texnologiyası rawajlandırıldı.

### Klass
Klass kitapxanası obektlerdi jaratıw ushın paydalanılatuǵın klasslardan ibarat. Mısalı, Java-da klasslar JAR fayllarında saqlanadı hám obektler orınlanıw waqtında klasslardan jaratıladı. Biraq, Smalltalk-te klass kitapxanası ortalıqtıń tolıq jaǵdayın, klasslar hám barlıq instanciyalanǵan obektlerdi óz ishine alatuǵın sistema súwretiniń baslawı bolıp esaplanadı. Kópshilik klass kitapxanaları paket repozitoriyinde saqlanadı (mısalı, Java ushın Maven Central). Klient kodı sırtqı kitapxanalarǵa ǵárezliliklerdi qurılıs konfiguraciya fayllarında anıq kórsetedi (mısalı, Java-da Maven Pom).

### Uzaqtaǵı
Alıstaǵı kitapxana basqa kompyuterde jumıs isleydi hám onıń resurslarına tarmaq arqalı alıstan proceduranı shaqırıw (RPC) járdeminde kiriliwi múmkin. Bul tarqatılǵan arxitektura hárbir paydalanıwshı sistemada kitapxananı ornatıw hám onı qollap-quwatlawdı minimallastırıwǵa hám versiyanıń birdeyligin támiyinlewge múmkinshilik beredi. Áhmiyetli kemshiligi - hárbir kitapxananı shaqırıw jergilikli kitapxanaǵa qaraǵanda anaǵurlım kóbirek qosımsha júkleme talap etedi.

### Orınlanıw waqtı
Orınlanıw waqtı kitapxanası programma ushın ashıq bolǵan orınlanıw waqtı ortalıǵına kiriwdi támiyinleydi – qabıllawshı platformaǵa ılayıqlastırılǵan.

### Til standartı
Kóplegen zamanagóy programmalastırıw tilleri til ortalıǵı ushın tiykarǵı funkcionallıqtı támiyinleytuǵın standart kitapxanasın belgileydi.

### Kod generaciyası
Kod generaciya kitapxanası Java ushın bayt kodın jaratıw yamasa transformaciyalaw ushın joqarı dárejeli API-ge iye. Olar aspekt-baǵdarlı programmalastırıw, ayırım maǵlıwmatlarǵa kiriw freymvorkleri hám testlew ushın dinamikalıq proksi obektlerin jaratıw ushın qollanıladı. Olar maydanǵa kiriwdi toqtatıw ushın da paydalanıladı.

## Fayl atları

### Unix-ke uqsas
Kópshilik házirgi Unix sıyaqlı sistemalarda, kitapxana faylları `/lib, /usr/lib` hám `/usr/local/lib` sıyaqlı kataloglarda saqlanadı. Fayl atı ádette lib penen baslanadı hám statikalıq kitapxana (arxiv) ushın `.a` menen, yamasa bólisilgen obekt (dinamikalıq baylanısqan kitapxana) ushın `.so` menen tamamlanadı. Mısalı, `libfoo.a` hám `libfoo.so`.

Kóbinese, simvollıq baylanıs faylları kitapxananıń versiyaların basqarıw ushın qollanıladı, versiyasız atalǵan baylanıs faylın versiyası bar faylǵa baylanıstırıw arqalı. Mısalı, `libfoo.so.2 foo` kitapxanasınıń 2-versiyası bolıwı múmkin, al `libfoo.so` dep atalǵan baylanıs faylı sol faylǵa versiyadan ǵárezsiz atama beredi, programmalar usıǵan baylanısadı. Baylanıs faylı 3-versiyaǵa (`libfoo.so.3`) silteme beriwi ushın ózgertiliwi múmkin, sonda qollanıwshı programmalar programmanı ózgertpesten 3-versiyanı paydalanadı.

`.la` keńeytpesi bar fayllar - bul libtool arxivleri; sistema tárepinen paydalanılmaydı.

### macOS
macOS sisteması statikalıq kitapxana konvenciyaların BSD-den miyras etip alǵan, kitapxana .a faylında saqlanadı. Ol dinamikalıq kitapxanalar ushın .so yamasa `.dylib` di paydalanadı. Biraq, macOS daǵı kópshilik kitapxanalar kitapxananıń kerekli faylları menen metamaǵlıwmatların qamtıytuǵın "buńkerler" dep atalatuǵın arnawlı kataloglarǵa jaylastırılǵan "freymvorklerden" turadı. Mısalı, `Abc` dep atalǵan freymvork Abc.framework dep atalǵan buńkerde iske asırıladı, bunda `Abc.framework/Abc` ya dinamikalıq baylanısqan kitapxana faylı, ya bolmasa `Abc.framework/Versions/Current/Abc` daǵı dinamikalıq baylanısqan kitapxana faylına simvollıq baylanıs boladı.

### Windows
Kóbinese, Windows dinamikalıq baylanıs kitapxanası (DLL) `.dll` fayl keńeytpesine iye boladı, biraq geyde ulıwma mazmundı kórsetiw ushın basqa keńeytpeler de qollanıladı, mısalı, OLE kitapxanası ushın `.ocx`.

`.lib` faylı ya statikalıq kitapxana bolıwı múmkin, ya bolmasa baylanıslı DLL di paydalanatuǵın qosımshanı qurıw ushın kerek bolǵan informaciyanı óz ishine alıwı múmkin. Sońǵı jaǵdayda, baylanıslı DLL faylı orınlanıw waqtında bar bolıwı kerek.

## Derekler

__BÖLİDİMÖNDEMEW__