Vardai programavimo kalbose   

 

Vardai programavimo kalbose


Gintautas Grigas

Programavimo kalbos gyvuoja ilgiau, negu kompiuteriai. Programas dar teberašome Paskaliu, arba C kalba, nors joms jau apie 30 metų. Nors ir lėtai, bet metams bėgant sensta ir programavimo kalbos, atsinešdamos savo laikmečio ribojimus. Vienas tokių ribojimų yra raidžių aibė vardams sudaryti. Dar nemažai programavimo kalbų didžiąsias raides laiko lygiavertėmis mažosioms. Šis ribojimas mena tuos senus laikus, kai vienam simboliui buvo skiriami 6 bitai, t.y. kompiuterio abėcėlė turėjo tik 64 ženklus. Aišku, kad į ją galėjo tilpti tik didžiosios arba tik mažosios raidės. Bet tada ir tokia abėcėlė buvo didelis dalykas – atsirado galimybė kompiuterį naudoti ne tik skaičiavimams.

Kitas ribojimas, kad vartojamos tik 26 pagrindinės lotyniškosios abėcėlės raidės, yra kodavimo 7 bitais reliktas. Geras programavimo stilius reikalauja, kad vardai programoje būtų parinkti taip, kad atspindėtų jais pažymėtų objektų (kintamųjų, duomenų tipų, procedūrų) prasmę. Amerikiečiams ir anglams pakanka 26 raidžių. O kaip prasmingus vardus parinkti lietuviams, jeigu trūksta 9 raidžių, latviams 12, o rusams visų 32 raidžių?

Programavimo kalbų semantika neapibrėžia raidžių prasmės. Raidės tarnauja tik kaip „statybinė madžiaga“ sudaryti vardams, kurie jau turi semantiką, bet nepriklausomą nuo vardą sudarančių simbolių. Dėl to teoriškai raidžių aibė programavimo kalbai nėra svarbi ir ją galima parinkti tokią, kokia yra kompiuteryje.

Greičiausiai prie šiuolaikinių kompiuterių su 8 bitų kodavimu prisitaikė Logo kalba. Jos programų varduose vartojamos visos tos kalbos raidės, kuriai parašytas arba į kurią išverstas transliatorius. Tuo tarpu daugumoje profesionalių programavimo kalbų dar tebėra 26 raidžių ribojimas. Tai galima paaiškinti tuo, kad jose stengiamasi išlaikyti suderinamumą su ankstesnėmis tų kalbų versijomis. Tačiau padėtis keičiasi. Tam, kad būtų galima turėti pilnavertę abėcėlę nenusižengiant galiojantiems kalbos standartams (liaudiškai tariant, kad vilkas būtų sotus ir avis sveika), į naujas programavimo kalbų (Paskalio, Modulos-2, Ados 95 ir kt.) standartų redakcijas įtraukiamas punktas, teigiantis, jog konkrečioje realizacijoje (transliatoriuje), simbolių aibę galima papildyti ir bus laikoma, kad realizacija suderinta su standartu. Reikia tik tokius papildymus apibrėžti kalbos (transliatoriaus) dokumentacijoje. Dar daugiau, leidžiama kalbą papildyti ne tik raidėmis, bet ir reikšmingais simboliais, t.y.; tokiais, kurie turi įtakos kalbos semantikai, pavyzdžiui, baziniais žodžiais.

Apie tai, kaip pritaikyti Turbo Paskalio transliatorių, kad jis varduose „suprastų“ visas lietuviškas ir latviškas raides, buvo rašyta ankstesniame „Kompiuterijos“ numeryje.

Aštuonių bitų kodavimą išnaudoja prieš keletą metų sukurtas Komponentinis Paskalis. Jo raidžių aibę, pateiktą oficialiame aprašyme, sudaro pagrindinės 26×2 lotyniškosios abėcėlės raidės ir 31×2 kitos lotyniškos abėcėlės raidės (su diakritiniais ženklais) kurių kodai yra iš intervalo nuo 192 iki 255, išskyrus dvi pozicijas, kurias užima du simboliai × ir ÷, įsiterpę tarp raidžių. Taip yra ir „gimtojoje“ Komponentinio Paskalio reasistemoje „Black Box“.

Dabar jau einama link Unikodo. Čia vienam simboliui koduoti skiriama 16 bitų ir į jį telpa visų pasaulio tautų kalbų raidės. Raidžių daug. Visų jų programavimo kalbos aprašyme neišvardysi. Kaip jų aibę tiksliai apibrėžti programavimo kalbos sintaksėje?

Paprasčiausiai problema sprendžiama Javoje. Vardams sudaryti gali būti vartojamos 26 pagrindinės didžiosios ir mažosios lotyniškos abėcėlės raidės, o taip pat visi simboliai, kurių kodai Unikode yra didesni už U+0080 (arba už dešimtainį 160). Tačiau čia yra ne tik raidės, bet ir daugybė kitokių ženklų (matematikos, grafikos ir įvairių kitokių). O jie nebūdingi vardams ir užuot palengvinę programos skaitymą, gali įnešti ir nereikalingos painiavos. Taigi sprendimas gana primityvus ir perdaug bendras. Matyt dėl to nepopuliarus.

Racionalesnis sprendimas priimtas Adoje 95. Jos standarte pasakyta, kad varduose vartojamos visos lotyniškosios abėcėlės raidės. Jų sąrašas būtų ilgas, todėl raidės neišvardijamos, o apibrėžiama, kad raide laikomas simbolis, kurio pavadinimas ISO/IEC 100646 standarto (Unikodo) angliškame variante prasideda žodžiais LATIN CAPITAL LETTER arba LATIN SMALL LETTER. Taigi vardai ženklas, Sigurd sson yra taisyklingi. Tuo tarpu vardai имя, ð – netaisyklingi, kadangi juose vartojamos ne lotyniškos abėcėlės raidės.

Raidėmis iš kitokių abėcėlių (pvz., kirilicos, graikų, arabų, hebrajų, kinų) Adą 95 galima tik papildyti anksčiau minėtu būdu.

Raidžių aibės nustatymas pagal raidžių pavadinimus teoriškai aiškus, bet kaip jį realizuoti transliatoriuje?

Su panašiomis problemomis susiduria ir daugelis kitų tekstus apdorojančių programų. Todėl jos sprendžiamos sistemingai: Unikodas pateikia lenteles su užkoduotomis simbolių savybėmis. Belieka tik jomis pasinaudoti.

Norint išlaikyti vienodą vardų sudarymo sistemą įvairiose programavimo kalbose, reikia bendrų susitarimų. Tuo pasirūpinta pačiame Unikode. Jame apibrėžtos vardų sintaksės taisyklės. Vardas gali prasidėti abėcėlės simboliu arba hieroglifu. Abėcėlės simbolis – tai bet kurios kalbos raidė, dviraidis, ligatūra bei jų kontekstiniai variantai (pvz., graikiška sigma, kuri žodžio viduryje ir pabaigoje žymima skirtingo pavidalo simboliais), raidžių modifikatoriai, tam tikra grupė į raides panašių simbolių, turinčių raidžių atitikmenis (pvz, omo simbolis elektrotechnikoje) ir kai kurie kiti simboliai.

Tolesni vardo simboliai gali būti tokie, kaip ir pradžioje, o taip pat skaitmenys, pabraukimo brūkšnys (jie vartojami ir dabar), kombinuojamieji simboliai (tai vietos neužimantys diakritiniai ženklai, vartojami raidėms, kurių nėra Unikode, išreikšti, pavyzdžiui, raidė Ą su riestiniu kirčiu išreiškiama raidės Ą ir kombinuojamos tildės ~ pora Ą~), kėlusis tarpas (U+FEFF), pagalbiniai rašto ženklai (daugiausia jų turi japonų kalba).

Paveiksle matome keletą Unikodo taisykles atitinkančių vardų.

Be to vardo viduje gali būti formatavimo simbolių (pvz., nurodančių rašymo kryptį). Jie, panašiai kaip ir komentarai, ignoruojami.

Simbolių gausa ir įvairovė atveria naujas galimybes programų rašytojams. Bet ar nesukels problemų transliatorių autoriams?

Didelių problemų neturėtų būti, kadangi čia panaudojamos simbolius klasifikuojančios savybės, formaliai ir vienareikšmiškai gaunamos iš minėtų Unikodo lentelių, kurias jau turi operacinės sistemos, nes tokios lentelės reikalingos daugeliui programų, apdorojančių Unikodo tekstus. 

Kompiuterija, 6, 2000, 30

Į turinį

Į viršų

 

 


Rašykite mums  info@likit.lt
Atnaujinta 2001.12.15 .