1.4.2 Lausekielet

Ohjelmoinnin helpottamiseksi on kehitetty korkeamman tason ohjelmointikieliä eli niin sanottuja lausekieliä. Ne tarjoavat käyttäjälle tehokkaamman tavan esittää haluamansa toiminta (vähemmän kirjoittamista), ovat muodoltaan lähempänä tavallista kieltä (englanti) ja antavat ohjelmoijalle enemmän valinnan mahdollisuuksia. Ensimmäinen lausekieli oli FORTRAN ja muita tunnetuimpia ovat BASIC, PASCAL, COBOL, ADA, C ja C++.

Lausekielissä käytetään myös symboleja toimintojen osoittamiseen. Niissä symbolit käskyjen merkitsemiseen ovat kuitenkin selkeämpiä ja erityisesti käskyvalikoima on laajempi (symbolit ovat tavallisesti tekstimuotoisia sanoja). Kun Assembler-kielessä yksi käsky käännetään melko suoraan yhdeksi konekieliseksi käskyksi, tuottaa lausekielen käskyn (lauseen) kääntäminen suuren joukon konekielisiä käskyjä. Ohjelmoijan työtä tämä helpottaa huomattavasti: yksi kirjoitettu lause vastaa joukkoa koneella suoritettavia käskyjä. Lausekielten kääntäjät ovatkin monimutkaisia ja suuria ohjelmia. Kääntäjän tulee kyetä tulkitsemaan yksikäsitteisesti ohjelmointikielellä kirjoitettu ohjelma. Tämän takia ohjelmointikielen rakenteet, käsitteet ja toiminta on pyrittävä määrittelemään täsmällisesti.

Merkittävää on myös lausekielisen ohjelmatekstin siirrettävyys. Konekielinen tai Assembler-kielinen ohjelma on tehty käyttäen tietyn prosessorin käskykantaa. Täten ohjelman siirto toisenlaiselle prosessorille ei onnistu. Lausekielillä tehdyt ohjelmat voidaan sen sijaan usein siirtää toiselle prosessorille kääntämällä ne uudelleen. Lausekieliä on pyritty standardoimaan, jotta erilaisten koneiden (eri prosessoreiden) kääntäjät ymmärtäisivät mahdollisimman samanlaista kirjoitettua ohjelmaa. Tavoitteena siis olisi, että yhdellä koneella kirjoitettu C++-ohjelma (esimerkiksi) voidaan kääntää suoraan ilman muutostarpeita myös muiden koneiden vastaavilla C++-kääntäjillä.

Lausekielellä tehtyä ohjelmaa on melko helppo lukea, varsinkin jos ohjelman kirjoittaja on huomioinut luettavuuden vaatimukset ohjelmaa kirjoittaessaan. Toki lukijan täytyy tuntea ko. ohjelmointikieli ja sen syntaksi (= kielen rakenteet ja komennot, "kielioppi"). Ohjelman lukeminen onkin ohjelmointityössä melko tavallista (eli välttämätöntä). Ohjelma sisältää yleensä kehittelyvaiheessa mitä moninaisimpia virheitä. Siksi selkeästi kirjoitettu ohjelma on aina myös tekijälle itselleen miellyttävämpi kokemus.

Symbolisen konekielen käskykanta on melkoisen suppea ja käytettävästä laitteistosta riippuva. Tästä syystä on kehitetty korkeamman tason ohjelmointikieliä eli ns. lausekieliä: FORTRAN, BASIC, PASCAL, C, C++, jne.

Lausekielissä käytetään symboleja sekä käskyjä, lauseita, jotka kääntäjä (tai tulkki) muuntaa joukoksi konekielisiä käskyjä.
Lausekielisiä ohjelmia on helppo lukea, jos ohjelma on asianmukaisesti kirjoitettu. Tietenkin lukeminen edellyttää kyseisen kielen hallintaa.
Lausekielet ovat riippumattomia kulloinkin käytettävän prosessorin käskykannasta. Käskykannan komennoista huolehtii kääntäjä.

Jos ohjelma on suuri, jaetaan se tavallisesti osiin, moduleihin. Käytännössä tämä tarkoittaa ohjelman kirjoittamista useaan tiedostoon (1 moduli = 1 tiedosto). Moduleita on pienemmän kokonsa vuoksi helpompi käsitellä ja tarkastaa. Mahdolliset virhekohdat löytyvät nopeammin. Modulit käännetään toisistaan riippumatta. Nämä käännetyt osaset yhdistetään ohjelmaksi linkittäjällä. Usein ohjelmoinnissa käytetään myös valmiita moduuleja, jotka on koottu aliohjelmakirjastoihin. Myös nämä täytyy tarvittaessa liittää mukaan ohjelmaan. Linkittäjä suorittaa tämän liittämisen.

Linkittäjä saa syöttötietona käännetyt modulit (tai modulin), yhdistää ne ja liittää mukaan tarvittavat aliohjelmakirjastot. Tuloksena linkittäjä muodostaa suorituskelpoisen ohjelman, jonka se tallentaa tiedostoon.

Ohjelman lähdekoodin kääntäminen ja linkittäminen suoritettavaksi ohjelmaksi on yleisin tapa ohjelman muodostamiseen. Toinen käytetty tapa on ohjelman tulkkaaminen. Siinä lähdekoodista ei tehdä valmista suoritettavaa ohjelmaa, vaan koodin tulkitseminen suoritetaan aina ohjelmaa ajettaessa. Tulkkiohjelmalle annetaan lähdekoodi, jonka se muuntaa lause kerrallaan konekielisiksi käskyiksi ja suorittaa samantien käännetyn lauseen. Näin jatketaan, kunnes koko ohjelma on ajettu. Tulkin avulla suoritettavat ohjelmat toimivat hitaammin kuin valmiiksi käännetyt ohjelmat (luonnollisestikin, koska tavallaan "kääntäminen" tapahtuu suoritusvaiheen aikana). Esimerkiksi mikrojen BASIC-kieli on usein tulkki eikä kääntäjä.