Ir daudz veidu, kā atšķirt programmēšanas valodas. Sākumā tie iedalās dažādās paradigmās: funkcionālās, objektu orientētās un vēl vairāk.

Varat arī klasificēt programmēšanas valodu pēc tās tulkošanas metodes, kas būtiski ietekmē valodas veiktspēju. Kompilētās programmēšanas valodas parasti ir ātrākas nekā interpretētās. Tāpēc tādās situācijās kā spēļu izstrāde, kas prasa ātrumu, izstrādātāji mēdz izmantot kompilētas valodas.

Kas ir tulkošana?

Tulkošanas process pārvērš programmētāja rakstīto kodu mašīnkodā, ko dators var izpildīt. Mašīnkods ir zema līmeņa valodas veids, kurā ir vieninieki un nulles. Tātad tulkotājs pārvērš augsta līmeņa kodu, ko izveidojat programmēšanas valodā, mašīnkodā.

Bez tulkotājiem jums būtu jākodē mašīnvalodā. Katrā jums zināmajā augsta līmeņa programmēšanas valodā tiek izmantota viena no trim tulkošanas metodēm: kompilators, tulks vai abu hibrīds.

Kas ir kompilators?

Kompilators ir programmatūra, kas avota kodu, kas rakstīts augsta līmeņa valodā, pārvērš zema līmeņa kodā izpildei.

Iepriekš redzamā diagramma attēlo kompilatoru tā visvienkāršākajā formā. Kompilatoram ir vairākas fāzes. Katra fāze pārveido kodu no viena stāvokļa uz otru. Katras kompilatora fāzes mērķis ir izveidot izvadi, ar kuru ir vieglāk manipulēt nākamajai fāzei. Kompilatora vispārējā struktūra ir šāda:

  • Skeneris: šajā fāzē tiek izmantota rakstzīmju straume un tās tiek grupētas marķieros, kas attēlo identifikatorus, virkņu literāļus utt.
  • Parsētājs: šajā fāzē tiek grupēti marķieri, pamatojoties uz avota programmēšanas valodas gramatiku. Tas izveido abstraktu sintakses koku, kas ir izteiksmju kolekcija, kas veido programmu.
  • Semantika: šajā fāzē tiek veikta abstraktā sintakses koka (AST) semantiska analīze. Tas izmanto avota valodas noteikumus, lai pievienotu nozīmi, piešķirot AST izteiksmēm veidus un pārbaudot to derīgumu. Pēc tam AST kļūst par starpposmu.
  • Intermediate Representation (IR): šī fāze pārvērš sākotnējās programmas pirmkodu mašīnkodā. Tas rada montāžas koda vienkāršotu versiju. IR izmanto vienu vai vairākus optimizētājus, lai uzlabotu IS kodu un apkopotu informāciju par iekārtu, kurā tas darbojas. Optimizētājs var padarīt programmu efektīvāku, ātrāku vai pat mazāku.
  • Kodu ģenerators: šī fāze patērē optimizēto IR kodu un pārvērš to mašīnas kodā.

Kuras programmēšanas valodas izmanto kompilatorus?

Dažas populāras kompilētās programmēšanas valodas ietver:

  • C
  • C++
  • Aiziet
  • Ada
  • Fortran
  • COBOL
  • Lisp
  • Mērķis-C
  • Svifta

Viena no kompilētas valodas izmantošanas priekšrocībām ir tā, ka tā kompilēšanas laikā identificē kļūdas. Tas ļauj novērst šādas kļūdas un pēc tam vēlreiz mēģināt kompilēt programmu. Ir mazāka iespēja, ka kompilētās valodas neizdosies, kad tās sāk izpildīt. Šīs valodas pat neģenerēs programmu, ko palaist, ja avota kodā ir sintakses kļūdas. Taču semantiskās kļūdas un citi izpildlaika kļūdu veidi tiks novērsti.

Kompilētās valodas arī pēc kompilēšanas tiek izpildītas ļoti ātri.

Kas ir tulks?

Tulks ir programma, kas vienlaikus tulko un izpilda vienu koda rindiņu. Šis process atkārtojas, līdz tulks nonāk pie pēdējās koda rindas dotajā programmā vai skriptā.

Kā redzams no iepriekš redzamās diagrammas, tulkam ir nepieciešamas divas ievades. Pirmkārt, tas aizņem visu avota kodu (programmu). Pēc tam tas nolasa programmas pirmo rindiņu (kā ievadi), tulko un izpilda to. Ja šī rinda tiek izpildīta pareizi, tā pāriet uz nākamo programmas vai skripta rindiņu.

Atšķirībā no kompilatora tulks netulko visu programmu mašīnkodā. Tā vietā tas parsē un analizē doto koda rindiņu pirms tās izpildes. Tulkam ir jāsāk palaist programma, jo īpaši lielāka, pirms kompilators pat ir pabeidzis tās tulkošanu.

Kurās programmēšanas valodās tiek izmantoti tulki?

Dažas populāras tulkotās programmēšanas valodas ietver:

  • Python
  • JavaScript
  • Perl
  • MATLAB
  • PAMATA

Lai gan tulks sāk izpildīt kodu ātrāk, tas joprojām neizdosies, ja tiks konstatēta kļūda. Kā programmētājam jums ir jānovērš šāda kļūda un jārestartē programma. Šis notikums notiek katru reizi, kad tulks saskaras ar jaunu kļūdu. Dažas kļūdas var būt neaktīvas, ja tās ir saistītas ar retu apstākļu kopumu. Šādos gadījumos testēšana ir svarīgāka nekā jebkad agrāk.

Tulkus parasti ir vieglāk izstrādāt nekā kompilatorus, un to programmas pēc konstrukcijas ir pārnēsājamākas.

Kas ir hibrīda tulkošana?

Hibrīdtulkošanā tiek izmantots kompilators un tulks. Hibrīda tulkošana apkopo augsta līmeņa avota kodu zemāka līmeņa formā, piemēram, baitkodā. Pēc tam tā izmanto tulku, lai palaistu šo baitkodu.

Hibrīda tulkošana dažādās programmēšanas valodās var atšķirties, taču tiks izmantota šī vispārējā struktūra. Viena no populārākajām programmēšanas valodām, kas izmanto hibrīda tulkošanu, ir Java. Java kompilators pārtulko tā avota kodu šādā valodā Java virtuālās mašīnas (JVM) baitu kods. Pēc tam tulks pārvērš JVM baitu kodu mašīnkodā.

Kurās programmēšanas valodās tiek izmantota hibrīda tulkošana?

Dažas populāras hibrīda programmēšanas valodas ietver:

  • Java
  • C#
  • Visual Basic
  • Erlang
  • F#

Izmantojot hibrīda tulkošanu, jūs iegūstat labāko no abām pasaulēm. Vispirms apkopojot kodu, varat pēc iespējas ātrāk novērst kļūdas. Hibrīda kompilatoru radītais baitkods ir vieglāk interpretējams nekā augsta līmeņa programmas pirmkods.

Dažādu tulkošanas metožu zināšanu vērtība

Jums ir jāsaprot konkrētā valodas izmantotā tulkošanas metode, it īpaši, ja to izmantojat jaunam projektam. Valodu tulkošanas metode ir galvenā programmēšanas valodas identitātes daļa. Tas var ietekmēt to, kā jūs izplatāt savu programmu un kā lietotāji to izmantos.

Katrai tulkošanas pieejai ir savas priekšrocības. Populārākās programmēšanas valodas, piemēram, C++, Python un Java, izmanto dažādas tulkošanas metodes. Līdzās valodas paradigmai tās tulkošanas metode ir viena no vissvarīgākajām iezīmēm, kas jums jāzina.

Ir vairākas paradigmas, kuras var izmantot programmēšanas valoda. Lielākā daļa populārāko programmēšanas valodu ir vairāku paradigmu valodas; tie atbalsta divu vai vairāku atšķirīgu paradigmu izmantošanu. Trīs no populārākajām paradigmām ir obligāta, uz objektu orientēta un funkcionāla programmēšana.