Kuinka opetella itsenäistä ongelmanratkaisua?

tiedekoodari

Hei,

Mikä olisi paras tapa opetella ratkomaan ohjelmointiongelmia? Siis mieleeni ei tule juuri nyt erityistä esimerkkiä, mutta sanotaan vaikka, että olen firmassa, jossa pitäisi kehittää tavutusalgoritmi suomeen ja netti ei toimi. Tai kuinka kauan kannattaa Googlata ongelmiin muidentekemiä ratkaisuja/kirjastoja ennen kuin alkaa koodaamaan tietorakenteita, jos valmista ratkaisua ei löytynyt netistä? Olisin myös kiinnostunut, voidaanko koodia tutkia tavallaan tieteellisin menetelmin ja laskea siitä joitain metriikoita, kuinka helposti ylläpidettävää koodi on, tai todistaa, että jossain osassa koodia ei ole bugeja.

11

338

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Ajattelija .

      Itsenäisesti.

    • yxkoodaaja

      Mun mielestä yksi hyvä konsti olisi tehdä joku ohjelma tai sovellus. Siis ei mikään pieni harjoitustehtävä, vaan oikea ohjelma. Valitse joku sinua itseäsi kiinnostava aihe. Vaikka joku peli. Sen jälkeen alat rakentamaan. Ongelmia tulee taatusti eteen. Sitten mietit niihin ratkaisut ja haet verkosta esimerkkejä.

    • Lukemalla teoriaa ja tekemällä käytännössä.

      Koodin analysointityökaluja toki on, mutta virheettömyyden todistaminen on sitten haastavampaa.

    • tässä hyvä vinkki

      mene leningradin metroon ja hauku niitä.
      tai haukkumisen sijaan voit leveillä miten rikas olet.

    • ddffgdgdfg

      Tekemällä oppii. Teoriaa voi lueskella ja harjoituksiakin tehdä, mutta todellinen osaaminen tulee vain tekemällä ja tekemällä.

      Bugeja on lähes aina. Yksi apukeino on jos omaksuu testivetoisen kehittämistavan jossa testit kirjoitellaan ennen kuin varsinaista ohjelmakoodia aletaan edes tekemään. Ohjelmakoodia sitten kirjoitellaan kunnes kaikki testit menevät onnistuneesti läpi.
      http://en.wikipedia.org/wiki/Test-driven_development

    • GggKhh

      Hakeudu opiskelemaan tietojenkäsittelytiedettä oikeaan tai avoimeen yliopistoon.

    • bexjpwoeruy

      Yleensä kannattaa googlettaa noin googlettaa mahdollisimman paljon (2-10pv) verran ja tutkailla mitä ratkaisuja löytyy. Saa perspektiiviä mitenkä joku vaikea asia ratkaistaan ja hyvällä säkällä joku on ratkaissut saman ongelman huomattavasti fiksummin kuin itse olisi asian tehnyt.

      Esimerkki statiikasta:
      http://msdn.microsoft.com/en-us/library/bb385911

      Kun puhutaan ylläpidettävyydestä niin ei kannata unohtaa ohjelmointi tyyliä.
      Tähänkin on on olemassa työkaluja, esmes http://stylecop.codeplex.com/.

      Elikkä ohjelmistot testataan testi penkissä jossa on erilaisia testi tapauksia. Päästään testaamaan jotain metodia erilaisilla syötteilla. Sen lisäksi on olemassa staattisia työkaluja jotka etsii niitä bugeja. Taakin on nylyään automatisoitu eli kehitys ympäristö pyörittelee kerran päivässä 200 testiä pienellä pätkälle koodia ja ärjyilee jos ei jokin mene läpi.

      Työkaluthan riippuu täysin ohjelmointi ympäristöstä. Mutta periaatehan on sitten sama.

      Ohjelmaahan ei koskaan voida todeta teoriassa bugittomaksi. Mutta jossain vaiheessa se luovutetaan asiakkaalle ja juostasan karkuun.

      Ainiin ja algoritmien vertailuun on kehitetty teoria:
      http://en.wikipedia.org/wiki/Computational_complexity_theory

      Lyhyt johdanto suomeksi: Algoritmien aakkoset
      http://www.ohjelmointiputka.net/oppaat/

      Sekä sitten vähän vahvempana tiileskivenä.
      https://www.plazakauppa.fi/tietorakenteet-ja-algoritmit/9517627955/dp

      Ja kyllä tämmöiset perusteet pitäisi olla hallussa ennen kuin menee opiskeleen.

      • Pelle detector

        Koko juttu täyttä hölynpölyä.


      • myönteinen palaute

        Uskon että ihan hyvään suuntaan olet pyrkimässä.


      • matemaatikko82

        "Ohjelmaahan ei koskaan voida todeta teoriassa bugittomaksi."

        Ei pidä paikkaansa. Käytännössä todistaminen on hyvin työlästä mutta mahdollista: http://www.schneier.com/blog/archives/2009/10/proving_a_compu.html . En ole tutustunut juurikan laskennan teoriaan, mutta mielestäni kaikki tietokoneohjelmat voidaan simuloida äärellisellä automaatilla ja teoriassa tällainen on aina mahdollista minimalisoida ja näin saada jokaiseen ongelmaan muistin käytön suhteen optimaalinen algoritmi.


    • yksäijä

      Kyllä kai joissain jutuissa voi tehdä asioita tavallaan tieteellisesti. Esimerkiksi yrityksissä voi olla koodausstandardeja, ja standardien laatijat ovat varmaankin todistaneet, että jos tarvittavan ohjelman voi tehdä annetulla kielellä, niin sen voi tehdä myös standardien mukaan.

      Toisaalta eräässä projektissa pyydettiin etsimään virhe eräästä funktiosta. Onnistuin todistamaan, että jos kääntäjä ja käyttöjärjestelmä toimii oikein, niin funktio palauttaa aina oikean arvon. Koeta siinä sitten miettiä keinoa, millä pomon saisi antamaan enemmän vastuuta ja etsimään virhettä toisesta funktiosta.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Purra hyökkää nyt suomalaisen duunarin kimppuun teettämällä mamuilla palkatonta työtä

      Niinpä niin. Persut duunaripuolue, HAH. Joko alkaa kovapäisinkin persu älyämään, että persut ovat Suomen kansan vastain
      Maailman menoa
      367
      12340
    2. Purra ehdottaa vaan Tanskan mallia, joka on erittäin hyvä malli

      Purra ehdotti helmikuussa Suomeen Tanskan mallia, jossa maahanmuuttajilta vaaditaan työntekoa sosiaalitukien saamiseksi.
      Maailman menoa
      255
      5387
    3. Kokoomusnuoret: Sosiaalitukien työvelvoitteen tulisi koskea kaikkia

      Riikka Purra on esittänyt, että maahanmuuttajilta tulisi edellyttää palkatonta työtä sosiaalitukien vastineeksi. Kokoom
      Maailman menoa
      212
      3928
    4. Purra vaatii: Työvelvoite maahanmuuttajille ja kantasuomalaisille pitkäaikaistyöttömille

      Jos Perussuomalaiset ja Kokoomus ovat seuraavan hallituksen kaksi johtavaa puoluetta, on suomalaisille pitkäaikaistyöttö
      Perussuomalaiset
      196
      2599
    5. Jyrki Linnankivi, Jyrki 69 - Goottirokkarista kirkonmieheksi Lappiin!

      Jyrki Linnankivi eli Jyrki 69 on The 69 Eyes -rockyhtyeen vokalisti. Lauluhommien lisäksi hän sanoittaa, säveltää ja sov
      Työ ja opiskelu
      15
      1982
    6. Onnea Maria ja Vilma Amazing Race -voitosta!

      Maria Guzenina ja Vilma Vähämaa voittivat Amazing Race Suomi -kisan. Voiton hetkellä Guzenina paljasti, miksi valitsi Vi
      Tv-sarjat
      19
      1824
    7. Mikä on mielestäsi paras miestyyppi?

      Esimerkit kärjistettyinä: a) perustavallinen/tasainen b) himourheilija c) varakas, turvallinen elättäjä d) puolikrimina
      Ikävä
      167
      880
    8. Martina Aitolehti

      Instagramissa pomppas esille Martinan kumipallot. Ihan säikähin. Ja tää on Martina-ketju!
      Kotimaiset julkkisjuorut
      271
      852
    9. No kolahtaako kukaan

      Samalla tavalla kuin mä? Harmi kun et uskaltanut kohdata. Ehkä me löydetään jotkut muut jotka voi olla konkreettisempiak
      Ikävä
      74
      772
    10. Rippituoli

      Kerro joku synkkä tai outo salaisuus, joka liittyy ikävääsi kaivattuasi kohtaan. Tee tunnustus anonyyminä. Se helpottaa
      Ikävä
      59
      716
    Aihe