Ohjelmointikieli

Wikipedia
Loikkaa: valikkoon, hakuun

Ohjelmointikielet ovat formaaleja kieliä, joita ohjelmoijat käyttävät tietokoneen ohjelmointiin. Kullekin ohjelmointikielelle on olemassa joko kääntäjä, joka ennen ohjelman suoritusta muuntaa kirjoitetun ohjelman konekielelle tai jollekin välikielelle, tai tulkki, joka on ohjelmointikieltä ohjelman suorituksen aikana tulkitseva ohjelma. Nykyisin tulkin ja kääntäjän raja ei ole enää niin selkeä kuin esimerkiksi vielä 1980-luvulla.

Ohjelmointikielet ovat monin tavoin luonnollisten kielten kaltaisia. Niillä on oma sanastonsa ja kielioppisäännöstönsä; näistä kahdesta muodostuu kielen syntaksi eli lauseoppi. Niillä on myös looginen merkitys, jota kutsutaan semantiikaksi. Esimerkiksi lause "Koira puri luuta" on sekä syntaktisesti (lauseopillisesti) oikein että semanttisesti (merkitykseltään) mielekäs. Sen sijaan lause "Luu puri koiraa" on syntaktisesti oikein mutta semanttisesti epämielekäs. Vastaavasti ohjelmakoodin syntaktinen oikeellisuus, eli se, että kääntäjä kykenee kääntämään lähdekoodin konekieliseksi ei vielä tarkoita, että ohjelma toimii aiotulla tavalla.

Ohjelmointikielten kielentutkimus eli lingvistiikka on hyvin samankaltaista kuin luonnollistenkin kielten tutkimus. Toisaalta ohjelmointikielet ovat luonnollista kieltä huomattavasti yksinkertaisempia, muun muassa varattujen sanojen hyvin pienen lukumäärän vuoksi: tyypillisesti ohjelmointikielten sanasto on alle sata sanaa. Ohjelmointikielten kielioppisäännöt ovat paljon yksinkertaisempia kuin luonnollisten kielten, säännöt ovat yksikäsitteisiä, ja mielekkäitä vaihtoehtoisia ilmaisutapoja on rajallinen määrä. Esimerkiksi luonnollisen kielen ilmaisut kuten pienennä saldoa kymmenellä, vähennä 10 saldosta, ota kymmenen pois saldosta, aseta saldoksi kymmenen vähemmän jne tarkoittavat kaikki samaa ja ovat mielekkäitä, kun taas useimmilla ohjelmointikielillä asian voi ilmaista vain yhdellä tai kahdella tavalla, esim. "saldo -= 10;", tai "saldo = saldo-10;".

C-kielessä vaihtoehtoja on runsaasti, sillä kokonaislukumuuttujan arvoon voi lisätä yhden neljällä eri tavalla:

muuttuja = muuttuja + 1;
muuttuja += 1;
++muuttuja;
muuttuja++;

Erillisinä lauseina näiden merkitys on aivan sama eli muuttujan arvon kasvattaminen yhdellä, mutta lausekkeen osana viimeisen rivin merkitys poikkeaa aiemmista. Kolme ylintä palauttaa lausekkeen osana ollessaan muuttujan uuden arvon, kun alin palauttaa vanhan, vaikka kasvattaakin itse muuttujan arvoa.

Jos kielessä on monia vaihtoehtoisia toimintoja, kaikki ohjelmoijat eivät välttämättä tunne niistä kaikkia harvinaisempia ja voivat jättää käyttämättä tilanteeseen parhaiten sopivaa piirrettä.

Ohjelmointikieliä on suunniteltu lukuisiin eri tarkoituksiin ja niitä voi arvioida eri tavoilla. Tärkeitä tavoitteita ohjelmointikielen suunnittelussa ovat muun muassa luettavuus, kirjoitettavuus ja yleinen yksinkertaisuus - eli kuinka hyvin kerran kirjoitetusta ohjelmasta saa selvää joku muukin kuin alkuperäinen ohjelmoija. Toisissa kielissä painotetaan lähdekoodin selkeyttä (Java) ja toisissa ilmaisuvoimaa (Perl), jälkimmäisessä selkeyden kustannuksella. Tietokoneiden alkuaikoina ohjelmointikielten ja kääntäjien kehityksessä pääpaino oli tukea mahdollisimman tehokkaasti laiteresursseja hyödyntävän konekielen tuottamista (C), mutta noin 1970-luvulta alkaen ohjelmiston elinkaareen alettiin kiinnittää enemmän huomiota kun toimitettujen ohjelmien ylläpito alkoi nousta merkittäväksi kustannustekijäksi ja liiketoiminnaksi. Samalla kääntäjät kehittyivät niin tehokkaiksi, että lähdekoodin manuaalisen optimoinnin merkitys vähentyi, lukuun ottamatta nopeuskriittisiä reaaliaikasovelluksia, digitaalista signaalinkäsittelyä, laiteajureita ja usein ajettavia algoritmeja.

Eri kielten ominaisuudet eroavat toisistaan muun muassa kontrollirakenteiden, tietotyyppien, ilmaisuvoiman, abstraktiotason ja turvallisuuden suhteen. Turvallisuuteen kuuluvat muun muassa tyyppitarkistukset ja virhetilanteiden hallinta.

Ohjelmointikielten jaottelu[muokkaa | muokkaa wikitekstiä]

Ohjelmointikielet voidaan jaotella eri ryhmiin kielen paradigman ja toisaalta ohjelmointimallin mukaan:

  • Ohjelmointimalli
    • peräkkäinen
    • rinnakkainen

Ohjelmointikielten tarkka jaottelu on kuitenkin vaikeaa. Esimerkiksi C++ on hybridikieli, joka on toisaalta vahvasti proseduraalinen mutta myös oliopohjainen.

Ohjelmointikieliä[muokkaa | muokkaa wikitekstiä]

Alla olevassa listassa on joukko tunnetuimpia ohjelmointikieliä. Todellisuudessa niitä on satoja tai jopa tuhansia, mutta erityisesti teollisuudessa käytetään vain muutamaa kymmentä (jos johdannaisia ei lasketa mukaan).

Katso myös[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]

Sivustoja[muokkaa | muokkaa wikitekstiä]

Historiaa[muokkaa | muokkaa wikitekstiä]