search login
Kehittävät analyysit ja työkalut

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
Pysy ajantasalla
Tilaa maksuton uutiskirje

Tilaamalla Management Institute of Finland MIF Oy:n uutiskirjeen kuulet mm. ajankohtaisista koulutuksista ensimmäisten joukossa, saat tietoa maksuttomista seminaareista ja mielenkiintoisia blogikirjoituksia. Uutiskirjeemme ilmestyy sähköpostiisi 1–2 kertaa kuussa – sen tilaus on maksutonta, ja voit perua sen koska tahansa kirjeen lopussa olevasta linkistä.

Tilaa uutiskirje