[ edellinen ] [ Sisällys ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ seuraava ]


Ohjelmoinnin alkeet: Vastauksia usein esitettyihin kysymyksiin
Luku 2 - Ohjelmoinnin opettelemisesta



2.1 Ensimmäinen ohjelmointikieli

Kysymys siitä, millä ohjelmointikielellä kannattaisi aloittaa ohjemoinnin opettelu, on oikeastaan mielipideasia; jokaisella on oma mielipiteensä siitä. Esitän (AJK) tässä oman näkemykseni, ja pyydän muita kokeneita ohjelmoijia - ja erityisesti ohjelmoinnin opettajia - kirjoittamaan oman mielipiteensä ja lähettämään sen minulle, jotta voisin esittää tässä kirjoitelmassa mahdollisimman monipuolisen vastauksen kysymykseen.

Ensimmäisen ohjelmointikielen valinnalla ei yleensä ole maata järisyttävää merkitystä, mikäli opettelija aikoo käydä opintien loppuun asti eli ruveta ammattimaiseksi tai vakavasti harrastavaksi ohjelmoijaksi. Tällainen ihminen nimittäin kyllä ennemmin tai myöhemmin joutuu opettelemaan suurimman osan yleisessä käytössä olevista ohjelmointikielistä. Tärkeintä ohjelmoinnin opettelemisessa on tällaisen ihmisen kannalta ajattelutapojen ja ongelmanratkaisun oppiminen, ja suurin osa nykyisin käytössä olevista ohjelmointikielistä kyllä mahdollistavat tämän. Mikäli opettelijalla ei kuitenkaan ole näin voimakasta kunnianhimoa, kielen valinnalla on suurempi merkitys.

Sanoin äsken, että tosissaan ohjelmointia harrastava ihminen joutuu opettelemaan ennemmin tai myöhemmin kaikki yleisessä käytössä olevat kielet. Tätä ei pidä pelästyä: yleensä ensimmäinen kieli on kaikista vaikein, sillä sitä opetellessa joutuu samalla oppimaan myös ohjelmoimaan - ja ohjelmointihan on kaikkea muuta kuin kielen yksityiskohtien osaamista. Annanpa esimerkin itsestäni. Ensimmäisen kieleni opettelin joskus 1990-luvun alkussa. Minulla kesti kauan, ennen kuin opin tekemään sillä jotain hyödyllistä. Syksyllä 1998 opettelin Python-kielen muutamassa päivässä samalle tasolle, jonne pääseminen ensimmäisellä kielelläni kesti vuosia; python taisi olla minulle viides kieli, jonka opettelin kunnolla. Voin vain toistaa itseäni ja sanoa: kielet helpponevat sitä mukaa kun ohjelmointikokemus karttuu.

Väitän, että BASIC-kieli sellaisena kuin se esiintyy 1980-luvulla yleisesti käytetyissä kotitietokoneissa (esim. Commodore 64, Sinclair Spectrum ja varhaiset IBM PC -yhteensopivat tietokoneet), on täysin sopimaton aloittelevalle ohjelmoijalle. Kielestä puuttuvat nimittäin kaikki hyvää ohjelmointityyliä tukevat ominaisuudet, ja tämän mikrobasictaustan omaava ohjelmoija joutuu ennemmin tai myöhemmin opettelemaan pois tämän kielen tuomista pahoista tavoista, mikä ei ole ollenkaan helppo homma. Vastaava ongelma on kaikilla konekielillä. Nykyisin käytössä olevat BASIC-murteet ovat jo käyttökelpoisempia.

Hyviä aloituskieliä ovat Scheme, Python, Prolog, Java, Pascal ja C++. Muitakin kelpo kieliä on. Käsittelen nyt kutakin nimeltä mainitsemaani kieltä erikseen.

Scheme

Scheme on 1970-luvulta peräisin oleva kieli, jota käytetään nykyisin varsin paljon korkeakouluissa ja yliopistoissa ensimmäisenä opetuskielenä - esimerkiksi Teknillisen korkeakoulun pääaineopiskelijoilla Scheme on pakollinen ensimmäinen ohjelmointikieli. Kielessä on hyvin vähän opeteltavia yksityiskohtia, ja siksipä Schemeä käytettäessä päästään nopeasti käsiksi tärkeämpiin asioihin. Scheme kuuluu epäpuhtaiden funktionaalisten kielten luokkaan, minkä vuoksi joillakin on sitä kohtaan turhia ennakkoluuloja. Mikäli minua pyydettäisiin suosittelemaan ohjelmoinnista tosissaan kiinnostuneelle aloittelijalle jotain kieltä ensimmäiseksi ohjelmointikieleksi, suosittelisin Schemeä.

Scheme-materiaalia on verkossa varsin paljon, lähinnä englanniksi. Hyviä aloituspaikkoja ovat Schemers.org ja suomalainen vaan ei suomenkielinen Schememonster's friends. Schemeä käyttäviä, aloittelevalle ohjelmoijalle sopivia kirjoja on myös, lähinnä englanniksi.

Python

Python on Schemeä huomattavasti nuorempi ohjelmointikieli. Pythonin kielioppi on johdonmukainen ja sisältää vähän opeteltavia yksityiskohtia. Kieli tarjoaa runsaasti valmiita työkaluja monien käytännön ohjelmointiongelmien ratkaisemiseen nopeasti ja vähällä kirjoittamisella. Tämän vuoksi se sopii hyvin sellaiselle aloittelevalle ohjelmoijalle, joka haluaa saada nopeasti hyvin toimivia ohjelmia aikaiseksi. Pythonin pahin ongelma on se, ettei siitä ole olemassa kunnollista kirjallista materiaalia aloittelevan ohjelmoijan käyttöön.

Kaikki olennainen Pythonista on luettavissa kielen seittisivustolta.

Prolog

Prolog on varsin omintakeinen ohjelmointikieli. Se perustuu muodolliseen logiikkaan ja päättelysääntöihin: kun Prologille kerrotaan, että Matti on Maijan poika, Mikko on Matin poika ja pojan poika on pojanpoika, niin Prolog osaa vastata kysymykseen "Onko Mikko Maijan pojanpoika?" oikein. Prolog poikkeaa muista kielistä siinä, että vain Prologissa tämä ongelma voidaan esittää suurin piirtein yhtä yksinkertaisesti kuin suomen kielessä. Prolog on hyvä kieli sellaiselle, jota kiinnostavat älylliset pelit ja kielelliset ongelmat.

Prolog-materiaalia on netissä, mm. Prolog Programming A First Course, A Short Tutorial on Prolog ja suomeksi Keskeneräisiä harjoituksia Prolog-ohjelmointikieleen tutustumiseksi.

Heikki Kantola on suositellut seuraavia Prolog-kirjoja: W.F. Clocksin, C.S. Mellish: ''Programming in Prolog'', L. Sterling, E. Shapiro: ''The Art of Prolog'' ja F. Pereira, S. Shieber: ''Prolog and Natural-Language Analysis''.

Java

Java on eri asia kuin seittisivuilla varsin usein nähtävä Javascript. Java on hyvin uusi mutta lupaavalta näyttävä ohjelmointikieli, joka on sukulaistaan C++:aa huomattavasti ystävällisempi käyttäjäänsä kohtaan. Kielen soveltuvuudesta aloittelijalle kertoo jotain se, että Helsingin yliopiston Tietojenkäsittelytieteen laitos käyttää Javaa ensimmäisenä opetuskielenään.

Helsingin yliopistossa aloitteleville ohjelmoijille pidettävää Java-kurssia luennoiva Arto Wikla on kirjoittanut kurssin luentomateriaalin pohjalta kelpo kirjan (Arto Wikla: Ohjelmoinnin perusteet Java-kielellä, OtaDATA 1998), joka sopii aloittavalle ohjelmoijalle. Yksityiseen käyttöön on saatavilla kirjan kanssa samaan materiaaliin perustuva seittisivusto, jota Wikla käyttää Java-kurssinsa kurssimateriaalina ja joka siksi soveltuu hyvin aloittelevan ohjelmoijan luettavaksi.

Pascal

Pascal on kehitettiin 1970-luvulla opetuskieleksi. Sitä käytettiinkin paljon opetuksessa pitkälle 1990-luvulle asti. Alkuperäisessä ja standardoidussa muodossaan kieli on kuitenkin aivan liian rajoittunut eikä sillä voi tehdä mitään todellisia ohjelmia. Sittemmin erityisesti entinen Borland, nykyinen Inprise on kunnostautunut Turbo Pascal ja Delphi-murteillaan niin, että nämä Pascaliin perustuvat ohjelmointikielet ovat DOS- ja Windows-ohjelmoijien laajassa suosiossa. Ihmiselle, joka aikoo opetella vain yhden kielen ja joka käyttää DOSia tai Windowsia, Turbo Pascal ja Delphi ovat oikein hyviä ohjelmointikieliä.

Jori Mäntysalo on kirjoittanut perusteluja sille miksi pascal sopii ohjelmoinnin opiskeluun.

Seitistä löytyy pascal-opas.

C++

C++ on kulttikieli, siitä ei pääse yli eikä ympäri. Se perustuu toiseen kulttikieleen nimeltä C, joka kehitettiin 1970-luvulla konekielen korvaajaksi käyttöjärjestelmäohjelmointikäyttöön. C++ on järkyttävän iso kieli, ja sen kaikkien yksityiskohtien muistaminen on käytännössä mahdotonta. Kaikesta huolimatta sekä C:tä että C++:aa opetetaan aloitteleville ohjelmoijille monissa yliopistoissa ja korkeakouluissa (Jyväskylän yliopisto yhtenä esimerkkinä). Itseopiskelijalle C++ on luultavasti liian hankala ensimmäiseksi kieleksi.

C++-kirjallisuutta on myynnissä uskomattomia määriä. Monetkaan kirjat eivät ole kovin kaksisia, ja asiavirheet eivät ole tavattomia. Aloittelijalle hyvä kirja lienee Jesse Libertyn ''Opeta itsellesi C++'' (alkuteos ''Teach Yourself C++ Programming in 21 Days''), vaikka sekään ei ole virheetön.

Netistä löytyy myös C++-opas, joka kevyestä kirjoitustyylistään huolimatta sisältää painavaa asiaa.


2.2 Kumpi opetella ensin: C vai C++?

Mikäli et tunne kumpaakaan kieltä ennestään ja sinulla on mahdollisuus valita, opettele ensin C++. Näin et joudu oppimaan eräitä pahoja tapoja, jotka C:ssä tarvitaan kielen suppeuden vuoksi; jos joskus joudut tekemään C-ohjelmia, nämä kiertoreitit on opittavissa varsin helposti C++-taustalla. Asiaa käsittelee myös C++-FAQ Lite, kysymys 28.2.


[ edellinen ] [ Sisällys ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ seuraava ]


Ohjelmoinnin alkeet: Vastauksia usein esitettyihin kysymyksiin

$Revision: 1.49 $ $Date: 2004/09/29 06:20:02 $

Juha Autero jautero@iki.fi
Antti-Juhani Kaijanaho gaia@iki.fi
Jori Mäntysalo jm58660@uta.fi