Kas ir kompilators?
Kompilators ir datorprogramma, kas augsta līmeņa programmēšanas valodā rakstītu kodu pārveido par mašīnas kodu. Tā ir programma, kas cilvēkiem lasāmu kodu tulko valodā, kuru saprot datora procesors (binārs 1 un 0 bits). Dators apstrādā mašīnas kodu, lai veiktu atbilstošos uzdevumus.
Kompilatoram jāatbilst tās programmēšanas valodas sintakses likumam, kurā tas ir rakstīts. Tomēr kompilators ir tikai programma, un tas nevar novērst šajā programmā atrastās kļūdas. Tātad, ja kļūdāties, jums jāveic izmaiņas programmas sintaksē. Pretējā gadījumā tas netiks apkopots.
Kas ir tulks?
Tulks ir datorprogramma, kas katru augsta līmeņa programmas paziņojumu iekļauj mašīnas kodā. Tas ietver pirmkodu, iepriekš sastādītu kodu un skriptus. Gan kompilators, gan tulki veic to pašu darbu, kas augstāka līmeņa programmēšanas valodu pārveido par mašīnkodu. Tomēr kompilators pārvērš kodu mašīnkodā (izveido exe) pirms programmas palaišanas. Palaižot programmu, tulki pārveido kodu mašīnkodā.
GALVENĀS ATŠĶIRĪBAS
- Kompilators pārveido kodu, kas rakstīts augsta līmeņa programmēšanas valodā, uzreiz pirms programmas palaišanas mašīnkodā, turpretī tulks programmas izpildes laikā katru augsta līmeņa programmas paziņojumu pa vienam ievieto mašīnkodā.
- Apkopotais kods darbojas ātrāk, bet interpretētais kods darbojas lēnāk.
- Kompilators parāda visas kļūdas pēc sastādīšanas, turpretī tulks katru rindu parāda kļūdas pa vienai.
- Kompilators ir balstīts uz tulkošanas sasaistīšanas un ielādes modeli, savukārt tulks ir balstīts uz interpretācijas metodi.
- Kompilators aizņem visu programmu, savukārt tulks - vienu koda rindiņu.
Atšķirība starp sastādītāju un tulku
Atšķirības pamats | Sastādītājs | Tulks |
---|---|---|
Programmēšanas soļi |
|
|
Priekšrocība | Programmas kods jau ir tulkots mašīnkodā. Tādējādi koda izpildes laiks ir mazāks. | Tulkus ir vieglāk izmantot, it īpaši iesācējiem. |
Trūkums | Jūs nevarat mainīt programmu, neatgriežoties pie avota koda. | Interpretētās programmas var darboties datoros, kuriem ir atbilstošais tulks. |
Mašīnas kods | Glabājiet mašīnas valodu kā mašīnas kodu diskā | Mašīnas kodu nemaz nesaglabā. |
Darbības laiks | Apkopotais kods darbojas ātrāk | Interpretētais kods darbojas lēnāk |
Modelis | Tas ir balstīts uz valodas translationlinking-loading modeli. | Tās pamatā ir Interpretācijas metode. |
Programmu ģenerēšana | Ģenerē izvades programmu (exe formā), kuru var palaist neatkarīgi no sākotnējās programmas. | Neveidojiet izvades programmu. Tāpēc viņi katru reizi izpildes laikā novērtē avota programmu. |
Izpilde | Programmas izpilde ir atdalīta no sastādīšanas. Tas tika veikts tikai pēc visas izejas programmas apkopošanas. | Programmas izpilde ir interpretācijas procesa sastāvdaļa, tāpēc tā tiek veikta pa rindām. |
Atmiņas prasība | Mērķa programma izpilda neatkarīgi un neprasa kompilatoru atmiņā. | Tulks tulkošanas laikā pastāv atmiņā. |
Vislabāk piemērots | Saistīts ar konkrēto mērķa mašīnu, un to nevar pārnest. C un C ++ ir vispopulārākā programmēšanas valoda, kurā tiek izmantots kompilācijas modelis. | Tīmekļa vidēm, kur svarīgs ir ielādes laiks. Sakarā ar visu izsmeļošo analīzi, kompilēšanai nepieciešams salīdzinoši lielāks laiks, lai sastādītu pat nelielu kodu, kuru, iespējams, nedarbina vairākas reizes. Šādos gadījumos tulki ir labāki. |
Kodu optimizācija | Sastādītājs visu kodu redz jau sākotnēji. Tādējādi viņi veic daudz optimizācijas, kas ļauj kodam darboties ātrāk | Tulki redz kodu pa rindām, un tādējādi optimizācija nav tik spēcīga kā sastādītāji |
Dinamiskā rakstīšana | Grūti ieviest kā sastādītājus nevar paredzēt, kas notiek pagrieziena laikā. | Interpretētās valodas atbalsta dinamisko rakstīšanu |
Lietošana | Tas ir vislabāk piemērots ražošanas videi | Tas ir vispiemērotākais programmai un videi. |
Kļūdu izpilde | Kompilators kompilācijas laikā parāda visas kļūdas un brīdinājumus. Tādēļ jūs nevarat palaist programmu bez kļūdu novēršanas | Tulks nolasa vienu paziņojumu un parāda kļūdu, ja tāda ir. Lai interpretētu nākamo rindu, jums ir jāizlabo kļūda. |
Ievade | Tas aizņem visu programmu | Tam nepieciešama viena koda rindiņa. |
Rezultāts | Atbilstīgie ģenerē starpposma machnie kodu. | Tulks nekad nerada starpposma mačija kodu. |
Kļūdas | Parādīt visas kļūdas pēc, apkopošanas, visas vienlaikus. | Parāda visas kļūdas katrā rindā pa vienai. |
Kas attiecas uz programmēšanas valodām | C, C ++, C #, Scala, Java visi izmanto complier. | PHP, Perls, Rubīns izmanto tulku. |
Sastādītāja loma
- Atbilstīgie nolasa pirmkodu, izved izpildāmo kodu
- Pārvērš programmatūru, kas rakstīta augstāka līmeņa valodā, datoram saprotamās instrukcijās. Tas pārveido programmētāja uzrakstīto tekstu formātā, kuru CPU var saprast.
- Kompilācijas process ir samērā sarežģīts. Tas pavada daudz laika, analizējot un apstrādājot programmu.
- Izpildāmā rezultāts ir kaut kāda mašīnai specifiska binārā koda forma.
Tulka loma
- Tulks konvertē avota kodu rindas pa RUN laikā.
- Interpretēt pilnībā tulko programmu, kas rakstīta augsta līmeņa valodā, mašīnu līmeņa valodā.
- Tulks ļauj novērtēt un modificēt programmu tās izpildes laikā.
- Salīdzinoši mazāk laika pavadīts programmas analizēšanai un apstrādei
- Programmas izpilde ir salīdzinoši lēna, salīdzinot ar kompilatoru
AUGSTA LĪMEŅA VALODAS
Augsta līmeņa valodas, piemēram, C, C ++, JAVA uc, ir ļoti tuvu angļu valodai. Tas atvieglo programmēšanas procesu. Tomēr pirms izpildes tas ir jātulko mašīnvalodā. Šo tulkošanas procesu veic vai nu sastādītājs, vai tulks. Pazīstams arī kā pirmkods.
MAŠĪNAS KODS
Mašīnu valodas ir ļoti tuvu aparatūrai. Katram datoram ir sava mašīnvaloda. Mašīnas valodas programmas sastāv no bināro rakstu sērijām. (Piemēram, 110110) Tas apzīmē vienkāršās darbības, kas jāveic datoram. Mašīnu valodas programmas ir izpildāmas, lai tās varētu palaist tieši.
OBJEKTA KODS
Apkopojot pirmkodu, dažādiem procesoriem, piemēram, Intel, AMD, ARM, ģenerētais mašīnkods ir atšķirīgs. Lai kodu padarītu pārnēsājamu, pirmkods vispirms tiek pārveidots par objekta kodu. Tas ir starpniecības kods (līdzīgs mašīnkodam), kuru neviens procesors nesapratīs. Darbības laikā objekta kods tiek pārveidots par pamata platformas mašīnkodu.
Java ir gan apkopota, gan interpretēta.
Lai izmantotu kompilatoru relatīvās priekšrocības, daži tulki, piemēram, Java, tiek apkopoti un interpretēti. Pats Java kods tiek apkopots Object Code. Darbības laikā JVM objekta kodu interpretē mērķa datora mašīnrakstā.