Derek kodı

**Derek kodı** yamasa **ápiwayı kod**, **programma kodı** *([[Inglis tili|ingl]]. source code., [[Rus tili|рус]]. исходный код)* − bul adam oqıy alatuǵın hár qanday programmalastırıw tilindegi yamasa belgilew tilindegi kompyuter programmasınıń teksti. Baǵdarlamashı programma dúziw ushın kod jazadı. Mine usı kod derek kodı dep ataladı. 

Kompyuter tek mashinalıq kodtı túsinetuǵınlıqtan, kompyuterden paydalanıw ushın programma tekstin awdarıw kerek hám bar texnologiyaǵa baylanıslı hár túrli usıllar menen ámelge asırılıwı múmkin. Derek kodı kompilyator yamasa assembler tikkeley orınlanatuǵın mashinalıq kodqa túrlendiriwi múmkin. Yamasa derek kodın interpretatordıń mashinalıq kodı arqalı derek kod penen belgilengen háreketlerdi orınlaytuǵın awdarmashı arqalı mashinalıq kodqa túrlendiriwsiz qayta islewge boladı. Basqa texnologiya (yaǵnıy bayt kod) derek kodtı jiyi adam oqıy almaytuǵın edi, biraq mashinalıq kod emes aralıq formaǵa túrlendiriw arqalı eki mexanizmdi de biriktiredi hám interpretator arqalı formanı orınlaydı. 

Kóplegen tiller kommentariyalarǵa imkaniyat beredi. Baǵdarlamashı ózi ushın hám kodtı oqıytuǵın basqa baǵdarlamashılar ushın derek kodın hújjetlestiriw ushın kommentariyalar qosa aladı. Kommentariyalardı mashınalıq kodta kórsetiw múmkin emes. Sonlıqtan kompilyator, interpretatorlar h.t.b. usıǵan uqsaslar itibarǵa alınbaydı. 

Kóbinese ámeliy programmalıq támiyattıń *([[Inglis tili|ingl]]. [[:en:Application_software|application software]])* derek kodı kópshilikke járiyalanbaydı yamasa hámmege ashıq bolmaydı, óytkeni islep shıǵarıwshı óziniń Intellektual menshikli múlkin qorǵaǵısı keledi. Biraq eger derek kodı ashıq bolsa (ashıq kodlı), ol programmanı qálegen adam izertlegisi yamasa ózgertkisi keletuǵın paydalanıwshıǵa, baǵdarlamashıǵa yamasa sistemalı administratorǵa paydalı bolıwı múmkin. 

## Anıqlamalar
Richard Stallmannıń 1989-jılǵı tiykarǵı licenziyasında islep shıǵılǵan anıqlaması programmalıq támiynattıń ózgertiletuǵın hár qanday forma retinde derek kodın kópshilik názerine usındı:Shıǵarmanıń «derek kodı» oǵan ózgertiwler kirgiziw ushın jumıstıń qolaylı túrin ańlatadı.Ayırım klassikalıq dereklerde derek kodtı programmalastırıw tilleriniń tekstli forması retinde belgileydi, mısalı:
Derek kod (derek yamasa kod dep ataladı) programmalıq támiynattıń versiyası, óytkeni onı dáslebinde adam ápiwayı tekstte  (yaǵnıy, adam oqıy alatuǵın háriplik-sanlı simvollar) jazǵan (yaǵnıy kompyuterde tergen).
Bul programma awdarması birinshi payda bolǵanda programmalıq támiynat óndirisiniń házirgi túri tekstli programmalastırıw tilleri bolǵanı, usılayınsha derek kod, tekstli kod boldı. Al mashina kodı maqsetli kod bolǵanına juwap berdi. Degen menen, programmalastırıw qubırları aralıq formalardı qosıp baslaǵanda, ayırımları JavaScript sıyaqlı derek yamasa maqsetli bolıwı múmkin tillerde, tekstli kod derek kodı menen sinonim bolıwın toqtattı. 

Solay etip, Stallmannıń anıqlaması JavaScript hám HTML-diń derek maqsetli ekijaqlılıǵın qarastıradı, sonıń menen qatar vizual programmalastırıw tilleri yamasa Machine Learning maǵlıwmatlar jıynaǵı sıyaqlı programmalıq támiynat óndirisiniń keleshektegi múmkin bolǵan  formaların qarastıradı.

Basqa keńirek interpretaciyalar derek kodtı onı shıǵaratuǵın barlıq joqarı dárejeli tiller menen birge mashinalıq kodtı qosıw ushın qarastıradı, bul anıqlama programma awdarmasınıń hárbir adımın derek kodı retinde qarastırıw arqalı derek mashina/tekst ayırmashılıǵın biykarlaydı.Túsinikli bolıw ushın «derek kodı» programmalıq sistemanıń hár qanday tolıq orınlanatuǵın xarakteristikasın bildiredi. Sonlıqtan ol mashinalıq kodtı, júdá joqarı dárejeli tillerdi hám sistemalardıń orınlanatuǵın grafikalıq kórinislerin qamtıytuǵınday túsindiriledi.

 Bul usıl túsiniw hám ózgertiw ushın qolaylı formanı járiyalaw arqalı dizaynerdiń birlesip jumıs islewin talap etpey, sistemalı tallawǵa álleqayda iykemli kózqarasqa imkaniyat beredi. Onı DNK sıyaqlı dizayner kerek emes scenariylerge de qollanıwǵa boladı. Degen menen, tallawdıń (analizlewdiń) bul túri adamnan mashinaǵa kod tallawına qaraǵanda qımbatlıraq mashinadan mashinaǵa kod tallawın qarastırmaydı. 

Saqlanǵan programmalı kompyuterlerge arnalǵan eń dáslepki programmalar kompyuterdiń aldıńǵı paneliniń giltleri arqalı ekilik sistemaǵa engizildi. Bul birinshi áwladtaǵı programmalastırıw tilinde derek kodı menen mashinalıq kod arasında heshqanday ayırmashılıq bolǵan joq. 

IBM óz mashinası menen jumıs islew ushın programmalıq támiynattı dáslepki ret kópshilikke usınǵanda, derek kodı qosımsha haqısız támiyinlendi. Sol waqıtta programmalıq támiynattı jaratıw hám qollaw bahası apparatlıq támiynattıń bahasına qosıldı. Onlaǵan jıllar dawamında IBM 1983-jılǵa shekem programmalıq ónim licenziyaları menen derek kodın tarqatqan.

Dáslepki kompyuter jurnallarınıń kópshiligi derek kodtı kirgiziw programmaları retinde járiyalandı.

## Shólkemlestiriw
Programmanı quraytuǵın derek kodı ádette kompyuterdiń fayllıq sistemasında saqlanǵan bir yamasa bir neshe tekstli fayllarda boladı. Úlkenirek kodlı baza derek teregi retinde belgili kataloglar dáslebinde shólkemlestiriliwi múmkin. Derek kodı saqlanatuǵın proceduralar ushın ádettegidey maǵlıwmatlar bazasında emes basqa jerde saqlanıwı múmkin.

Programmanıń derek kodın bir neshe programmalastırıw tilinde jazıwǵa boladı. Mısalı, tiykarınan C tilinde jazılǵan programmanı optimallastırıw maqsetinde assembler tilinde jazılǵan bóleklerdiń bolıwı ádettegidey emes.

Ayırım tiller bir faylda bir neshe tilge ruqsat beredi. Mısalı C faylına ornatılǵan qurastırıw blogı.

Kitapxananı baylanıstırıw komponentlerdi bólek jazıwǵa hám kompilyaciyalawǵa, geyde bir neshe tilde, keyinirek programmaǵa biriktiriwge imkaniyat beredi. Mısalı, Java járdemi menen klaslar orınlaw waqtında awdarmashı arqalı bir-biri menen baylanıstırılǵan bólek fayllarǵa jıynaladı. Microsoft Windows DLL fayllarınan jaratılǵan baǵdarlamalardı qollaydı; olardıń hárqaysısı DLL-ge kompilyaciyalanatuǵın hár qanday tilde jazılıwı múmkin. Sol sıyaqlı, Microsoft .NET .NET jıynaqlarınan jaratılǵan programmalardı qollaydı; olardıń hárqaysısı hár qanday .NET tilinde jazılıwı múmkin.

Programmanıń kiriw noqatı interpretator bolıwı múmkin. Interpretator bir neshe qosımshalar ushın paydalanıwǵa arnawlı  qollanbaǵa, arnawlı tilge yamasa ulıwma maqsetli tilge arnalǵan bolıwı múmkin.

Ádette, derek kodı versiyalardı basqarıw sistemasında saqlanadı.

Isleytuǵın programmalıq támiynattı shıǵarıw ushın quramalı kodlı baza jiyi kóplegen derek kodı faylların dúziwdi (kompilyaciya etiwdi, jıynawdı, ... h.t.b) talap etedi − júzlegen, mıńlaǵan yamasa onnan da kóp. Makefile sıyaqlı dúziw kórsetpeleri kóbinese birdey versiyanı basqarıw repozitoriyindegi derek kodı menen basqarıladı. Bul dúziw kórsetpesi faylları derek kodı faylları arasındaǵı qarım-qatnaslardı sáwlelendiredi hám olardıń bólek qurastırılıp, keyin birge biriktiriliwi tuwralı informaciyanı qamtıydı. 

## Maqsetler
Derek kodı eń aldı menen kompyuter procesine engiziledi, ol sońında kompyuterdiń háreketin basqarıwǵa ákeledi. Basqasha aytqanda, ol kompilyatorǵa, interpretatorǵa yamasa t.b.

Ol sonday-aq adamlar arasında algoritmlerge baylasıw ushın qollanıladı — mısalı, onlayn yamasa kitaplardaǵı kod úzindileri.

Kompyuter baǵdarlamashılarına programmalastırıw usılları tuwralı biliw ushın bar derek kodın qarap shıǵıw paydalı bolıwı múmkin. Baǵdarlamashılar arasında derek kodın bólisiw olardıń programmalastırıw kónlikpeleriniń jetilisiwine túrtki bolatuǵın faktor retinde jiyi aytıladı. Ayırım adamlar derek kodın ekspressiv kórkem ortalıq dep esaplaydı.

Programmalıq támiynattı basqa kompyuter platformaǵa jetkiziw ádette derek kodsız júdá qıyın hám qımbat. Derek kodsız jetkiziw imkaniyatınıń biri ekilik awdarma bolıp tabıladı. Ekinshisi — derek platformanı emulyaciyalaw, biraq bul kóbinese esaplaw ushın júdá qımbat; ásten alǵa ilgerleydi.

Dekompilyaciya — bul mashina kodın anaǵurlım qolaylı formaǵa − kóbinese qurastırıw kodına yamasa joqarı dárejeli tildiń derek kodına túrlendiriw procesi. 

Programmalıq támiynattı qayta paydalanıw imkaniyatı programmalıq támiynat kitapxanası arqalı basqa programmalıq sistemada bar programmalıq támiynattı paydalanıw tájiriybesin sáwlelendiredi. Ayırımlar derek kodtı bir programmalıq támiynattan ekinshisine beyimlestiriwdi qosıw ushın qayta paydalanıwdı qarastırıwı múmkin.

## Sapası
Programmanıń jazılıw usılı onıń támiyinlewshileri ushın zárúr aqıbetlerge ákeliwi múmkin. Oqıwǵa qábiletlilikke hám ayırım tilge sáykes konvenciyalarǵa ayrıqsha itibar qaratatuǵın kodlaw konvenciyaları qayta islewdi hám jańalawdı qamtıytuǵın programmalıq támiynattıń derek kodın qollawǵa baǵdarlanǵan. Programmanıń orınlanıw tezligi yamasa bir neshe arxitektura ushın programmanı kompilyaciyalaw imkaniyatı sıyaqlı basqa ústemlikler kóbinese kodtıń oqılıw imkaniyatın zárúr emes dep qarastıradı, óytkeni kod sapası ádette onıń maqsetine baylanıslı. 

## Derekler

### Ádebiyatlar

* (VEW04) "Using a Decompiler for Real-World Source Recovery", M. Van Emmerik and T. Waddington, the *Working Conference on Reverse Engineering*, Delft, Netherlands, 9–12 November 2004. Extended version of the paper.

## Sırtqı siltemeler

* Source Code Definition by The Linux Information Project (LINFO)
* 
* Same program written in multiple languages