Alunperin koodaaminen oli suuritöistä. Uudet työkalut toivat automatiikkaa. Onko tämän jälkeen sovelluskehitys vain palapelin kasaamista?

Tietokone ymmärtää vain konekieltä

Aivan alkujaan ohjelmointi on ollut melkoisen kankeaa. Käskyjä ei voinut syöttää nykyisellä näppäimistöllä, vaan komentokieltä syötettiin tietokoneelle ohjelmointikytkimiä käyttäen.

bittimuseo-kytkinkayttoliittyma-onko-sovelluskehitys-palapelin-kasaamista
Tietokoneelle kerrottiin konekieltä aluksi tämänkaltaisella kytkinkäyttöliittymällä.

Myöhemmässä vaiheessa tulivat kirjoitetut käskykomennot käyttöön. Käskyttäminen tarkoitti aluksi erittäin matalan tason komentamista. Tällä tarkoitetaan sitä, että esimerkiksi näytölle tulostettava teksti piti kirjain kerrallaan sijoittaa tietokoneen sellaiselle muistialueelle, että se tulee näytölle näkyviin. Kyse on Assembly-kielestä, joka oli seuraava askel varsinaisen konekielen jälkeen.

Wikipedian artikkelit kertovat edellä kuvatuista kielistä tarkemmin:

Matalan tason ohjelmointikielet

Kehittyneempien, korkeamman tason kielien myötä yksittäinen käsky tuli sisältämään enemmän toimintoja. Esimerkiksi näytölle tulostettava teksti voidaan antaa lauseena tai kokonaisena kappaleena. Tietokoneen sisuksissa tapahtuu tarkempi ohjeistaminen, jotta tietokone osaa halutun asian toteuttaa. Ohjelmointikieli siis käännetään (ja käytetään myös nimitystä tulkkaaminen) tietokoneen prosessorin ymmärtämään muotoon.

Itse opiskelin ohjelmointia siinä vaiheessa, jossa Assembly-kielen käyttö ei ollut välttämätöntä. Tulin senkin opiskelleeksi. Vakiintuneeseen käyttöön otin aluksi Basic-pohjaisia kieliä, ja myöhemmin Turbo Pascalin. Basic-ohjelmoinnista voit lukea aiemmasta kirjoituksestani. Turbo Pascalista kirjoittelin tässä kirjoituksessa.

bittimuseo-kayttoliittymasuunnitelma-onko-sovelluskehitys-palapelin-kasaamista

Kohti korkeamman tason kehityskieliä

Ohjelmointikieliä tuli tarjolle lisää. Erityistä uutta 1990-luvulla tarjosi mm. Delphi-kehitysympäristö, jossa sanallisen käskytyksen rinnalle tuli graafinen sovelluskehitys, drag&dropina näytölle sijoitettavat valmiit graafiset komponentit. Käyttöliittymä voitiin rakentaa valmiimpia palikoita käyttäen. Ohjelmoija siis piirsi käyttöliittymän raameja, ja ajatuksen kulku saattoi olla tällainen: 

  • Tähän haluan tällaisen syöttökentän ja sille selitteen. 
  • Tähän alueelle piirretään ohjelman toimesta muuttuvaa sisältöä.
  • Käyttöliittymään tulee vakiomuotoiset painikkeet.

Todellisuudessa näidenkin elementtien taakse tuli kuitenkin käskyttämällä rakentaa varsinainen toimintalogiikka aina vähintään joltakin osalta. Nykyään kehitystyökalut sisältävät laajojakin valmiuksia, jotka nopeuttavat sovelluskehitystyötä. Ohjelmistosuunnittelijan eli tuttavallisemmin koodarin tehtäväksi jää silti aina kokonaisuuden rakentaminen. Tulee päättää, mitä komponentteja tarvitaan, miten niitä käytetään, ja varsinaisen toimintalogiikan rakentaminen.

Muistan hyvin, kuinka Delphin tullessa ajattelin, että tämä ei ole oikeaa koodaamista. Tämähän on vain palapelin rakentelua. Kun useita vuosia ja tuhansia koodirivejä oli kirjoitellut, tuollainen puolivalmisteiden käyttäminen tuntui höpöhommalta. 

Hyödyllinen kehityskulku

Kyllä kehitys on ollut hyvää. Ei ole järkevää aina lähteä tyhjästä liikkeelle. Kehitystyökalut mahdollistavat sovellusten nopeamman toteuttamisen. Lisäksi omia ohjelmakomponentteja voi tehdä yleiskäyttöisiksi niin, että voi toisessakin tilanteessa hyödyntää samoja valmiuksia. Tämähän on järkevää. Koodaaminen on myös usein isomman joukon yhteistyötä, jossa valmiita osioita kaikki voivat hyödyntää.

bittimuseo-puzzle-and-team-onko-sovelluskehitys-palapelin-kasaamista

Arvelen, että tuoreempienkin koodareiden olisi helpompaa ymmärtää ohjelmistokehittämisen perusteita, jos joutuisi rakentamaan käyttöliittymää alkuaikojen tapaan pikseli kerrallaan. Kirjoittelin, kuinka piirustusohjelma toteutettiin aiemmin jokainen valopiste erikseen sytyttäen.

Bittimuseo kyselee, mikä on sinun ensimmäinen koodauskielesi?


Kiitokset kuvista / Thank you for the pictures:


Kiitos kun jaat ystävillesi!