Blogikirjoitus -

Paras ohjelmointikieli, osa 3: Pitkät merkkijonot

Tämän blogisarjan kahdessa ensimmäisessä osassa käsittelin koodareille oleellisia kieliä sekä niiden suosiota arvioivia tutkimuksia. Joudun itsekin usein tilanteeseen, jossa joudun valitsemaan usean kielen välillä. 

Viimeisin henkilökohtainen esimerkki ohjelmointikielen valinnasta on viime viikonlopulta. Minun piti generoida merkkijonoja, useita, ja tehdä kullakin niillä tietty operaatio. 

Ensimmäinen vaihtoehto oli Java, sillä siihen löysin valmiin toteutuksen vaadittavaan operaatioon. Java on kuitenkin suorituskyvyltään erityisen huono useiden merkkijonojen kanssa. Tässä tapauksessa "usea" tarkoitti maksimissaan 62 potenssiin 8, eli 218340105584896 erilaista merkkijonoa. 

Jostain syystä päädyin sulkemaan Netbeansin ja avaamaan Visual Studion. Kieleksi vaihtui C++. Jouduin toteuttamaan operaation uusiksi, mutta sainpahan tuloksen tämän vuoden puolella. 

Kun maanantaina oli alkamassa Python-kurssi, niin päätin hieman kokeilla sillä. Pienensin maksimimerkkijonon pituutta ja mahdollisia merkkejä tietäen, että Pythonin merkkijonot toimivat pitkälti samalla tavalla kuin Javan. Tiedossa oli siis hieman hitautta. Käytin sitten esimerkkinä viiden merkin mittaisia merkkijonoja. Näiden generointi ensimmäisellä versiolla kesti lähes minuutin (pelkkä generointi, ei mitään operaatioita). Kuuden merkin mittaisten merkkijonojen generointi kestikin sitten jo lähes kaksikymmentä minuuttia. Parin tunnin optimoinnin jälkeen sain viiden merkin mittaiset merkkijonot generoitua jo 23 sekunnissa, tähän olin sitten tyytyväinen. 

Muistin kuitenkin, että C++ toteutukseni generoi kuuden merkin mittaiset merkkijonot noin kolmessa sekunnissa. Olin silti tyytyväinen siihen, mitä Pythonilla sain aikaiseksi vaikka kuuden mittaisten merkkijonojen generointi kestikin 11 minuuttia. 

Kun voin valita ohjelmointikielen, niin eri tarkoituksiin tulee valittua eri kieli. Nyt kun tämä blogisarja alkaa olla valmis, alan testailemaan 3D-grafiikan kanssa. Tällä kertaa kieliä on kaksi:

Python ja OpenGL. Tällä kertaa ei C++-kieltä, sillä haluan saada projektin valmiiksi siedettävässä ajassa. Tosin otan pohjan OpenGL osuudelle C++-kielellä tekemästäni ohjelmasta. Ja taas lisähuomautus: todennäköisesti saisin saman asian tehtyä murto-osassa jos ottaisin Unity3D:n kauniiseen käteen, silloin kielenä olisi C#.

Tommi Teräsvirta, Training Consultant

Aiheet

  • Yritysvalmennus

Kategoriat

  • koodaaminen
  • ohjelmointi
  • ohjelmointikielet

Liittyvä sisältö