Atšķirības starp sastādītājiem un tulkiem

Pirms Java parādījās C ​​# programmēšanas valodas, tikai datorprogrammas sastādīts vai interpretēts. Valodas, piemēram, montāžas valoda, C, C ++, Fortran, Pascal, gandrīz vienmēr tika apkopotas mašīnkodā. Parasti tika interpretētas tādas valodas kā Basic, VbScript un JavaScript.

Tātad, ar ko atšķiras sastādītā programma no interpretētās programmas?

Sastādīšana

Lai rakstītu programmu, rīkojieties šādi:

  1. Rediģējiet programmu
  2. Apkopojiet programmu mašīna koda failos.
  3. Saistiet mašīnas koda failus izpildāmā programmā (pazīstams arī kā exe).
  4. Atkļūdojiet vai palaidiet programmu

Ar dažām valodām, piemēram, Turbo Pascal un Delphi, tiek apvienoti 2. un 3. solis.

Mašīnas koda faili ir patstāvīgi mašīnas koda moduļi, kuriem gala programmas izveidošanai nepieciešama sasaiste. Iemesls atsevišķiem mašīnas koda failiem ir efektivitāte; kompilatoriem atliek tikai pārkompilēt avota kods kas ir mainījušies. Mašīnas koda faili no neizmainītajiem moduļiem tiek izmantoti atkārtoti. Tas ir pazīstams kā pieteikuma sastādīšana. Ja vēlaties pārkompilēt un atjaunot visu avota kodu, tas ir pazīstams kā Build.

instagram viewer

Saikne ir tehniski sarežģīts process, kurā visi funkciju izsaukumi starp dažādiem moduļiem tiek salikti kopā, un atmiņas vietas tiek iedalītas mainīgie un viss kods tiek ievietots atmiņā, pēc tam ierakstīts diskā kā pilnīga programma. Tas bieži ir lēnāks solis nekā sastādīšana, jo visi mašīnas koda faili ir jānolasa atmiņā un jāsaista kopā.

Mutiskā tulkošana

Programmas palaišana, izmantojot tulku, ir šāda

  1. Rediģējiet programmu
  2. Atkļūdojiet vai palaidiet programmu

Šis ir daudz ātrāks process, un tas iesācējiem programmētājiem palīdz ātrāk rediģēt un pārbaudīt kodu, nekā izmantojot kompilatoru. Trūkums ir tāds, ka interpretētās programmas darbojas daudz lēnāk nekā kompilētās programmas. Par 5-10 reizes lēnāk, jo katra koda rinda ir atkārtoti jāizlasa, pēc tam atkārtoti jāapstrādā.

Ievadiet Java un C #

Abas šīs valodas ir daļēji sastādītas. Viņi ģenerē starpposma kodu, kas ir optimizēts interpretācijai. Šī starpposma valoda nav atkarīga no pamata aparatūras, un tas atvieglo portēšanu programmas, kas rakstītas vai nu citiem procesoram, ja vien tam ir uzrakstīts tulks aparatūra.

Java, kad tā tiek apkopota, rada baitkodu, kuru izpildlaika laikā interpretē Java virtuālā mašīna (JVM). Daudzi JVM izmanto “Just-In-Time” kompilatoru, kas pārveido baitskodu vietējā mašīnas kodā un pēc tam palaiž šo kodu, lai palielinātu interpretācijas ātrumu. Faktiski Java avota kods tiek apkopots divpakāpju procesā.

C # tiek apkopots kopējā vidējā valodā (CIL, kas agrāk bija pazīstama kā Microsoft starpvaloda MSIL). To pārvalda Common Language Runtime (CLR), kas ir daļa no .NET ietvariem un nodrošina vidi, kas nodrošina tādus atbalsta pakalpojumus kā atkritumu savākšana un Just-In-Time apkopošana.

Gan Java, gan C # izmanto paātrināšanas paņēmienus, tāpēc efektīvais ātrums ir gandrīz tikpat ātrs kā tīrā apkopotā valodā. Ja lietojumprogramma daudz laika pavada, veicot ievadi un izvadi, piemēram, diska failu lasīšana vai palaišana datu bāze vaicājumi, tad ātruma starpība ir tik tikko pamanāma.

Ko tas man nozīmē?

Ja vien jums nav ļoti īpaša ātruma nepieciešamība un kadrēšanas ātrums jāpalielina par pāris kadriem sekundē, varat aizmirst par ātrumu. Jebkurš no C, C ++ vai C # nodrošinās pietiekamu ātrumu spēlēm, kompilatoriem un operētājsistēmām.