Hei vaan kaikille. Ensimmäistä kertaa tänne kirjoittelen. Ensinnäkin kiitoksia loistavista oppaista. Ja sitten kysymyksen pariin.
Miten opetella ohjelmoimaan?
Oma tyylini on kirjoittaa (kopioida) koodinpätkä oppaasta. Muokata se hyvin pikkuisilla muutoksilla (muuttaa "tekstiä" tai muuttujien nimiä) oman tuntuiseksi. Tämän jälkeen mietin miten voisin lisätä/muokata sitä lisää. Ja ryhdyn hommiin. Yleensä muutos on sen verran iso ettei minulla ole siihen tarvittavaa tietoa vaan ryhdyn päässäni miettimään mistä löytyy SE kohta koodista mitä muokkaamalla pääsen tavoitteeseeni.
Ratkaisuun apua etsin siis oikeastaan vain ko. oppaasta. En ole vielä etsinyt kenenkään valmista koodia mistä löytäisin ratkaisua vaan pyrin siihen "omin avuin".
Tästä tullaankin varsinaiseen "ongelmaan". Tämä metodi tuntuu hitaalta mutta palkitsevalta. Ai sitä itsetyytyväisyyttä kun saat koodin lopulta toimimaan. :D
Kertokaahan viisaammat miten te opettelette/opettelitte? Mitä minun kannattaisi ottaa huomioon orastavilla ensiaskelilla (lue=konttaus) ohjelmoinnin maailmaan?
Olen kohta kolmikymppinen poika ;) joka, ainakin toistaiseksi, haluaa omaksi ilokseen opetella ohjelmoimaan ja katsoa mihin rahkeet riittää.
- Ville
ps. pahoitteluni jos kysymys oli sekavasti kirjoitettu. Ajatuksen virtana kiireen keskellä. Toivottavasti joku sai selvää mitä tarkoitin. :D
Itsellä toimi PHP:n ja C++:n kanssa (toki myös assemblyn), että kopioin vain jonkin lyhyen koodin ja sitten aloin muokkailemaan ja lisäilemään juttuja...
Esimerkiksi ensimmäisiä PHP-koodailujani oli kun muokkailin MVnetin palautelomakkeesta foorumin. (Vieläkin ihmettelen miten se onnistui.)
Mutta sitte kehottaisin kanssa, että ihan alussa ei kannata opasta päntätä menemään vaan ennemmin koodivinkkejä selailet ja mietiskelet että miten mikäkin juttu toimii.
itse lähdin opettelemaan ensin termistöä ja nippelitietoa yleisesti ohjelmoinnin tasolla ja sitten valitsin kielen. VB:llä aloitin aikoinaan. Tämän jälkeen ostin muutaman paksun kirjan, yksi perusteista ja pari "the language" kirjaa joissa käytiin koko roska läpi. näitä tuli luettua kuukausia, ja tein sovelluksia joissa käytin koko ajan koko sitä kirjoa mitä olin siihen mennessä oppinut. Kun se alkoi olemaan hallussa, aloin opetella seuraavaa kieltä, ja sama ruljanssi kirjojen kanssa alkoi alusta.
Ensimmäisenä kielenä oli QB:n joku versio ja lähinnä matkimalla muiden koodia ja käyttäen hieman logiikkaa. Sen jälkeen kun oli jo ihan normaalia saada teksti tulostumaan eri väreillä ruudulle sitä alkoi lukemaan oppaita ja kokeilemalla eri kohtia. Esimerkiksi jos oppaissa kerrottiin ehtolauseista niin opettelin kuinka nämä oikein toimivat soveltaen jo aikaisemmin oppimaani.
Edelleenkin sitä opettelee uusia asioita lähinnä muiden neuvoin (esimerkiksi juuri oppaat). Ilman oppaita ei olisi tullut opittua varmaankaan asmiakaan.
Oma metodini on, että ensiksi lukaisen vain oppaan läpi jotta näen mitä se sisältää, sen jälkeen menen takaisin alkuun ja opettelen vähän kerrallaan sitä, mitä käsitellään. Eli tärkeintä on se oma tahti. Jos vain porskuttaa eteenpäin käsittämättä mitä on aikaisemmin tehty niin nopeasti on koodia josta ei ymmärrä mitään.
nomic kirjoitti:
Jos vain porskuttaa eteenpäin käsittämättä mitä on aikaisemmin tehty niin nopeasti on koodia josta ei ymmärrä mitään.
Tämä on ehkä juuri se mitä yritän välttää. Jostain syystä haluan ymmärtää miten jokin asia toimii ja miten voin sitä käyttää muulla tavalla. Tämä on vain hetkittäin hankalaa kun esimerkissä on yksi koodin pätkä, mutta vaikka ei eri funktioiden soveltamistapoja. Näitä joutuu pienessä mielessä miettimään. :D
ville5vee kirjoitti:
Tämä on vain hetkittäin hankalaa kun esimerkissä on yksi koodin pätkä, mutta vaikka ei eri funktioiden soveltamistapoja.
No eihän esimerkkikoodeja ole mikään pakko käyttää, jos se hankaloittaa.
Ihmiset oppivat asioita hyvin erilaisin tavoin. Jossakin psykologisessa julkaisussa käytettiin ilmaisua oppimisen oppiminen. Kyseessähän on siis tavan löytäminen, jolla itse oppii kaikista parhaiten. Jotkut oppivat lukemalla kirjasta jonkun muun kertomusta asiasta, jotkut haluavat lukea dokumentaatiota sivukaupalla ja toiset taas käytännössä kokeilevat asioita.
Ohjelmointi on yksinkertaistetusti loogista päättelyä ja ongelmanratkaisua. Aloittelijan kannalta hankalaa on päästä alkuun, koska aihe on erittäin laaja ja siihen liittyy paljon muutakin. Oppimiseen ei ole oikotietä, jokaisen täytyy itse vaivata päätään ja pohtia asioita. Tärkeää ei ole, että tietää, mitä jokin koodipätkä esimerkiksi tekee, vaan se, että ymmärtää miksi niin tehdään. Ilman ymmärrystä, "ohjelmoinnista" tulee hyvin monotonista, eikä uusia ratkaisuja eri ongelmiin voi syntyä. Oikean ymmärryksen asiaan saat juuri tuolla käyttämälläsi tavalla. Tietysti muiden (hyvien) koodien katselu lisää tietämystäsi ja tuo asiaan uusia näkökulmia. Niihin pitää kuitenkin suhtatua kriittisesti, ja miettiä, voisiko ongelman ratkaista jotenkin toisin.
Loppuun vielä pakollinen artikkeli aiheesta: Teach Yourself Programming in Ten Years.
Grez kirjoitti:
ville5vee kirjoitti:
Tämä on vain hetkittäin hankalaa kun esimerkissä on yksi koodin pätkä, mutta vaikka ei eri funktioiden soveltamistapoja.
No eihän esimerkkikoodeja ole mikään pakko käyttää, jos se hankaloittaa.
eli tässä mulla tullut ajatus/kirjoitusvirhe.
Tarkoitin että kun on esimerkkikoodi, jossa opetetaan vaikka for-silmukka, on se esitetty yhdellä tavalla. Tästä yhdestä esimerkistä for-silmukan soveltaminen ilman muita esimerkkejä on haastavaa. Nyt olenkin tehnyt niin että vain loogisesti yrittänyt pähkäillä (ja kokeilla) sekä ymmärtää miten se toimii.
Ilmeisesti opiskelumetodi ei ainakaan kauhean päin honkia ole. :D
No siis edelleenkään en ymmärrä mihin tuossa tarvitsee mitään esimerkkejä.
(Ilmeisesti putkassa ei voi laittaa viesteihin kuvia suoraan)
ville5vee kirjoitti:
Tästä yhdestä esimerkistä for-silmukan soveltaminen ilman muita esimerkkejä on haastavaa.
Yleensä ei ole kovin antoisaa vain miettiä, mihin voisi käyttää asiaa X. Parempi lähtökohta on ensin keksiä ongelma ja sitten miettiä ihan loogisesti, miten sen voisi ratkaista.
Perinteinen vasara-analogia: Puusepäksi ei opi sillä, että opettelee ulkoa, mitä kaikkea vasaralla voi tehdä. Sen sijaan pitää vain ruveta tositoimiin ja sitten sopivan paikan tullen oivaltaa, että hei, tässähän se vasara olisi aika kätevä!
ville5vee kirjoitti:
Näitä joutuu pienessä mielessä miettimään.
Ja syytä onkin. Pelkällä ulkoa opettelulla ei voi tulla hyväksi ohjelmoijaksi, koska aina tulee vastaan tilanteita, joita ei voi suoraan kopioida mistään valmiista koodeista. Jos taas on panostanut asioiden merkityksen ymmärtämiseen, isommatkin ongelmat ratkeavat riittävällä ajattelulla.
Harmi vain, että ajattelemisesta on vaikea kirjoittaa yleispätevää opasta. Jokaisen täytyy siis opetella kyseinen taito ihan itse.
Kiitoksia vastauksista. Ajastusten tuottaminen kirjalliseen muotoon on näköjään hankalaa aiheesta josta ei vielä tiedä tarpeeksi. :)
Meta: Näin olenkin pääsääntöisesti toiminutkin. Niinä muutaman rivin aikana mitä olen tuottanut.
Mielestäni paras tapa oppia on ymmärtää kaikki koodissa olevat asiat. Jotkut yrittävät vain muistaa ulkoa, mutta ei ymmärrä tiettyjen funktioiden tai rivien tarkoitusta. Kannattaa usein kysyä itseltään, että miksi näin tehdään, miksei sitä voinut tehdä yksinkertaisemmin ja mitä ihmettä tässä tapahtuu.
Hyvä esimerkki on mielestäni ihmiset, jotka eivät ymmärrä PHP:n ja selaimessa suoritettava koodin eroa ja yrittävät tehdä PHP:lla jotain JavaScriptille kuuluvaa.
Suosittelen myös ehdottomasti sitä, että aluksi pyrit kirjoittamaan KAIKEN itse, etkä copypastee mitään koodia. Toki voit katsoa koodivinkkejä, mutta vältä sitä kopioimista ja katso vinkistä, että miten tämä on tehty.
punppis kirjoitti:
Suosittelen myös ehdottomasti sitä, että aluksi pyrit kirjoittamaan KAIKEN itse, etkä copypastee mitään koodia.
Niin tämä tapa sopii myös itselleni. Eli luen sitä esimerkkikoodia ja kirjoitan sitä puhtaaksi siihen omaan harjoitushässäkkään. Eli opin lukemalla sekä kirjoittamalla. Mitä siitä esimerkkikoodista yleensä kopioin/teen itse on yhteenveto mitä siinä juuri tehtiin joko yleisellä tasolla tai rivi riviltä.
Sekä ei kannata tankkaa liikaa infoo kerralla, vaan pikkusen märehtiä sitä juuri opittua.
Ja omasta mielestä myös jankkaus, hauki on valas periaate on hyvä ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.