Zema līmeņa programmēšanas valoda

Zema līmeņa programmēšanas valoda ir programmēšanas valoda, kas nodrošina mazu vai nekādu abstrakciju no datora instrukciju kopas arhitektūras, proti, zema līmeņa programmēšanas valodā rakstītās instrukcijas ir strukturāli līdzīgas noteiktā procesora instrukcijām. Faktiski var apgalvot, ka zemā līmeņa valodas ir "tuvāk" mašīnai, proti, datora aparatūrai, bet "tālāk" no cilvēka jeb šajā gadījumā - programmētāja. Zema līmeņa valodā rakstīto instrukciju izpildes laiks ir ļoti ātrs, kas ir viena no galvenajām šī līmeņa valodas priekšrocībām.[1] Papildus tam zemā līmenī izstrādātas datorprogrammas var darboties, izmantojot ļoti minimālu datora atmiņas daļu.[2]

Atšķirībā no augsta līmeņa programmēšanas valodām, kuras izmanto vairums programmētāju datorprogrammas izveides procesā, zemā līmeņa kods ir šifrēts un cilvēkam nav lasāms.[3] Tāpat zemā līmeņa valodā rakstīta koda izmanotjamība aprobežojas konkrētās ierīces piedāvātajā funkcionalitātē. Citiem vārdiem sakot, šādas programmas ir "nepārnesamas", jo tās ir optimizētas konkrētās ierīces sistēmas arhitektūrai.

Tajā brīdī, kad augstāka līmeņa valodā rakstītās instrukcijas tiek deleģētas datora aparatūras vienībām to izpildei, tiek izmantots specifisks komunikācijas veids, ko datorzinātnēs definē kā asemblera valodu jeb montāžas valodu. Zemā līmeņa valodām atšķirībā no augstā līmeņa programmēšanas valodām nav nepieciesams kompilators vai specializēts koda tulks, jo šajā gadījumā datora procesors spēj tiešā veidā nolasīt un atbilstoši interpretēt zemā līmeņa valodā rakstītās programmas.[4]

Datorzinātnēs zemā līmeņa valodu kritērijiem atbilst divas valodas. Par pirmās paaudzes valodām, kuru darbībai nav nepieciešamas papildus darbības kā komiplēšana vai interpretēšana, ir mašīnvalodas jeb mašīnkodi. Savukārt otrās paaudzes zemā līmeņa programmēšanas valoda tiek dēvēta par asamblervalodu. Otrās paaudzes valodā ir integrētas tādas pašas instrukcijas kā mašīnkodā, bet atšķirībā no mašīnkoda, asamblervalodas sintaksē instrukcijas un mainīgie tiek definēti izmantojot arī vārdu simbolus jeb īsas abreviatūras, piemēram, "Add", "sub", "Mul" u.c. attiecīgi saskaitīšanas, atņemšanas un reizināšanas darbību izpildei, ne tikai bināros ciparus.[5]

Zemā līmeņa programmēšanas valodas tiek izmantotas ikreiz, kad augstā līmeņa programmēšanas valodās kā PHP, #C u.c. izstrādātās lietojumprogrammas darbojas, pārvalda un maina datora aparatūru un instrukciju kopas arhitektūru. Avota kods var tikt sagatavots, izmantojot vienkāršu teksta redaktoru vai integrēto izstrādes vidi (IDE), piemēram, programmēšanas valodai Java pielāgoto Eclipse vidi. Datora procesors nespēj atpazīt programmas izstrādātajā sagatavoto avota kodu tiešā veidā, tāpēc pēc tā izstrādes avota kods tiek kompilēts zemā līmeņa valodas skriptā.[6] Augstā līmeņa valodā izstrādātas programmas tiek tulkotas mašīnkodā, izmantojot kompilētāju vai interpretētāju, bet asemblervalodas gadījumā - asembleru.[7]

Mašīnkods labot šo sadaļu

Mašīnkods ir instrukciju kopums, ko centrālais procesors saprot tieši un var rīkoties saskaņā ar to. Programma, kas rakstīta mašīnkodā, sastāv tikai no 0 un 1 — binārajiem cipariem. To ir ļoti grūti uzrakstīt un atkļūdot (angļu val. debug). Pat ļoti vienkāršā programmā var būt tūkstošiem 0 un 1.[8]

Piemēram, lai datorsistēmā ierakstītu skaitli 120, tā attēlojums ir mašīnkodā jeb binārajā izteiksmē ir 1111000. Šī iemesla dēļ to ir ļoti grūti iemācīties. Lai pārvarētu šo problēmu, tika izgudrota asamblervaloda.[9]

Galvenās mašīnkoda priekšrocības ir ātrums un tiešā piekļuve datora aparatūrai. Savukārt galvenie mašīnkoda trūkumi ir uzskaitīti zemāk[10]:

  1. Kods ir atkarīgs no konkrētas ierīce, piesaistīts tās funkcionalitātei;
  2. Kodu ir grūti izstrādāt;
  3. Augsts kļūdas līmenis, rakstot programmu šajā valodā;
  4. Kodu ir grūti modificēt.

Teksta "Hello World" (latviešu val. "Sveika Pasaule") izteiksme mašīnkodā ir[11]:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Asemblervaloda labot šo sadaļu

Asamblervalodas sintakse satur dažas cilvēkam lasāmas komandas, piemēram, īsas abreviatūras, kas atšķirībā no mašīnkoda padara to vieglāk rakstāmu un saprotamu cilvēkam. Tā kā datori var saprast instrukcijas tikai zemā līmeņa programmēšanas valodā, ir nepieciešams specializēts "tulks", kas pārvērš asamblervalodā izstrādātu kodu mašīnkodā. "Tulkotāju", ko izmanto šim nolūkam, sauc par asambleri. Asamblervalodā rakstītā koda izpildes ātrums ir mazāks par mašīnkodu, jo tam ir lielāks abstrakcijas līmenis jeb asamblervaloda programmēšanas valodu hierarhijā atrodas tālāk no datora aparatūras. Savukārt mašīnkodam ir nulles abstrakcijas līmenis.[12]

Augstā līmeņa programmēšanas valodās instrukciju veidošanai tiek izmantoti izteikumi (angļu val. statements), bet asamblervalodā tās ir īsas abreviatūras angļu valodā, kuras paredz konkrētas darbības[13]:

Abreviatūras Darbības
LDA Ielādē vērtību no datora atmiņas adreses
STA Saglabā vērtību datora atmiņas adresē
ADD Pievieno vērtību, kas atrodas datora atmiņas adresē, vērtībai, kas atrodas akumulātorā
SUB Atņem no akumulatora vērtību, kas atrodas datora atmiņa adresē
MOV Pārvieto vienas datora atmiņas adreses saturu uz citu

Galvenās asamblervalodas priekšrocības[14]:

  1. Salīdzinot ar mašīnkodu, viegli saprotama un lietojama;
  2. Salīdzinoši viegla koda labošana;
  3. Koda modificēšana ir iespējama.

Galvenie asamblervalodas trūkumi[15]:

  1. Kods ir atkarīgs no konkrētas ierīce, piesaistīts tās funkcionalitātei;
  2. Asamblervalodas lietošanai ir nepieciešamas padziļinātas datora paratūras zināšanas.
  1. mayankjtp. «Low Level Language in Computer». Tutorial And Example (en-US), 2019-07-28. Skatīts: 2021-12-19.
  2. «What is a Low-Level Language - javatpoint». www.javatpoint.com (angļu). Skatīts: 2021-12-19.
  3. «Low-Level Language Definition». techterms.com. Skatīts: 2021-12-19.
  4. «A Guide to Low Level Programming for Beginners». Course Report. Skatīts: 2021-12-19.
  5. «Difference Between Machine Language and Assembly Language». GeeksforGeeks (en-us). 2020-04-10. Skatīts: 2021-12-19.
  6. «Low-Level Language Definition». techterms.com. Skatīts: 2021-12-19.
  7. «What is Machine Language?». Webopedia (en-US). 1996-09-01. Skatīts: 2021-12-19.
  8. «Low-level languages - Types of programming language - AQA - GCSE Computer Science Revision - AQA». BBC Bitesize (en-GB). Skatīts: 2021-12-19.
  9. «Difference Between Machine Language and Assembly Language». GeeksforGeeks (en-us). 2020-04-10. Skatīts: 2021-12-19.
  10. mayankjtp. «Low Level Language in Computer». Tutorial And Example (en-US), 2019-07-28. Skatīts: 2021-12-19.
  11. «What is Machine Language?». www.computerhope.com (angļu). Skatīts: 2021-12-19.
  12. «Classification of Programming Languages: Low-Level and High-Level - javatpoint». www.javatpoint.com (angļu). Skatīts: 2021-12-19.
  13. «Low-level languages - Types of programming language - AQA - GCSE Computer Science Revision - AQA». BBC Bitesize (en-GB). Skatīts: 2021-12-19.
  14. mayankjtp. «Low Level Language in Computer». Tutorial And Example (en-US), 2019-07-28. Skatīts: 2021-12-19.
  15. mayankjtp. «Low Level Language in Computer». Tutorial And Example (en-US), 2019-07-28. Skatīts: 2021-12-19.