OHJELMOINTIKIELISTÄ,
niiden nopeudesta ja muustakin.

Ohjelmointikieliä on ST:lle saatavissa yli 20 erilaista, joten 
                     
 valinnanvaraa riittää joka tarpeeseen.
                     
                     
                     
 Ohjelmointi ei ole kovin suuren käyttäjäkunnan harrastus. Yli puolet 
                     
 ST-Klubilaisista  ei sitä harrasta. Silti ei liene haitaksi tietää 
                     
 siitä jotakin, sillä jollakin ohjelmointikielellä ne käyttämäsi oh-
                     
 jelmat on tehty. Jonkinmoisesta ohjelmointitaidosta on usein hyötyä, 
                     
 kun pystyy ratkomaan pikku pulmia itse, eikä tarvitse turvautua 
                     
 'asiantuntijaan'.   
                     
                     
                     
 Testeistä:
                     
    Ulkomaisissa lehdissä on joskus kielten esittelyä ja nopeustes-
                     
    tejä. Ne ovat kuitenkin saman kielen eri 'murteiden' eli valmista-
                     
    jien vertailua tai eri koneiden basicien testejä. Minua kiinnosti 
                     
    eri kielten suorituskyky samassa koneessa, ja kun sitä eivät muut 
                     
    tutkineet, se piti tehdä itse. Pian havaitsin, että monet testioh-
                     
    jelmat ovat hyvin yksipuolisia, ja testin taitavasti valitsemalla 
                     
    saa lähes haluamansa lopputuloksen. 
                     
    Niinpä tein melkomoisen sarjan testejä, joista sitten 
                     
    sattumanvaraisesti valitsin vertailuun otettavat ohjelmanpätkät. 
                     
 1. Tutkin ensinnäkin tyhjän silmukan suoritusta, siis laskua nollasta 
                     
    miljoonaan. Se sujui ST:ltä noin kolmessa sekunnissa. 
                     
 2,3. Seuraavaksi testasin laskemista kokonaisluvuilla ja desimaalilu-
                     
    vuilla, molemmilla kaikki laskutavat. Laskutarkkuus eri kielillä 
                     
    vaihteli hieman, mutta hyväksyin sen aiheuttamat virheet.
                     
 4. Ehtolauseiden suoritus on ohjelmoinnin perusasioita, ja erilais-
                     
    ten IF-käskyjen valikoima kuului testiin.
                     
 5. Tekstitulostus ruutuun testattiin seuraavaksi.
                     
 6. Vielä minua kiinnosti ohjelman vaatima tila. Mammuttiohjelmia 
                     
    tekevät kielet eivät ole suosikkejani. Tämä tietysti voitiin 
                     
    mitata vain käänetyillä kielillä. Pienimmät ohjelmat olivat noin 
                     
    kolmekiloisia, mutta assemblerilla pääsi 300 byteen.
                     
    
                     
    Grafiikkatulostusta en kaikilla kielillä opetellut, joten se jäi 
                     
    testaamatta.
                     
                     
                     
    Seuraavassa taulukossa ajat on muutettu suhteellisiksi, siis tes-
                     
    tin nopeimman aika merkitään 1, ja esim 30 tarkoittaa sitä, että 
                     
    tältä kieleltä kului 30 sekuntia samaan operaatioon, jonka nopein 
                     
    teki sekunnissa. Laskutoimituksia kokonaisluvuilla parhaat laski-
                     
    jat suorittivat noin satatuhatta sekunnissa, kun taas  desimaali-
                     
    lukujen lasku on huomattavasti (yli 10x) hitaampaa.  
                     
                     
                     
   Kieli          |1-1000000|Kokonais-| desim. |  IF -  | teksti | koko |
                     
                  |         | luvut   | luvut  |lauseet |        |      |
                     
 ----------------------------------------------------------------------   
                     
 Turbo C          |    1        1         1.2      1        1.5     2.3
                     
 -----------------------------------------------------------------------
                     
 Modula-2 (TDI)   |    2        1.3       1        2        1.2     1 
                     
 -----------------------------------------------------------------------
                     
 C (Megamax)      |    1        1.3       3        1.3      1.5     2
                     
 -----------------------------------------------------------------------   
                     
 Pascal(Personal) |    3        1.5       2        3        1.5     1.7
                     
 -----------------------------------------------------------------------
                     
 Forth-ST         |    2        4         --       9        1.5    10
                     
 -----------------------------------------------------------------------
                     
 GFA-basic(Compil)|   12       13         1       15        1       1.3
                     
 -----------------------------------------------------------------------
                     
 GFA-basic(tulkki)|   30       33         2       40        1.1     --
                     
 -----------------------------------------------------------------------
                     
 ST-basic         |  200      250       ---      ---        ---    ---
                     
 -----------------------------------------------------------------------
                     
 Logo             | 1000     1000       ---      ---        ---    ---
                     
 -----------------------------------------------------------------------
                     
 Assembler        |  1-0.7      0.5     ---      ---      1.2-1     0.1
                     
 -----------------------------------------------------------------------
                     
                     
                     
 ST-basicin kokeilun lopetin, kun tulokset olivat jatkuvasti 200-300 
                     
    kertaa hitaampia kuin muilla. 
                     
 Logo ei todellakaan ole laskutoimituksiin tarkoitettu. Sen hitausker-
                     
    roin on suuruusluokkaa 1000.
                     
                     
                     
 ASSEMBLERin maine nopeana kielenä rapisi melkoisesti testin myötä. 
                     
    Heikohkolla taidollani, ja Metacomcon assylla sain esimerkiksi 
                     
   ^^ silmukan suorituksessa^^42  aluksi heikompia arvoja kuin C:llä tai 
                     
    Modulalla. Vasta koodin hiomisen jälkeen, kun käytin lyhyimpiä 
                     
    osoitusmuotoja ja hyppyjä, pääsin tasavertaiseen tulokseen. Se on 
                     
    siis taidosta kiinni. Jotenkin sen pystyy oppimaan, mutta on se 
                     
    vaikein näistä kielistä, pikkutarkkaa näpertelyä. Assembleria voi 
                     
    sisällyttää monien  muiden kielten sisään nopeutta vaativiin 
                     
    osiin. Siitä on paljon listauksia eri lehdissä. PD-assembler 
                     
    Devpack löytyy levyltä 170.
                     
                     
                     
 LOGO on hyvä kieli aloittaa ohjelmoinnin opiskelu. Sen rakenteet 
                     
    ovat oikeaoppisia ja tulos on nähtävissä välittömästi ruudussa. 
                     
    Tässä mielessä se on jopa nopeampi kuin monet muut kielet, 
                     
    joilla ohjelma on ensin kirjoitettava editorilla, käännettävä 
                     
    compilerilla ja yhdistettävä linkkerillä. Tähän prosessiin saat-
                     
    taa kulua minuutteja. Sitten vasta pääsee kokeilemaan. Logo 
                     
    suorastaan houkuttelee luovaan kokeiluun. Valmiita, itsenäisiä 
                     
    ohjelmia sillä vain ei synny, eikä matematiikka ole sen aluetta.
                     
                     
                     
 BASIC-murteita haittaa monesti hitaus, sotkuinen rakenne ja se, 
                     
    ettei niilläkään voi tehdä itsenäisiä, siis ilman kielen mukana-
                     
    oloa toimivia ohjelmia. ST-Basic on häpeäksi isäntäkoneelleen, 
                     
    eikä sitä juuri kukaan käytä. 
                     
 GFA-basic on meillä (ja Saksassa) vallannut markkinat, eikä aivan 
                     
    syyttä. Sen rakenne on 'strukturoitu' Pascalin tyyppisesti, eli 
                     
    se muodostuu aliohjelmista, joita kutsutaan nimeltä pääohjelmas-
                     
    sa. GFA:n voi myös kääntää Compilerilla, jolloin siitä tulee 
                     
    'oikea' ohjelma ja nopeuskin kasvaa jopa kolminkertaiseksi. 
                     
    GFA:n editori on omaa luokkaansa. Tällainen virheenkorjaus 
                     
    pitäisi olla muissakin kielissä. Se ei nimittäin suostu ottamaan 
                     
    virheellistä komentoa vastaan. Kirjoitusvirheitä se korjaa auto-
                     
    maattisesti. FAST- ja OMIKRON-basicit ovat nopeudeltaan
                     
    samantasoisia ainakin lehtien testausten perusteella. 
                     
                     
                     
 FORTH on oma lukunsa, erikoinen kieli, jonka oppiminen Logon jälkeen 
                     
    ei ole kovin vaikeata. Sillä saa melko vähällä työllä näppäriä 
                     
    ratkaisuja moneen pulmaan. Minun tuntemissani Fortheissa 
                     
    itsenäisten ohjelmien teko on melko hankalaa tai johtaa suuriin 
                     
    ohjelmiin, koska itse kieli jää sinne sisään. Kaikissa ei ole 
                     
    desimaalilukuja lainkaan, eikä niitä aina tarvitakaan. Eräillä 
                     
    Fortheilla voi tehdä moniajoa.
                     
                     
                     
 MODULA-2 (ainakin TDI) kykenee myös moniajoon. Sillä voi tehdä 
                     
    rinnakkaisia prosesseja, jotka toimivat määrätyssä tärkeysjär-
                     
    jestyksessä prosessorin aikaa jakaen.   
                     
    Muutenkin Modula on täysimittainen ohjelmointikieli. Se on 
                     
    Pascalista edelleen kehitetty. PASCAL taas on alunperin ohjel-
                     
    moinnin opiskeluun tarkoitettu kieli, joka kuitenkin levisi 
                     
    käytännön työhön varsin nopeasti. Modulalla voi tehdä omia 
                     
    'moduleita', ohjelmanpätkiä, vaikkapa levylle kirjastoon, ja 
                     
    sieltä niitä otetaan ohjelmiin nimellä kutsuen. Kaikki Gem-, 
                     
   ^^ AES- ja Bios-kutsut^^41  ovat valmiina kirjastoissaan. Modula kääntää 
                     
    koodin ohjelmaksi melko hitaasti, ellei käytä ram-diskiä, mutta 
                     
    ohjelmista tuleekin sitten nopeita, tiiviitä ja varmatoimisia. 
                     
    Kieli on pikkutarkka alkumäärittelyille ja isojen/pienten 
                     
    kirjainten käytölle. 
                     
    Eri valmistajien Moduloilla on keskenään suurempia eroja 
                     
    nopeudessa kuin tämän testin C:n ja Modulan ero. Sama koskee 
                     
    myös C-kieliä. 
                     
                     
                     
 C  on tämän hetken suosikkikieli, jonka oppiminen ei kuitenkaan ole 
                     
    kaikkein helpoimpia hommia. Perusrakenne muistuttaa muita 
                     
    kehittyneitä kieliä, mutta lauserakenne ei ole ulkopuoliselle 
                     
    erityisen 'luettavaa'. C on nopea ja monipuolinen työkalu sitä 
                     
    hallitsevalle.
                     
    Uusi tulokas, TURBO-C vaikuttaa lupaavalta. Eräs ongelma ST:n 
                     
    kielten kohdalla on nimittäin niiden ohjelmien siirtäminen muil-
                     
    le koneille tai muilta koneilta ST:lle. C, Pascal ja Modula-2 
                     
    pitäisi periaatteessa olla niin normioituja, että ohjelmakoodin 
                     
    siirto olisi mahdollista. Koneelle ja käyttöjärjestelmälle omi-
                     
    naiset osat on erotettu omiksi kirjastoikseen ja varsinainen 
                     
    ohjelman perusrunko toimii laitteesta riippumatta. Se vaatii 
                     
    vain uuden kääntämisen uudella koneella, ja ehkä muutaman li-
                     
    säyksen kirjastoihin.
                     
                     
                     
    Tämä on kuitenkin lähinnä teoriaa, sillä jo eri valmistajien 
                     
    saman kielen ST-versiot eroavat niin paljon toisistaan, ettei 
                     
    listauksia voi käyttää muuttamatta. Turbo-C on kait pisimmlle 
                     
    norminmukainen, vaikka on siitäkin jo eri versioita. Modulalla 
                     
    standardisoimiskomitea on jo asetettu. Kieli on kehittynyt alku-
                     
    peräisistä määrittelyistään, ja eri valmistajilla eri suuntiin.
                     
                     
                     
    Kokonaan käsittelemättä jäivät tässä ainakin tekoälykielet Lisp 
                     
    ja Prolog, sekä erikoissovellutusten APL ja Smalltalk. Lähes 
                     
    kaikista mainituista kielistä löytyy myös jonkinlainen PD-
                     
    versio, mutta käyttömukavuudeltaan ja helppoudeltaan ne eivät 
                     
    kyllä vedä vertoja hyvällä ohjelkirjalla varustetulle 
                     
    kaupalliselle tuotteelle. Ohjekirja kun on yleensä tärkein osa 
                     
    ohjelmaa, varsinkin kehittyneissä ohjelmointikielissä.
                     
                     
                     
    Ohjelmointiesimerkkejä löytyy lähes kaikille kielille PD-kirjas-
                     
    tostamme ja yleisimmille myös alan lehdistä. Hyvä tapa opia on 
                     
    tutkia muiden tekemiä ohjelmia muutellen ja lainaten niitä. 
                     
    Harvoin tarvitsee lähteä nollapisteestä, vaan aina löytyy jokin 
                     
    samantapainen ratkaisu, josta voi käyttää osia.  
                     
                     
                     
 Vesitys:
                     
    Ei nopeus lopulta ole monessakaan tapauksessa ohjelman tärkein
                     
    ominaisuus, joten kielen 'taipuisuus' on ehkä tärkeämpää kuin
                     
    nopeus, mutta se onkin jo toinen juttu.
                     
                     
                     
 JAA, vielä yksi asia:
                     
    Jos sinulta menee sormi suuhun jonkun ohjelmointikielen kanssa, 
                     
    älä kysy minulta. En minä näistä nimittäin paljoakaan ymmärrä. 
                     
    Olenpahan vain uteliaisuuttani kokeillut. Sitäpaitsi useimmat 
                     
    kielet (paitsi Assembler ja APL) ovat perusrakenteeltaan kuiten-
                     
    kin niin samankaltaisia, että kun osaa yhtä, saa jotakin aikai-
                     
    seksi toisellakin.
                     
                     
                     
                          Kunzi

Takaisin

(C) Marko, Suomen Atari-sivut / ArkiSTo 2003