JET Academy

Runtime nədir?

Runtime və ya icra vaxtı, kompüter elmində və proqramlaşdırmada çoxşaxəli və əhəmiyyətli bir anlayışdır. Bu termin bir neçə fərqli, lakin bir-biri ilə sıx bağlı mənaları ifadə edir və müasir proqram təminatının işləməsini anlamaq üçün fundamental əhəmiyyət kəsb edir.

Birinci Əsas Məna: İcra Müddəti

Ən sadə və geniş yayılmış mənada, runtime proqramın işə salınması anından onun işini tamamilə başa vurub bağlanmasına qədər keçən zaman intervalıdır. Bu dövr proqramın həyat tsiklinin ən aktiv fazasıdır. Proqram əməliyyat sistemi tərəfindən diskdən və ya digər yaddaş mənbəyindən oxunub operativ yaddaşa yüklənir, prosessor ona hesablama resursları ayırır və proqram öz təlimatlarını ardıcıl olaraq icra etməyə başlayır. Bu zaman ərzində proqram məlumatları emal edir, istifadəçi ilə qarşılıqlı əlaqədə olur, şəbəkə əlaqələri qurur, fayl sistemləri ilə işləyir və digər sistem resurslarından istifadə edir. Runtime sona çatdıqda isə proqram öz işini tamamlayır, istifadə etdiyi resursları azad edir və əməliyyat sisteminin idarəçiliyindən çıxır.

İkinci Əsas Məna: Runtime Mühiti və İnfrastrukturu

Daha texniki mənada, runtime proqramlaşdırma dilinin və ya platformasının işləməsi üçün zəruri olan əlavə proqram təminatı, kitabxanalar, sistem komponentləri və infrastruktur elementlərinin məcmusudur. Bu mühit proqramların icra olunması üçün lazımi əsas təmin edir və bir çox vacib xidmətləri yerinə yetirir.

Məsələn, Java Runtime Environment (JRE) Java proqramlarının işləməsi üçün mütləq zəruri olan Java Virtual Machine (JVM), standart kitabxanalar və digər sistem komponentlərini ehtiva edir. JVM bayt-kodunu maşın dilinə tərcümə edir, yaddaş idarəçiliyini həyata keçirir, zibil yığma (garbage collection) mexanizmini idarə edir və təhlükəsizlik tədbirlərini tətbiq edir.

Eynilə, Microsoft .NET Framework və ya .NET Core platformaları öz runtime mühitlərinə malikdir - Common Language Runtime (CLR). CLR müxtəlif .NET dillərində (C#, VB.NET, F# və s.) yazılmış proqramları icra edir, tip təhlükəsizliyini təmin edir və cross-language əməliyyatlarını mümkün edir.

Python Runtime interpretator və standart kitabxanalar toplusundan ibarətdir. Python proqramları birbaşa maşın koduna kompilyasiya olunmur, əvəzinə runtime zamanı interpretasiya edilir və ya ilk növbədə bayt-koda çevrilərək sonra icra olunur.

Runtime Xətaları və İstisnaları

Runtime errors və ya icra vaxtı xətaları proqramın kompilyasiya mərhələsində aşkar edilə bilməyən, yalnız proqram işə düşdükdən sonra ortaya çıxan problemlərdir. Bu xətalar bir çox fərqli səbəblərdən yarana bilər:

  1. Riyazi xətalar: Sıfıra bölmə, kök altından mənfi ədəd çıxarma və digər qeyri-müəyyən riyazi əməliyyatlar.
  2. Yaddaş problemləri: Kifayət qədər operativ yaddaş olmaması, yaddaş sızması (memory leak), boş göstəriciyə (null pointer) müraciət və ya massiv sərhədlərindən kənara çıxma (array index out of bounds).
  3. Fayl və giriş-çıxış xətaları: Mövcud olmayan fayla müraciət cəhdi, oxuma və ya yazma icazələrinin olmaması, disk sahəsinin bitməsi.
  4. Şəbəkə problemləri: Şəbəkə əlaqəsinin kəsilməsi, serverin cavab verməməsi, timeout baş verməsi.
  5. Tip uyğunsuzluqları: Düzgün olmayan tip çevrilmələri, məlumat formatının gözlənilməzliyi.
  6. Resurs əlçatmazlığı: Lazımi sistem resurslarının tapılmaması, məhdudiyyətlərə çatma.

Bu cür xətalar proqramın qəfil dayanmasına və ya qeyri-normal davranışa səbəb ola bilər. Buna görə də peşəkar proqramçılar istisna idarəetmə (exception handling) mexanizmlərindən istifadə edərək bu xətaları tutmağa və idarə etməyə çalışırlar. Try-catch blokları, error handling strategiyaları və logging mexanizmləri runtime xətalarının idarə olunması üçün ən çox istifadə edilən metodlardır.

Runtime Performansı və Optimallaşdırma

Runtime performansı proqramın nə qədər sürətli və effektiv işlədiyini ölçən kritik göstəricidir. Bu, bir neçə vacib aspekti əhatə edir:

  1. İcra sürəti: Proqramın və ya alqoritmin müəyyən bir tapşırığı yerinə yetirmək üçün sərf etdiyi vaxt. Big O notasiyası ilə ifadə olunan alqoritmik mürəkkəblik runtime performansının nəzəri təhlili üçün istifadə olunur.
  2. Yaddaş istifadəsi: Proqramın işləməsi zamanı istifadə etdiyi operativ yaddaş miqdarı. Yaddaş səmərəliliyi böyük məlumat dəstləri ilə işləyən tətbiqlər üçün xüsusilə vacibdir.
  3. Prosessor yükü: Proqramın CPU resurslarından nə qədər istifadə etdiyi və bu resursları nə dərəcədə səmərəli bölüşdürdüyü.
  4. Enerji səmərəliliği: Xüsusilə mobil cihazlar üçün əhəmiyyətli olan, proqramın enerji istehlakı.

Proqramçılar kodlarını optimallaşdırarkən məhz bu runtime göstəricilərini yaxşılaşdırmağa çalışırlar. Profiling alətlərindən istifadə edərək proqramın hansı hissələrinin daha çox vaxt və ya resurs sərf etdiyini müəyyənləşdirir, darboğazları (bottlenecks) aşkar edir və lazımi optimallaşdırmalar aparırlar.

Kompilyasiya Vaxtı ilə Müqayisə

Runtime anlayışını daha yaxşı başa düşmək üçün onu compile time (kompilyasiya vaxtı) ilə müqayisə etmək faydalıdır. Kompilyasiya vaxtı proqramın mənbə kodunun maşın dilinə və ya ara formata çevrildiyi zaman dövründür. Bu mərhələdə sintaksis yoxlamaları aparılır, tip uyğunluqları təsdiq edilir və kod optimallaşdırılır. Kompilyasiya vaxtında aşkar edilən xətalar (compile-time errors) sintaksis səhvləri, tip uyğunsuzluqları və digər statik olaraq yoxlanıla bilən problemlərdir.

Runtime isə artıq kompilyasiya mərhələsini keçmiş proqramın faktiki olaraq işlədiyi zaman dövrüdür. Runtime zamanı baş verən hadisələr və problemlər dinamikdir - onlar proqramın icra axınından, istifadəçi daxilolmalarından, sistem vəziyyətindən və xarici amillərdən asılıdır.

Just-In-Time (JIT) Kompilyasiyası

Müasir runtime mühitlərinin çoxunda Just-In-Time kompilyasiyası adlanan hibrid yanaşma mövcuddur. Bu texnologiya kompilyasiya və runtime mərhələlərini birləşdirir. Proqram başlanğıcda interpretasiya olunur və ya ara koda çevrilir, lakin runtime zamanı tez-tez istifadə olunan kod hissələri dinamik olaraq optimal maşın koduna kompilyasiya edilir. Bu yanaşma həm platformadan asılılıq, həm də yüksək performans təmin edir. Java-nın HotSpot JVM-i və .NET-in CLR-i bu texnologiyadan geniş istifadə edir.

Runtime Kitabxanaları və API-lər

Runtime mühiti həmçinin geniş standart kitabxanalar və tətbiq proqramlaşdırma interfeyslərini (API) təmin edir. Bu kitabxanalar fayl əməliyyatları, şəbəkə kommunikasiyası, məlumat strukturları, riyazi hesablamalar, qrafik interfeyslər və digər ümumi tapşırıqlar üçün hazır funksionallıq təqdim edir. Proqramçılar bu hazır komponentlərdən istifadə edərək təkrardan kod yazmaq ehtiyacını azaldır və inkişaf prosesini sürətləndirir.

Müxtəlif Dillərdə Runtime Konsepsiyaları

Hər proqramlaşdırma dili və platforması öz xüsusi runtime xüsusiyyətlərinə malikdir:

  • C və C++: Minimal runtime - proqramlar birbaşa əməliyyat sisteminin üzərində işləyir, avtomatik yaddaş idarəçiliyi yoxdur.
  • Java: Robust runtime - JVM platforma müstəqilliyini, avtomatik yaddaş idarəçiliyini və güclü təhlükəsizlik modelini təmin edir.
  • JavaScript: Brauzer və ya Node.js runtime mühitində işləyir, hadisə əsaslı asinxron model istifadə edir.
  • Python: İnterpretasiya edilən dil, çevik runtime mühiti, dinamik tipləşdirmə.
  • Go: Lightweight runtime, effektiv goroutine və kanallar sistemi.

Nəticə

Runtime müasir proqram təminatının mərkəzi anlayışlarından biridir. O, həm proqramların icra olunduğu zaman dövrünü, həm də bu icranı mümkün edən infrastrukturu əhatə edir. Runtime performansının optimallaşdırılması, runtime xətalarının idarə edilməsi və runtime mühitinin düzgün seçilməsi keyfiyyətli proqram təminatının yaradılması üçün həlledici əhəmiyyət kəsb edir.

Tədris sahələrimiz barədə məlumat almaq üçün qeydiyyatdan keçin

Teqlər:

Digər tədris sahələri