Kuidas keelt kirjeldada?

Kuidas me tunneme ära, et sõnade jada "Kui Arno isaga koolimajja jõudis, olid tunnid juba alanud" on grammatiliselt korrektne lause ja arusaadav, kuid sõnade jadad "Kui isaga olid", "Arno tunnid juba", "isaga olid juba" ei ole, kuigi on esimese jada alamjadad – kui suurem (keerulisem) jada on lause ja arusaadav, siis võiks ka alamjadad olla, pealegi kui esimese jada sõnadest saab moodustada (mõnikord sõnade järjekorda veidi muutes) ka täiesti arusaadavaid ja esimese lause mõttele lähedasi lauseid: "Arno jõudis koolimajja", "tunnid olid alanud"?

Samasugune "mittejärjekindlus" avaldub ka matemaatilistes valemites  ja programmeerimiskeelte konstruktsioonides: "2+3*4" on korrektne valem, kuid "2+*4" pole; "for i=1 to 10 do x=x+1" on arusaadav, kuid "for to 10 x+1" pole. Kuidas, milliste tunnuste järgi õpivad lapsed näiliselt lihtsalt ja kiiresti moodustama lauseid ja kuidas peaks arvutile selgitama, millised on korrektsed valemid ja programmikäsud, millised mitte ja kuidas tuleb arvutada 2 + 3*3 ?

Sellistele küsimustele otsisid vastust nii loomulike keelte (eesti, inglise) uurijad kui ka esimeste programmeerimiskeelte loojad. Lingvist, matemaatik (ja tema poliitiliste arutluste tõttu "suurimaks praegu elavaks intellektuaaliks" nimetatud) Noam Chomsky jõudis loomulike keelte lausestruktuuri uurides järelduseni, et me moodustame laused (ja ka keele keerukamad struktuurid) nn genera­tiivsete asendusreeglite abil. Sellised reeglid võivad olla (näiteks):

Lause Aluserühm Verbirühm
Aluserühm Alus
Aluserühm Täiend Alus
Verbirühm Öeldis
Verbirühm Öeldis Määrus

s.t lause koosneb aluserühma ja öeldiserühma moodustavatest sõnadest (auto sõidab); aluserühm võib koosneda ainult alusest (auto), kuid selle ette võib lisada ka alust täpsemini kirjeldava täiendi (suur auto); verbirühm võib koosneda ainult öeldisest, kuid selle järel võib olla ka tegevust täpsemini kirjeldav määrus (sõidab kiiresti). Niimoodi lihtsa põhikonstruktsiooni (aluserühm öeldiserühm) osasid keerukamatega asendades moodustatakse kuitahes palju (s.t lõpmatu arv) kuitahes keerukaid lauseid: James Joyce’i romaanis "Ulysses" on 4391-sõnaline lause, tšehhi kirjaniku Bohumil Hrabali novellis on 13955-sõnaline lause, mõnel www-lehel arendatakse lauset kollektiivselt (kõik võivad juba olemasolevat lauset edasi arendada, nii et see kogu aeg kasvab ja kasvab) – ja me saame neist monstrumitest aru, kuitahes suured nad ka poleks.

Chomsky avaldas oma generatiivsete grammatikate teooria raamatus "Süntaksi­struktuurid"[] 1957. aastal. Samal ajal (1954–1957) tegeles firma IBM töörühm John Backuse juhtimisel esimese nüüdisaegse programmeerimiskeele FORTRAN (FORmula TRANslator – valemite tõlkija) loomisega. Nende põhiprobleem oli analoo­gi­line loomu­liku keele lausestruktuuri kirjeldamisega (kuid tunduvalt lihtsam!): kuidas selgi­tada arvutile, mis on matemaatiline valem? Kuni selle ajani pidid programmeerijad kirjeldama arvutusi ühe operatsiooni kaupa, s.t X=2+3*4 asemel tuli kirjutada umbes nii:

T1 = 2
T2 = 3
T2 = T2 * 4
X = T1 + T2

Matemaatiline valem võib olla kuitahes keerukas; valemis esinevate arve ja muutujaid võib asendada uute alamvalemitega – me saame sellest ikka aru. Selles suhtes on see analoogiline loomuliku keele lausega – ka siin võib alusele lisada täiendeid, öeldisele määrusi jne, kuid me suudame osade (lauseliikmete) tähenduse abil aru saada ka kogu lause tähendusest. See loomuliku keele tähtsain omadus, kompositsioonilisus – osade tähendusest selgub terviku tähendus. Matemaatilistel valemitel ja arvutiprogrammidel on sama omadus – (korrektselt koostatud) valemi või programmi tähendus, mõte (mida see peab tegema) selgub osade tähendusest. Fortrani loojate põhiprobleem oligi: kuidas selgi­tada arvutile, milline on korrektselt kirjutatud valemi struktuur ja kuidas peab valemi struk­tuuri põhjal valemi väärtuse välja arvutama. Hiljem on Backus iseloomus­tanud Fortrani loomise protsessi nii "Me ise ka ei teadnud, mida me tahame saavutada ja kuidas selleni jõuda. Kogu asi vaid kasvas... ". Kuid 1959. a esitas Backus järgmise programmeerimis­keele, Algoli kirjeldamiseks formalismi, mis on oma sisult täiesti ana­loogiline Chomsky esitatud lausestruktuuri kirjeldusega, näiteks arve ja liitmis-lahutamis­tehet kasutavate matemaatiliste valemite kirjeldus oleks selline:

valem arv
valem valem '+' arv
valem valem '-' arv
valem '(' valem ')'

s.t kõige lihtsam valem on lihtsalt üks arv; kui juba moodustatud valemile lisada + või -  -märgi järel veel üks arv või kui see valem sulgudesse võtta, saame taas valemi jne.
Algoli loomise töörühma teine liige, taani matemaatik Peter Naur modifitseeris ja lihtsustas veidi Backuse formalismi, sellepärast nimetatakse selliseid genereerimis­reegleid sageli Backus-Nauri valemiteks (BNF – Backus-Naur Formulas). Originaalkujul olid Backus-Nauri valemid veidi keerukama väljanägemisega:

<valem> ::= <arv>
<valem> ::= <valem> '+' <arv>
<valem> ::= <valem> '-' <arv>
<valem> ::= '(' <valem> ')'

Peagi saadi aru, et abimõistete (mitteterminalide) tähistamisel on vaid oluline, et nende kirjaviis erineks genereeritavas tekstis kasutatavate märkide (terminalide) kirjaviisist (kasutatakse näiteks mitteterminalide kirjutamist rasvaselt, suurtähtedega jne) ja reeglite parema ja vasaku poole vahel on nool nool arusaadavam kui ::= .
Ka mitteterminalide sisust arusaamine on täiustunud: praegu nähakse grammatiliste kategooriate (alus, aluserühm jne) peamist otstarvet informatsiooni kokkusurumises, kompressioonis. Nende (alateadvuslik) kasutamine võimaldab inimajul kõigi konkreetsete lausete vormi meelespidamise asemel kasutada vaid ühte üldist skeemi; näib, et aju jälgib siin nn minimaalse pikkusega kodeerimise (minimal description length) printsiipi.


Ülesandeid:
1. Sageli kasutatakse lauses aluse iseloomustamiseks mitut täiendit (ilus suur sinine auto) ja öeldise iseloomustamiseks mitut määrust (sõidab suure mürinaga kiiresti). Täienda esitatud eesti keele lihtlause struktuuri kirjeldust nii, et see võimaldaks kirjeldada ka selliseid lauseid.

Küsimused, probleemid: ©2004 Jaak Henno