Proqram Xətası

  Proqram Xətası (ing. Software Bug) — kompüter proqramı və ya sistemdə baş verən xətadır. Bu cür xətalar yanlış və ya gözlənilməyən/nəzərdə tutulmayan nəticələrə gətirib çıxarır.

   İngilis dilində bug sözü həm də böcək mənasını verir. Amerikalı mühəndislər bir əsrdən çoxdur ki, maşındakı kiçik qüsurları “böcəklər” adlandırırlar. Tomas Edison 1870-ci illərdə elektrik dövrələrindəki nöqsanlardan “böcək” olaraq bəhs edirdi.

   Hesablama texnologiyasında bu terminin istifadəsi və məşhurlaşması 9 Sentyabr 1947-ci ildə baş verən bir hadisəylə bağlıdır. Amerikalı riyaziyyatçı və kompüter proqramçısı Grace Hopper və onun komandası Mark II kompüteri ilə çalışarkən maraqlı bir hadisə baş verir. Kompüterin kontakt releləri arasında bir güvə ilişib qalır və sistemin dayanmasına səbəb olur. Komanda üzvləri hadisəni qeydə alır və Grace Hopper (sonradan ABŞ Hərbi Dəniz Qüvvələrinin kontr-admiralı olur) xanıma  xəbər verirlər. O da kompüterin qeydiyat jurnalında tarixə keçəcək bir qeyd yazır:

“Xətanın tapılmasının ilk faktiki hadisəsi” (“First actual case of bug being found.”)

NMAH2000-03035.jpg

   Bu hadisədən sonra bug sözü hesablama texnologiyasında termin halına gəlir. Xətaların tapılması və aradan qaldırılması prosesi sazlama (debugging) adlanır. Müasir kompüter sistemləri bir çox xətaların müəyyən edilməsi və avtomatik aradan qaldırılması imkanlarına malikdir.

Alqoritm

  Alqoritm (ing. Algorithm) — verilmiş məsələni həll etmək üçün dəqiq təyin olunmuş sonlu sayda qaydalar ardıcıllığıdır. Bu qaydalar kompüterdə realizə olunabilən instruksiyalardır. Alqoritm istənilən növ məsələnin həlli üçün tərtib oluna bilər.

   Günümüzdə hesablama texnologiyasında geniş istifadə olunan bu termin IX əsrin məşhur fars riyaziyyatçısı Məhəmməd İbn Musa əl-Xarəzminin (783-850) adıyla bağlıdır.

Muhammad ibn Musa al-Khawarizmi

   Təxminən 825-ci ildə Əl-Xarəzmi onu riyaziyyat aləmində məşhur edən “Əl-kitab əl-müxtəsər fi hesab əl-cəbr vəl müqabələ” adlı kitabını yazmışdır. Yeri gəlmişkən bu gün istifadə etdiyimiz cəbr sözü də bu alimin adıyla bağlıdır. Əl-Xarəzmi öz kitabında mövqeli say sistemi, bu sistemdə hesablama qaydaları haqqında məlumat verir və ilk dəfə sıfırdan (0) istifadə edir. XII əsrin ilk yarısında onun kitabı latın dilinə tərcümə olunaraq “Algoritmi de numero Indorum” adıyla Avropaya daxil olur. Beləliklə də onluq say sistemində hesab qaydalarını alqoritm adlandırırlar. Bu gün istifadə etdiyimiz alqoritm anlayışı isə məsələləri həll etmək üçün istifadə olunan qaydalar (hesabi və məntiqi əməliyyatlar) ardıcıllığını ifadə edir.

Alqoritmin xassələri

  1. Diskretlilik xassəsi. Hər bir alqoritm məsələnin həll prosesini sadə addımların yerinə yetirilməsi ardıcıllığı şəklində ifadə edir və hər bir addımın yerinə yetirilməsi üçün sonlu zaman fasiləsi tələb olunur, yəni başlanğıc verilənlərlə icra olunan hesabi və məntiqi əməliyyatların yerinə yetirilməsi və nəticənin alınması zamana görə diskret yerinə yetirilir.
  2. Müəyyənlik xassəsi. Hər bir alqoritm dəqiq, birqiymətli olmalıdır. Bu xassəyə əsasən alqoritm yerinə yetirildikdə istifadəçinin və onun istifadə etdiyi kompüterdən asılı olmayaraq eyni nəticə əldə edilməlidir.
  3. Kütləvilik xassəsi. Müəyyən sinif məsələnin həlli üçün qurulmuş alqoritm bu sinfə aid olan yalnız başlanğıc qiymətləri ilə fərqlənən bütün məsələlərin həllini təmin etməlidir. Məsələn, ax2 + bx + c = 0 kvadrat tənliyi üçün qurulmuş alqoritm a, b, c – nin ixtiyari qiymətləri üçün məsələni həll edir.
  4. Nəticəlilik və sonluluq xassəsi. Alqoritm sonlu sayda addımdan sonra başa çatmalı və verilmiş məsələnin həlli tapılmalıdır

Alqoritmin təsvir üsulları

  1. Mətn
  2. Blok-sxem
  3. Cədvəl
  4. Alqoritmik dil

Alqoritmin tipləri

  1. Xətti
  2. Budaqlanan
  3. Dövrü

Bernulli ədədlərini hesablayan alqoritm

   İngilis riyaziyyatçısı Ada Lavleys (1815-1852) tərəfindən tərtib olunan Bernulli ədədlərinin hesablanması alqoritmi kompüter üçün yazılan ilk proqram hesab olunur.

Diagram_for_the_computation_of_Bernoulli_numbers

   Ada xanımın özü də təbii olaraq insanlıq tarixinin ilk proqramçısı adını daşıyır. Onun Çarlz Bebbicin analitik maşını ilə bağlı gördüyü işlər gənc xanımı məşhur etmişdir.

Ada_Lovelace

   Ada Lavleysin adının əbədiləşdirilməsi məqsədilə proqramlaşdırma dillərindən birinə onun adı verilmişdir.

Sazlayıcı

  Sazlayıcı (ing. debugger) — kompüter proqramlarının qaynaq kodlarında icra zamanı xətalarının aşkarlanması üçün nəzərdə tutulmuşdur. Bu alət hədəf proqramlarını xüsusi nöqtələrdə dayandırmağa, addım-addım icra etməyə və gedişatı izləməyə imkan verir. Hədəf proqramlarının icrası zamanı kompüter resurslarında baş verən dəyişikliklərin monitorinqini aparmaq, dəyişənlərin qiymətini müəyyən etmək və eləcə də dəyişdirmək mümkündür. Müasir IDE-lərin sazlayıcıları geniş funksional imkanlara sahibdir. Başqa yerdə və mühitdə yerləşən proqramları sazlamaq üçün əlavə olaraq uzaqdan sazlayıcını (ing. remote debuger) quraşdırmaq lazımdır.

Proqramçıların ən çox istifadə etdikləri müstəqil sazlayıcılar aşağıdakılardır:

  • GNU Debugger (GDB);
  • WinDbg;
  • Valgrind;
  • LLDB;
  • Lightrun;
  • Fusion Reactor;
  • Nemiver;
  • Delve;
  • Xdebug;
  • Bash Debugger.