- Liittynyt
- 28.3.2003
- Viestejä
- 1 950
Kuinka oleellista tietotekniikkaa opiskellessa on hiffata käytännössä kaikkea termistöä ja teoriaa esim. käyttöliittymä, komponenttikirjasto tai miten koodi muutetaan konekielelle yms. ja opetella miten ne liittyy ohjelmointiin vai kannattaako aluksi vaan tehdä niitä yksinkertaisia tehtäviä?
Ensimmäisenä kannattaa ihan opetella silmukat, rekursiot yms. asiat. Tämä onnistuu parhaiten lukemalla joku tuollainen tietorakenteita ja algoritmeja käsittelevä kirja (kuten tuo Lafore) kunhan ensin jonkun kielen syntaksi on hallussa. Tämmöisen kirjan opettelu opettaa sitä ongelmanratkaisua, jota siis ohjelmointi pohjimmiltaan on. Parempi siis lähteä perusteista liikkeelle. Ei kukaan 4-jakoisella punttailuakaan aloita... ainakaan toivottavasti. ;)
Kääntäjäteknologian tunteminen ei ole kovin oleellista, mutta kääntäjän toiminnan tunteminen kyllä varmasti auttaa kirjoittamaan parempaa koodia. Kääntäjiä käsittelevissä kirjoissa käsitellään toisaalta usein työkaluja kuten lex ja yacc, jotka ovat suht hyödyllisiä tuntea. Näiden ymmärtäminen toisaalta vaatii sitten tietojenkäsittelyteorian tuntemista (ts. säännölliset kielet, äärelliset automaatit jne.). Tämä on jo sitten aika pitkälti matikkaa ja modernin kääntäjän ohjelmoiminen on jo sitä rakettitiedettä.
Tosiaan kun on oppinut jonkun ohjelmointikielen, niin tietojenkäsittely on pohjimmiltaan ymmärtää miten joku ongelma ratkaistaan tehokkaasti. Esimerkkinä voi vaikka ottaa korttipakan korttien järjestämisen maittain kasvavassa järjestyksessä. Tässä on esim. kaksi tapaa:
1. Otat pakan käteen ja käännät päältä kortin ja laitat sen pöydälle. Jatkat korttien kääntämistä ja lisäät seuraavan kortin aina oikeaan kohtaan pöydällä olevaan pakkaan. Kun olet kääntänyt pakasta kaikki kortit, niin pöydällä on pakka, jossa kortit järjestyksessä.
2. Heität kortit ilmaan ja keräät ne kasaan. Tarkastat onko pakka järjestetty. Jos ei, niin heität kortit uudestaan ilmaan ja jatkat.
Ei ole kovin vaikea keksiä kumpi tapa järjestää kortit nopeammin. Tietojenkäsittelyn ideana on keksiä systemaattisia nopeita tapoja suorittaa yksinkertaisia proseduureja. Tietojenkäsittelyn tutkimus on käytännössä keksiä nopein mahdollinen tapa suorittaa joku toiminto. Tietokoneohjelman teko on periaatteessa ongelman hajoittamista sellaisiin osiin, että osat ovat ratkaistavissa. Tässä on siis vaikeutena sekä osien tunnistaminen, että jokaisen erillisen osan määrittävän ongelman ratkaiseminen. Ensimmäinen opitaan yleensä kokemuksella kun taas toinen on sitä mitä ohjelmointikirjat opettaa...