Ohjelmointikielet

Konekieli ja assembler

Aikojen alussa tietokoneet ohjelmointiin konekielellä (machine code). Konekieli on se kieli, jota tietokone ymmärtää. iX86-piirisarjan koneiden konekieli siis eroaa vaikkapa Sunin SPARCien konekielestä. Konekieliset käskyt ovat vain nollista ja ykkösistä koostuvia (2n, yleensä 8, 16 tai nykyään varsinkin 32 bittiä pitkiä) jonoja. Ensimmäinen askel käskyjen abstrahoimisessa oli nollien ja ykkösten korvaaminen helpommin muistettavilla nimillä. Assemblerin tehtävä oli sitten korvata nämä nimet nollilla ja ykkösillä. Myös assemblerin käskyt ovat siis koneesta eli prosessorin piirisarjasta riippuvaisia. Assemblerilla koodin kirjoittaminen hidasta (ja kallista), mutta hyvin ohjelmoidut ohjelmat ovat vastaavasti tehokkaita. Nykyäänkin monien ohjelmien keskeiset (usein kutsutut) osat on kirjoitettu konekielellä maksimaalisen tehokkuuden varmistamiseksi. Konekieltä ja assembler-koodia kutsutaan matalan tason ohjelmointikieliksi.

Kehittyneemmät ohjelmointikielet

Korkean tason ohjelmointikielissä konekieliset käskyt on korvattu ohjelmointikielen määritelmän mukaisilla käskyillä, jotka tulkataan yhdeksi tai useammaksi konekielitason käskyksi. Kääntäjä (compiler) muuttaa ohjelmointikieliset ohjelmat konekielelle. Ohjelmointikielet eivät ole riippuvaisia käytetystä piirisarjasta, riittää kun kullekin keskusyksikölle on kirjoitettu oma kääntäjänsä. Korkean ja matalan tason ohjelmointikielen välinen ero on siis alustasidonnaisuudessa. Ensimmäiset kääntäjät on tietenkin kirjoitettu konekielellä, mutta nykyään kääntäjätkin tehdään korkean tason ohjelmointikielillä. Korkean tason ohjelmointikielten tehtävänä on abstrahoida ohjelmointi mahdollisimman kauas käytetystä tekniikasta. Yleensä ohjelmointikielistä puhuttaessa tarkoitetaan vain korkean tason ohjelmointikieliä.

Täydellinen ohjelmointikieli on sellainen kieli, jolla voi kirjoittaa minkä tahansa muun ohjelmointoikielen. Täydellisillä ohjelmointikielillä on siis yhtäläinen kuvausvoima, mutta tietyt kielet soveltuvat paremmin tiettyihin tehtäviin kuin toiset. (Tarvitaan vähemmän koodia tehtävän tekemiseen, toimii nopeammin tms.) Esimerkiksi Perlillä on sangen helppoa ja nopeaa muokata merkkijonoja.

Osa ohjelmointikielistä käännetään ennen ohjelman suoritusta (esim. C), jolloin konekielinen ohjelma on etukäteen valmiina odottamassa ajamistaan. Osa käännetään ajon aikana, eli ohjelmakoodi käännetään ohjelman suorituksen yhteydessä (esim. basic, Perl). Lisäksi on näiden välimuotoja: ainakin java-koodi käännetään etukäteen bittikoodiksi, joka ei ole konekieltä. Ohjelma suoritetaan java-tulkin tulkitessa tätä bittikoodia. Bittikoodin kääntäminen konekielelle sujuu lähdekoodia nopeammin ja se on siirrettävissä (ainakin samanversioisten) eri java-tulkkien välillä alustalta toiselle. Niinpä se soveltuu esim. www-hömppään.

Imperatiiviset ohjelmointikielet

Imperatiiviset (eli deklaratiiviset tai ainakin sinnepäin) ohjelmointikielissä ohjelmoija kertoo konekielen tapaan käsky kerrallaan mitä hän haluaa ohjelman tekevän. Ensimmäinen ohjelmointikieli, Fortran (50-luku), on imperatiivinen kieli. Olio-ohjelmointikielet perustuvat useimmiten imperatiivisiin kieliin (C++).

C-kieli kehitettiin Unix-ympäristössä tapahtuvaa ohjelmointia varten 70-luvun alussa. Pian Unix-käyttöjärjestelmänkin kirjoitettiin uudelleen C-kielellä. Nykyään C-kieli on eniten eri ympäristöihin levinnyt ohjelmointi- kieli.

Larry Wall kehitti Perl-kielen Unix-ympäristössä C-kielellä. C-kielisyyden ansiosta Perl on siirrettävissä periaatteessa kaikkialle mihin C:kin on siirretty. Siksi Perl on yksi levinneimmistä ohjelmintikielistä.

Funktionaaliset ohjelmointikielet

Frequently Asked Questions for comp.lang.functional määrittelee funktionaaliset ohjelmointikielet seuraavasti:

Functional programming is a style of programming that emphasizes the evaluation of expressions, rather than execution of commands. The expressions in these language are formed by using functions to combine basic values. A functional language is a language that supports and encourages programming in a functional style.

Tyypillisiä funktionaalisia ohjelmointikieliä ovat Lispin eri murteet ja Haskell. Mutta kuten yllä todettiin kyse on myös ohjelmointityylistä eli siitä miten Perliä tai Lispiä sattuu kirjoittamaan.

Loogiset ohjelmointikielet eli tekoälykielet

Ohjelma koostuu joukosta sääntöjä, ja ohjelman ajo pyrkii todistamaan jonkun väittämän todenperäisyyden annettujen sääntöjen avulla. Lähinnä Prolog-kieli, jolla on helppo kirjoittaa pieniä jäsentimiä (kieliopin tarkistimia) (taipumattomille kielille), joten ko. kieli tulee kieliteknologeille tutuksi...

Linkkejä

[ Sisällysluettelo ]


nvolk@ling.helsinki.fi
Viimeksi päivitetty: