Montētājs pret tulku
Kopumā kompilators ir datorprogramma, kas nolasa programmu, kas rakstīta vienā valodā, ko sauc par avota valodu, un pārtulko to citā valodā, ko sauc par mērķa valodu. Tradicionāli avota valoda ir augsta līmeņa valoda, piemēram, C++, un mērķa valoda ir zema līmeņa valoda, piemēram, montāžas valoda. Tomēr ir kompilatori, kas var konvertēt Assembly valodā rakstītu avota programmu un pārvērst to mašīnkodā vai objekta kodā. Montētāji ir tā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 avota kodu, vai tulkot tos vidējā kodā un pēc tam to interpretēt vai izpildīt iepriekš kompilētu kodu.
Kas ir montētājs?
Assembler ir programmatūra vai rīks, kas pārveido Assembly valodu mašīnkodā. Tātad montētājs ir kompilatora veids, un avota kods ir rakstīts montāžas valodā. Asambleja ir cilvēkiem lasāma valoda, taču tai parasti ir viena pret vienu saistība ar atbilstošo mašīnkodu. Tāpēc tiek uzskatīts, ka montētājs veic izomorfu (no viena pret vienu kartēšanu) tulkojumu. Uzlabotie montieri nodrošina papildu līdzekļus, kas atbalsta programmu izstrādes un atkļūdošanas procesus. Piemēram, montētāju 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 pārveidot avotu par starpkodu un izpildīt to tieši, vai izpildīt kompilatora sagatavotu iepriekš kompilētu kodu (dažās tulku sistēmās šim uzdevumam ir iekļauts kompilators). Tādas valodas kā Perl, Python, MATLAB un Ruby ir tādu programmēšanas valodu piemēri, kurās tiek izmantots starpposma kods. UCSD Pascal interpretē iepriekš kompilētu kodu. Tādas valodas kā Java, BASIC un Samlltalk vispirms apkopo avotu starpkodā, ko sauc par baitkodu, un pēc tam to interpretē.
Kāda ir atšķirība starp montētāju un tulku?
Asambleru var uzskatīt par īpašu kompilatora veidu, kas tikai pārveido montāžas valodu mašīnkodā. Tulki ir rīki, kas izpilda kādā valodā rakstītas instrukcijas. Tulku sistēmās var būt iekļauts kompilators, lai pirms interpretācijas iepriekš kompilētu kodu, taču tulku nevar saukt par īpašu kompilatora veidu. Assemblers izveido objekta kodu, kas, iespējams, ir jāsaista, izmantojot saitīšanas programmas, lai tas darbotos mašīnā, taču lielākā daļa tulku programmas izpildi var pabeigt paši. Montētājs parasti veic tulkojumu viens pret vienu, taču tas neattiecas uz lielāko daļu tulku. Tā kā montāžas valodai ir kartēšana viens pret vienu ar mašīnkodu, montāžas rīku var izmantot, lai izveidotu kodu, kas darbojas ļoti efektīvi gadījumos, kad veiktspēja ir ļoti svarīga (piemēram, grafikas dzinējiem, iegultām sistēmām ar ierobežotiem aparatūras resursiem salīdzinājumā ar personālo datoru). piemēram, mikroviļņu krāsnis, veļas mašīnas utt.). No otras puses, tulki tiek izmantoti, ja jums ir nepieciešama augsta pārnesamība. Piemēram, vienu un to pašu Java baitkodu var palaist dažādās platformās, izmantojot atbilstošo tulku (JVM).