Montētājs vs tulks
Kopumā kompilators ir datorprogramma, kas nolasa vienā valodā rakstītu programmu, ko sauc par avota valodu, un tulko to citā valodā, ko sauc par mērķvalodu. Tradicionāli avota valoda ir augsta līmeņa valoda, piemēram, C ++, un mērķvaloda ir zema līmeņa valoda, piemēram, asamblejas valoda. Tomēr ir kompilatori, kas var konvertēt avota programmu, kas rakstīta asamblejas valodā, un pārveidot to par mašīnkodu vai objekta kodu. Montētāji ir šādi instrumenti. No otras puses, tulki ir rīki, kas izpilda instrukcijas, kas rakstītas kādā programmēšanas valodā. Tulks var vai nu tieši izpildīt augsta līmeņa pirmkodu, vai arī pārtulkot tos starpkodā un pēc tam to interpretēt vai izpildīt iepriekš sastādītu kodu.
Kas ir montētājs?
Assembler ir programmatūra vai rīks, kas tulko montāžas valodu mašīnkodā. Tātad, montētājs ir kompilatora veids, un avota kods ir rakstīts asamblejas valodā. Asambleja ir cilvēkiem lasāma valoda, taču tai parasti ir savstarpējas attiecības ar atbilstošo mašīnkodu. Tāpēc tiek teikts, ka montētājs veic izomorfu (viens pret vienu kartēšanu) tulkojumu. Uzlabotie montētāji nodrošina papildu funkcijas, kas atbalsta programmu izstrādi un atkļūdošanas procesus. Piemēram, montāžas veids, ko sauc par makro montētājiem, nodrošina makro iespēju.
Kas ir tulks?
Tulks ir datorprogramma vai rīks, kas izpilda programmēšanas instrukcijas. Tulks var vai nu tieši izpildīt avota kodu, vai arī pārveidot avotu par starpkodu un izpildīt to tieši, vai izpildīt kompilatora sagatavotu iepriekš sastādītu kodu (dažās tulku sistēmās šim uzdevumam ir iekļauts kompilators). Tādas valodas kā Perl, Python, MATLAB un Ruby ir programmēšanas valodu piemēri, kas izmanto starpposma kodu. UCSD Pascal interpretē iepriekš sastādītu kodu. Tādas valodas kā Java, BASIC un Samlltalk vispirms apkopo avotu starpposma kodam, ko sauc par baitkodu, un pēc tam to interpretē.
Kāda ir atšķirība starp asambleju un tulku?
Montāžu var uzskatīt par īpašu kompilatoru tipu, kas montāžas valodu tulko tikai ar mašīnkodu. Tulki ir rīki, kas izpilda instrukcijas, kas rakstītas kādā valodā. Tulka sistēmās var būt iekļauts kompilators, lai pirms tulkošanas sastādītu kodu, taču tulku nevar saukt par īpašu kompilatora tipu. Montētāji izveido objekta kodu, kas, iespējams, būs jāsaista, izmantojot saista programmas, lai palaistu mašīnā, taču lielākā daļa tulku var paši izpildīt programmas izpildi. Montētājs parasti veiks tulkojumu viens pret vienu, bet tas neattiecas uz lielāko daļu tulku. Tā kā asamblejas valodai ir viens pret vienu kartējums ar mašīnas kodu, montētāju var izmantot, lai izveidotu kodu, kas darbojas ļoti efektīvi gadījumos, kad veiktspēja ir ļoti svarīga (piemēram, grafiskajiem dzinējiem,iegultās sistēmas ar ierobežotiem aparatūras resursiem, salīdzinot ar personālo datoru, piemēram, mikroviļņu krāsnis, veļas mazgājamās mašīnas utt.). No otras puses, tulki tiek izmantoti, kad jums nepieciešama augsta pārnesamība. Piemēram, to pašu Java baitkodu var palaist dažādās platformās, izmantojot atbilstošo tulku (JVM).