Kuinka paljon pitää osata asioita ulkoa ohjelmoitaessa?
Peruskysymys
...
9714
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 9
Vanhimmat
"Kuinka paljon pitää osata asioita ulkoa ohjelmoitaessa?"
Ei mitään ja äärettömästi. Riippuu ihan siitä mikä on tavoitteesi. Kaikki asiat ovat kirjoissa ja Internetissä, mutta mitä enemmän sinun tarvitsee niitä käyttää apunasi, sitä enemmän ohjelman tekemiseen menee aikaa.
Jos tavoitteenasi on esimerkiksi löytää töitä ohjelmoijana, niin ensimmäisenä asiana ohjelmointitekniikka pitää osata ulkoa. Pitää tietää esimerkiksi käsitteet lause, lauseke, operaattori, muuttuja, aliohjelma, funktio, parametri, taulukko, vakio, literaali, tietotyyppi, merkkijono, kokonaisluku, ohjausrakenne, valintarakenne, jne. Edelliset ovat ns. imperatiivisten kielten ominaisuuksia. Nykyisin on usein tarvetta osata myös olio-ohjelmoinnin käsitteet: luokat, ilmentymät, oliot, attribuutit, metodit, rakentajat, perintä, jne.
Kun edellä mainitut asiat ovat hallussa eli ne osaa ulkoa, kielestä toiseen siirtyminen ei ole kauhean hankalaa. Kielikohtaisia asioita ei tarvitse osata kovinkaan paljon ulkoa, vaan riittää että osaa lukea manuaalia ja etsiä tarvittaessa tietoa Internetistä.
Ohjelmointi edellyttää kuitenkin paljon muutakin. Esim. ongelmanratkaisun malleja on hyvä osata. Lähinnä tällä tarkoitetaan erilaisia algoritmejä ja oliopohjaisessa ohjelmoinnissa suunnittelumalleja. Mitä enemmän niitä sitten osaa, oikeastaan sitä paremmasta _ohjelmoijasta_ on yleensä kyse.
Työelämässä vaaditaan tietysti paljon muutakin, mutta nuo edellä mainitut asiat muodostavat jonkinlaisen peruskiven, jota ilman millään muulla ei ole merkitystä.
Kielellä sinänsä ei ole väliä. Kielet ovat vain työkaluja, joilla ohjelmoija toteuttaa asioita. Jotkut kielet ovat vain parempia tiettyjen asioiden toteuttamiseen kuin toiset.
'Kun edellä mainitut asiat ovat hallussa eli ne osaa ulkoa,'
Mitä puppua tuo nyt on? Askoiden ulkoa opettelu ja asian osaaminen/ymmärtäminen ovat aivan eri juttuja. Käsitteiden pänttäämisestäkään ei ole yhtään mitään iloa, pitää tietää missä, milloin ja miten niitä tulee käyttää.
Mitä tarkoitat algoritmien osaamisella? Sitä että osaat koodata sellaisen _ulkoa_ vai että osaat soveltaa niitä erilaisiin ongelmatilanteihin?
"Mitä puppua tuo nyt on? Askoiden ulkoa opettelu ja asian osaaminen/ymmärtäminen ovat aivan eri juttuja."
Miten mielestäsi ohjelmoijalla voisi olla ohjelmointitekniikka hallussa, jos hän ei osaisi sitä ulkoa? Vai onko sinusta hyvän ohjelmoijan merkki, että pitää päivittäin tarkastaa kirjasta mitä tarkoittaa esimerkiksi termi "muuttuja" tai mitä tarkoittaa termi "funktio"? Kaikkia asioita ei missään nimessä tarvitse osata ulkoa, mutta ohjemointitekniikan perusteet (johon selvästi tuossa viittasin) tulee ehdottomasti osata.
Esim. jokaisen imperatiivisen ohjelmointikielen manuaalista löytyy aina lähes samat asiat ja melkeimpä samassa järjestyksessä: lauseet, lausekkeet, operaatiot, muuttujat, taulukot, ohjausrakenteet, jne. Kun noiden termien merkitys on hallussa, uuden kielen syntaksin opettelu käy suuremmitta ongelmitta.
"Mitä tarkoitat algoritmien osaamisella? Sitä että osaat koodata sellaisen _ulkoa_ vai että osaat soveltaa niitä erilaisiin ongelmatilanteihin?"
Molempia. Vaikea sitä on alkaa soveltamaan algoritmiä käytännössäkään, jos ei tunne teoriaa sen algoritmin takana. Eikä tähän kelpaa ratkaisuksi se, että etsii sitten kirjasta oikean algoritmin, kun sille tulee tarvetta. Kaikki perusalgoritmit ja suunnittelumallit (sekä anti-suunnittelumallit) pitää osata ulkoa, koska ei niitä kukaan pysty yhden projektin aikana soveltamaan muuten käytäntöön, jos ei ole ennestään tietoinen niiden olemassaolosta. Tiedon omaksuminen ja sisäistäminen vie aina jonkin aikaa, joten sitä laadukaampaa jälkeä keskimäärin syntyy, mitä vähemmän ohjelmoija joutuu opettelemaan tai kertaamaan asioita kesken projektin.
Et nyt selvästikään ymmärtänyt mitä tarkoitin. Sitä kun voi olla hankala oppia ulkoa. Tietysti, jos ei opi mitään muuten kuin ulkoa opettelemalla, ei sitten.
Se, että osaat ulkoa yksittäisien termien merkitykset, ei auta yhtään mitään. Analogiana, et osaa vielä vierasta kieltä jos tiedät pelkästään yksittäiset sanat. Vai käännätkö kenties ulkomaalaiset tekstit mielessäsi niistä ulkoa opituista sanoista aina suomenkieleen?
Yksittäisien algoritmien opettelukaan ei tuota välttämättä tulosta, niitä kun pitää hyvin usein osata muokata ongelmaan sopiviksi, mahdollisesti yhdistellä vanhoja. Vai oletko kuullut koskaan termistä 'algoritmikehitys'?
Mitä muuten tarkoittaa undefiled
Ulkoa ei kannata paljoa päntätä. Asiat pitää joko osota katsoa oikeista lähteistä tai sitten tehdä niiden kanssa niin paljon töitä, että ne tulevat selkärangasta. Itselläni ainakin vain nämä kaksi tapaa liittyvät _oikeaan osaamiseen_. Jos vain opettelisin ulkoa jotain värkkejä, en saisi niillä tiedoilla varmasti tehtyä mitään oikeaa.
Jos opettelet hyvistä lähteistä ohjelmointia, opit paljon asioita ihan huomaamattakin. Jos kurssilla tai kirjassa vaaditaan paljon ulkoa pänttäämistä, se on luultavasti tosi huono. Etsi parempi.
Ohjelmointi ei ole mitenkään tieteellistä tai eksaktia. Monella hyvällä ohjelmoijalla (en aivan tohdi itseäni lukea heihin) on aivan hirveästi sellaista tietoa ohjelmoinnista, mitä he eivät osaa selittää sanallisesti oikein ollenkaan. He vain osaavat tehdä hyvää koodia. Ei se minusta ole ulkoa osaamista. Se on sitä syvempää ymmärrystä ;-)
Parasta on nämä tentit yliopistossa, missä pitää kirjoittaa PAPERILLE joku toimiva ohjelma esim. Javalla! Ei voi sanoa kuin että aikamoista pelleilyä.
perusjutut, kun muistaa niin sillä pärjää ja jossei niin google auttaa...
enemmän auttaa looginen ajattelukyky ja sen pohjalta naputella ohjelma...
kiitos vastauksista!