İnterpretator nədir?

Orijinal mənbə: https://ru.hexlet.io/blog/posts/interpreter

Tərcüməçi: Emil Hüseynov

İnterpretator nə üçün lazımdır?

Kompüter sözü ingilis dilindən hesablama maşını kimi tərcümə edilir. Biz sənədləri hazırlamaq, xəbərləri oxumaq, filmləri izləmək və digər müxtəlif əməliyyatlar üçün kompüterdən istifadəyə alışmışıq.

Hesablama maşını bir qədər qəribə səslənə bilər, lakin bu ifadə kompüter sözünün mənasını düzgün əks etdirir, çünki kompüter yalnız ədədlərlə "işləyir": sənədlər, xəbərlər, filmlər, kompüterdə icra olunan proqramlar - bunlar kompüter üçün sadəcə rəqəmlər yığınıdır.

Kompüter yalnız maşın kodunu "başa düşür". İnsana maşın kodundan istifadə etməklə proqram yazmaq çətindir, lakin əvvəllər proqramçılar məhz maşın kodundan istifadə ediblər. Həmin proqramların kodu aşağıdakı kimi rəqəmlər yığınından ibarət olub:

102 184 0 0
102 185 100 0
102 1 200
102 73
102 131 249 0
117 245

Proqramçılar öz işlərini asanlaşdırmaq üçün insan dilinə yaxın olan proqramlaşdırma dilləri hazırlamaq üzərində düşünüblər. Lakin bir problem var idi: yalnız rəqəmlər yığınını "başa düşən" kompüter bəs proqramlaşdırma dillərində yazılmış əmrləri necə icra edəcək? 

Bu problemi həll edən iki proqram növü vardır: interpretator və kompilyator. Kompilyator haqda burda oxuya bilərsiniz.

Qısası, interpretator — bu, hər hansı proqramlaşdırma dilində yazılmış kodu icra edən proqramdır. Məsələn, "Python" interpretatoru "Python" əmrlərini, "JavaScript" interpretatoru "JavaScript" əmrlərini "başa düşür".

"Python" interpretatoru

1-dən 100-dək bütün ədədlərin cəmini hesablayan sadə bir proqramın kodunu yazaq:

sum = 0
for i in range(1, 101):
  sum = sum + i
print(sum) 

python interpretatorunu işə salırıq və proqramın kodunu sətirbəsətir terminala daxil edirik:

python interpretatoru

Hər bir sətrin əvvəlində >>> işarəsinin olduğunu görürük. İki sətirdən ibarət for əmrini daxil etdikdə işarə üç nöqtə ... ilə əvəzlənir.

Print(sum) əmri icra edildikdə interpretator nəticəni - 5050 ədədini ekranda göstərir. Xətaya yol verdikdə interpretator bu barədə məlumat verir:

xəta mesajı

Yuxarıdakı nümunədə for konstruksiyasından sonra iki nöqtə yazılmayıb və interpretator bu xəta barədə bizi məlumatlandırır.

Proqramlaşdırma dili öyrənərkən interpretatorun ani reaksiya verməsi çox vacibdir. Xəta barədə mesajlar yeni başlayan proqramçılara yeni dili daha tez mənimsəməyə imkan verir.

Bundan başqa, interpretasiya olunan dillər çox vaxt böyükhəcmli proqram prototiplərinin hazırlanmasında istifadə olunur. O, interaktiv rejimdə həmişə eyni əməliyyatları yerinə yetirir: proqramçı tərəfindən daxil olunan əmri oxuyur, onu icra edir və nəticəni ekranda göstərir. Bu rejim Read-Evaluate-Print Loop (REPL) adlanır.

Proqramın icra olunması

REPL rejimi proqramı hazırlamağa kömək edir, lakin hər bir əmri sətirbəsətir daxil etmək yorucudur: onları bir faylda yazmaq və sonra hazır proqramı işə salmaq daha rahat və sürətlidir. Bu məqsədlə sum.py mətn faylı yaradın və ora aşağıdakı kodu yazın:

sum = 0

for i in range(1, 101):
  sum = sum + i

print(sum)

Proqramı icra etmək üçün python interpretatorunu işə salmaq və faylın adını parametr kimi göstərmək kifayətdir:

> python sum.py

5050

İnterpretator əmrləri bir-bir yerinə yetirdikdən sonra öz işini dayandırır. Bu, paket iş rejimi adlanır.

Beləliklə, interpretator iki rejimdə işləyə bilər. İnteraktiv rejim ideyaları yoxlamağa və problemlərin həllini tapmağa kömək edir. Paket rejimi isə hazır proqramı icra edir.

İnterpretator hazırlamaq

İnterpretator hazırlamağın bir çox üsulu vardır. Proqramlaşdırma dili yüzlərlə əmrdən ibarətdir.

Yuxarıda baxdığımız "Python" proqramında mənimsətmə, for dövr operatorları və print funksiyasından istifadə olunub. "Python" interpretatoru bu əmrləri "başa düşür". İnterpretatorda hər bir əmrin icrası üçün kod bloku vardır.

İnterpretatorun ikinci vacib komponenti mətn təhlilçisidir. Proqramçı mətn ​​daxil etdikə təhlilçi onu hissələrə ayırır və hansı əmr olduğunu "başa düşür". Bundan sonra idarəetməni bu əmrin icrasına cavabdeh bloka ötürür.

İnterpretator məhz belə işləyir. Daxil edilmiş əmri təhlil edir, sonra onu icra edir, yenidən təhlil edir və yenidən icra edir.

Üstün cəhətləri

  • Öyrənilməsi asandır. REPL rejimi proqramlaşdırma dilinin sintaksisini daha tez öyrənməyə imkan verir.

  • Proqramlaşdırmaq asandır. Kompilyatorda olduğu kimi interpretator da proqramçıları maşın kodu ilə işləməkdən azad edir.

  • Krossplatforma. Müxtəlif platformalar ("Mac", "Windows", "Linux") üçün interpretatorlar işlənib hazırlanıb.

  • Optimallaşdırma. Proqramların işləmə sürəti yalnız kodun keyfiyyətindən deyil, həm də interpretatorun sürətindən asılıdır. Məsələn, "Google"un proqramçıları müntəzəm olaraq "Chrome" brauzerində işləyən "JavaScript" interpretatorunun işini optimallaşdırırlar. Ona görə "JavaScript"də yazdığımız proqram "Chrome"un hər yeni versiyasında daha sürətli işləyə bilər.

Mənfi cəhətləri

  • Proqramın işləmə sürətinin aşağı olması. İnterpretasiya olunan proqramların işləmə sürəti kompilyasiya olunan proqramlarla müqayisədə aşağıdır, çünki interpretator əvvəlcə əmrin mətnini təhlil edir və yalnız bundan sonra onu icra edir.

  • İnterpretatordan asılılıq. İnterpretasiya olunan proqramın işləməsi üçün interpretator lazımdır. "Windows" əməliyyat sistemində proqramların genişlənməsi ".exe"dir. Belə proqramları dərhal işə salmaq olur. Ancaq "Python"da hazırlanmış proqramı icra etmək üçün "python" interpretatorunun quraşdırılması mütləqdir.

  • Mənbə kodunun əlçatanlığı. İnterpretasiya olunan proqramlaşdırma dilində mənbə kodu istifadəçiyə əlçatandır. İstifadəçi proqramda müəllifin gizlətmək istədiyini (məsələn, parolun şifrlənməsi üsulu və ya unikal alqoritm) axtarıb tapa bilər.

  • Səhvlərin sonradan aşkar edilməsi. İnterpretator əmrləri sətirbəsətir icra edir. Əgər əmrin sintaksisində xətaya yol verilibsə, interpretator yalnız onun təhlilindən sonra bu barədə məlumat verə bilər. Buna görə proqramı hərtərəfli sınaqdan keçirmək lazımdır.

Şərh yazmaq üçün hesabınıza daxil olun.

0
0