Assembler vs Interpreter
Uopšteno govoreći, kompajler je kompjuterski program koji čita program napisan na jednom jeziku, koji se zove izvorni jezik, i prevodi ga na drugi jezik, koji se naziva ciljni jezik. Tradicionalno, izvorni jezik je jezik visokog nivoa kao što je C++, a ciljni jezik je jezik niskog nivoa kao što je jezik asemblera. Međutim, postoje prevodioci koji mogu da konvertuju izvorni program napisan u asemblerskom jeziku i konvertuju ga u mašinski ili objektni kod. Asembleri su takvi alati. S druge strane, tumači su alati koji izvršavaju instrukcije napisane u nekom programskom jeziku. Interpretator može ili direktno izvršiti izvorni kod visokog nivoa ili ga prevesti u srednji kod i zatim ga interpretirati ili izvršiti unaprijed kompajlirani kod.
Šta je asembler?
Assembler je softver ili alat koji prevodi asemblerski jezik u mašinski kod. Dakle, asembler je vrsta kompajlera i izvorni kod je napisan u asemblerskom jeziku. Asembler je jezik čitljiv ljudima, ali obično ima odnos jedan na jedan sa odgovarajućim mašinskim kodom. Stoga se kaže da asembler izvodi izomorfno (mapiranje jedan na jedan) translaciju. Napredni asembleri pružaju dodatne funkcije koje podržavaju razvoj programa i procese otklanjanja grešaka. Na primjer, tip asemblera koji se zove makro asembleri pruža mogućnost makroa.
Šta je tumač?
Tumač je kompjuterski program ili alat koji izvršava instrukcije programiranja. Tumač može ili izvršiti izvorni kod direktno ili pretvoriti izvorni kod u međukod i izvršiti ga direktno ili izvršiti unaprijed kompajlirani kod koji je proizveo kompajler (neki sistemi tumača uključuju kompajler za ovaj zadatak). Jezici kao što su Perl, Python, MATLAB i Ruby su primjeri programskih jezika koji koriste srednji kod. UCSD Pascal tumači prethodno kompajlirani kod. Jezici kao što su Java, BASIC i Samlltalk prvo kompajliraju izvorni kod u međukod koji se zove bytecode, a zatim ga interpretira.
Koja je razlika između asemblera i tumača?
Asmbler se može smatrati posebnom vrstom kompajlera, koji samo prevodi asemblerski jezik u mašinski kod. Tumači su alati koji izvršavaju instrukcije napisane na nekom jeziku. Sistemi tumača mogu uključivati kompajler za prethodno kompajliranje koda prije interpretacije, ali tumač se ne može nazvati posebnim tipom kompajlera. Asembleri proizvode objektni kod, koji će možda morati da se poveže pomoću programa za povezivanje da bi se pokrenuo na mašini, ali većina interpretatora može sama da dovrši izvršenje programa. Asembler će obično raditi jedan na jedan prijevod, ali to nije istina za većinu tumača. Budući da asemblerski jezik ima mapiranje jedan na jedan sa mašinskim kodom, asembler se može koristiti za proizvodnju koda koji radi veoma efikasno u situacijama u kojima su performanse veoma važne (na primer, grafičke mašine, ugrađeni sistemi sa ograničenim hardverskim resursima u poređenju sa personalnim računarom kao što su mikrotalasne pećnice, mašine za pranje veša itd.). S druge strane, prevodioci se koriste kada vam je potrebna velika prenosivost. Na primjer, isti Java bajt kod se može pokrenuti na različitim platformama korištenjem odgovarajućeg tumača (JVM).