| Proqramın icrası |
| --- |
| 
Ümumi anlayışlar |
| * Kod
* Tərcümə
	+ Kompilyator
		- Kompilyasiya vaxtı
	+ Kompilyatorun optimallaşdırılması
* Aralıq təmsilçilik (IR)
* İcra
	+ İş vaxtı sistemi
		- İcra müddəti
	+ İcra edilə bilən
	+ İnterpretator
	+ Virtual maşın
 |
| 
Kod növləri |
| * Mənbə kodu
* Obyekt kodu
* Bayt kodu
* Maşın kodu
* Mikrokod
 |
| 
Kompilyasiya strategiyaları |
| * Vaxtından əvvəl kompilyasiya (AOT)
* Tam vaxtında kompilyasiya (JIT)
	+ Tam vaxtında kompilyasiyanı izləmək
* Transkompilyasiya
* Rekompilyasiya
 |
| 
Görkəmli iş vaxtları |
| * Android Runtime (ART)
* BEAM
* Common Language Runtime (CLR) və Mono
* CPython və PyPy
* crt0
* Java virtual machine (JVM)
* LuaJIT
* Objective-C və Swift
* V8 və Node.js
* Zend Engine
 |
| 
Görkəmli tərtibçilər və alətlər silsiləsi |
| * GNU Compiler Collection (GCC)
* LLVM və Clang
 |
| * b
* m
* r
 |

**Mənbə kodu** - hər-hansısa proqramlaşdırma dilində yazılan və insan tərəfindən oxuna bilən kompüter proqramının mətnidir. Mənbə kodu tam olaraq icraçı koda kompilyator və ya interpretator vasitəsilə translyasiya edilir.

Mənbə kodu (Adobe)

Təyinatı
--------

Mənbə kodu ya obyekt kodunu əldə etmək üçün ya da interpretator tərəfindən icra olunur. Dəyişiklik heç vaxt obyekt kodundan icra edilmir. Obyektin növbəti dəyişiklməsi ilə yalnız mənbə kodu üzərindən icra edilir.

Mənbə kodunun digər önəmli təyinatı proqramın təsviridir. Proqramən mətni vasitəsilə onun özünüaparma məntiqini bərpa etmək olar. Mənbə kodunun anlaşılan olması üçün şərhdən istifadə edilir. Həmçinin elə alətlər var ki, mənbə kodu haqqında avtomatik kömək fayllarının qəbuluna imkan verir.

Bundan əlavə mənbə kodunun bir çox digər tətbiqləri var. O həm tədris aləti kimi istifadə edilə bilər; yeni proqramçılara proqramlaşdırmanın texniki metodikasına öyrənmək üçün çox yararlı olacaq. O həmçinin təcrübəli proqramçılar arasında ünsiyyət aləti kimi də istifadə edilə bilər. Çünki daimi şəkildə tək məna daşıyır və müəyyən tapşırıq üzrə hərəkət edir.

Proqramçılar adətən mənbə kodunu bir layihədən o biri layihəyə köçürürlər. Bu modullar halında baş verir və kodun yenidən istifadəsi adlanır.

Mənbə kodu - proqram təminatının başqa platformalara portlaşmdırılması prosesinin ən vacib kompomentidir. Mənbə kodu olmadan hər-hansısa bir proqram təminatını portlaşdırmaq ya çox çətindir ya da ümumiyyətlə mümkün deyil.

Təşkilat
--------

Proqram təminatının müəyyən hissəsinin (modul, komponent) mənbə kodu bir və ya bir neçə fayldan ibarət ola bilər. Proqramın kodu mütləq şəkildə bir proqramlaşdırma dilində yazılmaya da bilər. Məsələn bəzən Si dilində yazılan proqramlara optimizə məsələlərinə görə həm də assambler kodundan əlavələr edilir. Həmçinin bəzən belə variant da olur ki, proqramın müəyyən komponent və hissələri müxtəlif dildə yazılır, sonradan isə kitabxana montajçısı texnologiyası vasitəsilə vahid modula çevrilir.

Mürəkkəb proqram təminatı yığılma zamanı onlarla və ya hətta yüzlərlə mənbə kodu ilə fayllardan istifadə edilir. Bu cür işlərdə yığılmanı sadələşdirmək üçün müxtəlif digər layihələrin fayllarından istifadə edilir. Bu fayllar həmçinin kompilyator parametrlərini də özündə cəmləşdirə bilər. Müxtəlif mühit layihələrəndirmədə müxtəlif növ layihə faylları tətbiq edilir və müəyyən layihələrdə bu fayllar mətn formatında ola bilər. Bu cür mətn faylları proqramçılar tərəfindən universal mətn redaktorları tərəfindən redaktə edilə biləcək fayllar olur. Digər layihələrdə isə əksinə yalnız oxunan fayllar ola bilər ki, onların eyni mühitdə yaradılması və dəyişdirilməsi üçün modula uyğun yazılmış proqrama ehtiyac duyulsun. Layihənin kodları özündə mənbə kodunu cəmləşdirir. Bəzən mənbə kodu sözü altında həm də qaynaq faylları da nəzərə tutulur. Onlar özlərində müxtəlif məlumatlar saxlayır. Məsələn, proqramın yığılmasında yardımçı ola biləcək qrafik şəkil.

Mənbə kodu ilə işin asanlaşdırılması və kod üzərində birgə fəaliyyət üçün proqramçılar tərəfindən versiyaların idarəetmə sistemindən istifadə olunur.

Keyfiyyəti
----------

İnsandan fərqli olaraq kompüter üçün "yaxşı və ya pis yazılmış kod" anlayışı yoxdur. Ancaq kodun nə formada yazılması proqram təminatının müşaiyəti prosesinə təsir edən amildir. Mənbə kodunun keyfiyyəti məsələsini aşağıdakı meyarlara görə müəyyənləşdirmək olar:

* kodun oxunması (həmçinin koda əlavə edilən şərhlər);
* dəstəkdə asanlıq, test, xətaların müəyyənləşdirilməsi və ləğvi, modifikasiya və portlaşdırma;
* qaynaqların qənaətcil istifadəsi: yaddaş, prosessor, disk sahəsi;
* kompilyator tərəfindən üzə çıxarılan qeydlərin olmaması;
* "zibilin" mövcud olmaması, lazımsız şərhlər və sair;
* xətaların adekvat emalı;
* köçürülmə qabiliyyəti — müxtəlif versiya emalçıların istifadəsi imkanları (kompilyator, interpretator, translyator);
* interfeysin çoxdilli edilməsi.

İcra edilməyən mənbə kodu
-------------------------

Azad proqram təminatı üçün kopileft lisenziyaları mənbə kodunun yayımlanmasını tələb edir. Bu lisenziyalar bəzən proqram olmayan işlərdə də istifadə edilir - məsələn, sənədləşmə, şəkil və ya kompüter oyunundan fayl məlumatları üçün.

Bu cür hallarda mövcud işin forması mənbə kodu sayılır. Yalnız PT üçün nəzərdə tutulmayan lisenziyalarda o "şəffaf formatda" olan versiya olaraq adlandırıla bilər. Bu aşağıdakı şəkildə ola bilər:

* itirilmiş məlumat olan fayllar üçün;
* vektor şəkil və ya üçölçülü modelin renderin üçün;
* mətnin şəkli üçün;
* musiqi üçün;
* faylın özün - əgər o göstərilmiş şərtləri qane edirsə və ya sadəcə olaraq daha rahat versiya mövcud deyil.

Həmçinin bax
------------

* Əməliyyat sistemləri
* Proqramlaşdırma dilləri
* Azad proqram təminatı