Surinkėjas prieš vertėją
Apskritai, kompiliatorius yra kompiuterio programa, kuri nuskaito programą, parašytą viena kalba, kuri vadinama š altinio kalba, ir išverčia ją į kitą kalbą, kuri vadinama tiksline kalba. Tradiciškai š altinio kalba yra aukšto lygio kalba, pvz., C++, o tikslinė kalba yra žemo lygio kalba, pvz., asamblėjos kalba. Tačiau yra kompiliatorių, kurie gali konvertuoti Assembly kalba parašytą š altinio programą ir konvertuoti ją į mašininį kodą arba objekto kodą. Tokie įrankiai yra surinkėjai. Kita vertus, vertėjai yra įrankiai, kurie vykdo instrukcijas, parašytas tam tikra programavimo kalba. Vertėjas gali arba tiesiogiai vykdyti aukšto lygio š altinio kodą, arba išversti juos į tarpinį kodą ir tada jį interpretuoti arba vykdyti iš anksto sukompiliuotą kodą.
Kas yra surinkėjas?
Assembler yra programinė įranga arba įrankis, kuris verčia surinkimo kalbą į mašininį kodą. Taigi, asembleris yra kompiliatoriaus tipas, o š altinio kodas parašytas asamblėjos kalba. Asamblėja yra žmogaus skaitoma kalba, tačiau ji paprastai yra vienas su vienu ryšiu su atitinkamu mašinos kodu. Todėl sakoma, kad surinkėjas atlieka izomorfinį (vienas prie vieno) vertimą. Išplėstiniai surinkėjai suteikia papildomų funkcijų, kurios palaiko programų kūrimo ir derinimo procesus. Pavyzdžiui, tokio tipo surinkėjai, vadinami makrokomandomis, suteikia makrokomandą.
Kas yra vertėjas?
Vertėjas yra kompiuterio programa arba įrankis, vykdantis programavimo instrukcijas. Vertėjas gali arba tiesiogiai vykdyti š altinio kodą, arba konvertuoti š altinį į tarpinį kodą ir vykdyti jį tiesiogiai arba vykdyti iš anksto sukompiliuotą kodą, sukurtą kompiliatoriaus (kai kuriose vertėjų sistemose yra kompiliatorius šiai užduočiai atlikti). Tokios kalbos kaip Perl, Python, MATLAB ir Ruby yra programavimo kalbų, kuriose naudojamas tarpinis kodas, pavyzdžiai. UCSD Pascal interpretuoja iš anksto sukompiliuotą kodą. Tokios kalbos kaip Java, BASIC ir Samlltalk pirmiausia sukompiliuoja š altinį į tarpinį kodą, vadinamą baito kodu, ir tada jį interpretuoja.
Kuo skiriasi surinkėjas ir vertėjas?
Asemblerį galima laikyti specialiu kompiliatoriaus tipu, kuris tik verčia surinkimo kalbą į mašininį kodą. Vertėjai yra įrankiai, vykdantys tam tikra kalba parašytus nurodymus. Vertėjų sistemose gali būti kompiliatorius, kuris iš anksto sukompiliuoja kodą prieš interpretaciją, tačiau vertėjo negalima vadinti specialiu kompiliatoriaus tipu. Surinkėjai sukuria objekto kodą, kurį gali tekti susieti naudojant susiejimo programas, kad jis veiktų kompiuteryje, tačiau dauguma vertėjų gali patys užbaigti programos vykdymą. Paprastai surinkėjas atlieka vertimą vienas prieš vieną, tačiau tai netinka daugeliui vertėjų. Kadangi Assembly kalba turi atvaizdavimą vienas prie vieno su mašininiu kodu, surinkėjas gali būti naudojamas kodui, kuris veikia labai efektyviai tais atvejais, kai našumas yra labai svarbus (pvz., grafikos varikliams, įterptoms sistemoms su ribotais aparatinės įrangos ištekliais, palyginti su asmeniniu kompiuteriu), sukurti. pavyzdžiui, mikrobangų krosnelės, skalbimo mašinos ir kt.). Kita vertus, vertėjai yra naudojami, kai reikia didelio perkeliamumo. Pavyzdžiui, tą patį „Java“baitinį kodą galima paleisti skirtingose platformose naudojant atitinkamą interpretatorių (JVM).