Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Vaikeuksia ohjelmoinnin suhteen

Sivun loppuun

feltsu [18.06.2009 17:08:44]

#

Moikka!

Joo elikkä ongelma on vähän sen kaltainen, että oon innostunu aika paljon (lue. iha pirusti) ohjelmoinnista ja kokemusta kertyi Commodore 64:lla BASICin kanssa ja sitten vanhalla raahattavalla 386:lla QuickBasicin parissa. (Tästä on siis vuosia [enemmän ku 10] aikaa) :D

Joka tapauksessa ongelman ydin on tällä hetkellä se että kun nyt sitten onnistuin innostumaan jälleen tosissani ohjelmonnista niin aloin opettelemaan C:tä.. No sitä kun olin sen pari päivää (haha) opetellu niin päätin et ei tää oo kiva kieli ja siirryin sitten C++:aan.. No sitä ku olin opetellu sen pari päivää (haha) niin päätin sitte et ei tääkää oo kiva kieli.. Siitä sitten siirryin Pythoniin (ja olin varma että tää on kiva kieli), no sitte muutaman tunnin opiskelun (haha) jälkeen päätin että ei tääkää oo kiva kieli ja siitä sitten takasin C++:aan.. No sitä taas sitte siinä pari päivää ihmettelin kunnes löysin Visual Basicin (VB.NET) ja sitä opiskelin pari päivää kunnes päätin et se on liian vaikee ja aloin nyt sit opettelemaan Visual Basic 6:sta (kiitos Antti Laaksoselle joka on kirjoittanut aiheesta ihanat oppaat <3) ja nyt kun olen sitä opetellut niin se tuntuu mukavalta..

Mutta sitten tietysti herää kysymys, että onko toi VB 6:en opettelu turhaa tässä vaiheessa (siirtyäkö suoraan VB.NETtiin) vai takas opettelemaan C:tä? Vai mitä tulis tehä..?

Ja tietenkin vielä semmoinen mielenkiintoinen välikommentti että mitä ongelmia tuottaa se että inhoan matematiikkaa (mutta en koodausta, ei mitään järkeä :D), vaikkakin syy matematiikan inhoamiseen on sen vaikeus ku en siitä tajua hevon**ttua, josta herääkin kysymys että onko järkeä/mahdollista oppia ohjelmoimaan ilman mate­maat­tis­ta­su­per­me­ga­hy­pe­rext­ra­tur­bo­lah­jak­kuutta?

Ja sitten jos jollain vielä ois joku yleispätevä vastaus semmoseen kysymykseen mikä mulla on päässä että miks en opi koodaamaan vaikka haluiaisin, luen tutoriaaleja, kokeilen, yritän, teen (väärin) mutta SILTIKÄÄN en vaan ymmärrä koodausta.. Ja sillä tarkoitan sitä että vaikka saankin jotain aikaseksi, niin en ymmärrä siitä mitään ja vaikka kaveri selittää mulle niin en silti ymmärrä :D Niin oonko mä sitten vaan idiootti vai missä vika?

Voiko ohjelmoinnin oppia pelkällä motivaatiolla vai vaatiiko se muutakin?

-Feltsu

PS. Huh huh mikä posti, toivottavasti joku tajuu mitä koitin selittää, itsehän en ainakaan ymmärtänyt

EDIT - Niin semmoinen vielä kaikille ihmisille infoksi, että windows-koodaaminen ois nannaa, inhoon kaikkia console applicationeita (ainakin tällä hetkellä), elikkä haaveeni (joka ei varmasti ikinä toteudu) ois tuottaa Areena-pelisarjan tyyppisiä pelejä..

EDIT 2 - No tässä kun tän homman kirjotin ja asiaa mietiskelin niin alko itellekkin vähän hahmottua ongelma.. Elikkä siis se on jompikumpi näistä en oikein tiedä kumpi.. Otetaan nyt esimerkiksi For-loop (kielestä riippumatta) tiedän kyllä mitä se tekee ja mihin sitä käytetään mutta en tiedä miten voin tehdä sillä niitä asioita mitä haluan tapahtuvan (esimerkiksi pelikartan piirto) ja toi pätee oikeestaan kaikkiin muihin käskyihin paitsi print ja input (tai printf ja scanf tai cout ja cin) tuntuu et noi on ainoot käskyt mistä ymmärrän mitä niillä voi tehä ja miten saan niillä tehtyä just sitä mitä haluan

Metabolix [18.06.2009 17:27:26]

#

Ehkäpä matematiikan vierastaminen osaltaan liittyy siihen, että pidät enemmän sanoja käyttävästä VB:stä kuin symboleja täynnä olevasta C++:sta. Jos VB 6 sujuu, pitäisi myös VB.Netin syntaksinsa puolesta sujua. Minusta VB 6 ei enää ole hyvä valinta, kun sille kerran jo on modernimpi seuraajakin. (Lue kaksi viestiä aiheesta.) Lisäksi VB 6 on maksullinen, kun taas VB.Netiä voi käyttää aivan ilmaiseksi – tämä on sitä olennaisempaa, mitä enemmän aiot levittää tuotoksiasi.

Matematiikka ja ohjelmointi vaativat samantapaisia loogisia taitoja. Kuten koulussa ja täällä foorumilla on nähty, kumpaakin voi opetella myös ymmärtämättä asioita. Tästä tavasta valitettavasti seuraa, että uudenlainen ongelma ei enää ratkeakaan, kun aiemmin opittu malli ei toimi ja ymmärrys ei riitä oman ratkaisun kehittämiseen. Moni täälläkin on vielä vuosien jälkeen hyvin alkeellisella copy-paste-tasolla ja tekee yhä sellaisia perusvirheitä, joista toiset pääsevät lähes lopullisesti yli muutamassa viikossa.

Tarkoitukseni ei ole sanoa, että oppiminen olisi mahdotonta. Väitteeni on, että jos tiedät, että et luonnostasi tule ajatelleeksi asioita loogisesti ja järjestelmällisesti läpi, ensimmäinen askel hyväksi ohjelmoijaksi oppimisessa on, että opettelet tämän ajatteluvaiheen ja aivan tietoisesti teet sen, ennen kuin kirjoitat sata riviä koodia, joka ei alkuunkaan toimi ja josta ainoa avulias kommentti foorumillakin on "eihän tuossa ole mitään järkeä". Mitä tahansa voi varmasti oppia tekemään, kunhan hoitaa hommansa huolellisesti eikä hätäillen.

Edit. Mainitsemasi kartan piirto onnistuu tietenkin niin, että kierretään silmukalla kaikki y-koordinaatit ja tämän sisällä toisella silmukalla kaikki x-koordinaatit ja tulostetaan joka kohtaan oikea merkki. Pyörittele vaikka tätä mielessäsi ja mieti, miten lukujen arvot ja ruudun sisältö muuttuvat, kun tietokone suorittaa silmukoita kierros kerrallaan. Ehkä siitä jokin oivallus aukeaa.

Grey [18.06.2009 17:43:06]

#

Jaa-a, enpä tiedä vaatiiko ohjelmointi niin paljoa matematiikkaa, sillä se tuntuu olevan melkoslailla tilanneluonteista. Esim. vaikka joku tekstiseikkailu ei ehkä tarvitse matematiikkaa niin paljoa kuin joku 3D:tä hyödyntävä peli. Mikäli sitten hyötyohjelmissa, niin sielläkin ei näytä niin paljoa olevan juuri matematiikkaa koodin puolella, mutta tarve käyttää logiikkaa vaikuttaisi olevan ohjelmoinnissa suurempi. Tai ainakin se on edellytys hyvälle koodille..

-Grey-

trilog [18.06.2009 17:43:26]

#

feltsu kirjoitti:

Ja tietenkin vielä semmoinen mielenkiintoinen välikommentti että mitä ongelmia tuottaa se että inhoan matematiikkaa (mutta en koodausta, ei mitään järkeä :D), vaikkakin syy matematiikan inhoamiseen on sen vaikeus ku en siitä tajua hevon**ttua, josta herääkin kysymys että onko järkeä/mahdollista oppia ohjelmoimaan ilman mate­maat­tis­ta­su­per­me­ga­hy­pe­rext­ra­tur­bo­lah­jak­kuutta?

Itselläni "matematiikkakärpäinen" puraisi vasta ohjelmoinnin yhteydessä, minua ei matematiikka mitenkään erikoisesti kiinnostanut, mutta sitten siihen vain innostus heräsi kuin itsestään. Ohjelmoida pystyy, vaikka ei tietäisikään kaikkia matematiikan koukeroita, mutta matematiikan osaaminen helpottaa mielestäni ohjelmointia jonkun verran – onhan ohjelmointi paljolti matematiikan tapaista (vektorit, funktiot, alkiot jne.). Ennen kaikkea molemmat tarvitsevat loogista päättely- ja ongelmanratkaisukykyä, sekä molemmat myös kehittävät sitä.

feltsu kirjoitti:

Ja sitten jos jollain vielä ois joku yleispätevä vastaus semmoseen kysymykseen mikä mulla on päässä että miks en opi koodaamaan vaikka haluiaisin, luen tutoriaaleja, kokeilen, yritän, teen (väärin) mutta SILTIKÄÄN en vaan ymmärrä koodausta.. Ja sillä tarkoitan sitä että vaikka saankin jotain aikaseksi, niin en ymmärrä siitä mitään ja vaikka kaveri selittää mulle niin en silti ymmärrä :D Niin oonko mä sitten vaan idiootti vai missä vika?

Voiko ohjelmoinnin oppia pelkällä motivaatiolla vai vaatiiko se muutakin?

Motivaatiolla on suuri merkitys oppimisessa, jos olet motivoitunut niin todennäköisesti opit myös asian. Motivoituminen tosin itsessään ei riitä, vaan tarvitaan myös paljon harjoitusta ja "vanha" sananlaskukin kuuluu "koodaamaan ei opi kuin koodaamalla". Ihmisten väliset erot toki vaikuttavat oppimisprosessiin myös, siksi sinun on löydettävä juuri itsellesi sopiva oppimistapa. Toiset oppivat lukemalla monia sivuja dokumentaatioita läpi, toiset pienien esimerkkien avulla, toiset omien virheiden kautta jne. Älä hätäile tai vaivaudu, jos et osaa jotain asiaa heti; jonain päivä vielä naurat miten yksinkertainen asia oli, ja nyt se sujuisi vaikka silmät sidottuina.

feltsu [18.06.2009 18:08:59]

#

Kiitoksia paljon vastauksista! Tässä nyt ois tämmönen yks esimerkkiprojekti minkä oon tehny C:llä, kertoo vähän siitä mitä osaan ja mitä en :D (voimme huomata että taulukoita esimerkiksi ei ole käytetty) :D Mut tää on vaan tämmönen lelu, ei mikää "oikee ohjelma" :)

http://thomas85.wippiespace.com/projektit/menusource.rar

EDIT - Ja tässä ohjelmassa oon tehny kaiken itse, en oo mistään lainannut koodia (sanottu EI Copy/Pastelle)

kayttaja-2791 [18.06.2009 19:33:54]

#

Ongelmasi taitaa liittyä toteutuksen suunnitteluvaiheesen, mikä tietysti aloittevalla on erityisen vaikeaa. Kun kokemusta toimivien ratkaisujen tekemisestä ei ole, ei osaa edes etsiä niitä oikeita asioita esimerkiksi internetistä. Tähän tosin saa apua esim. täältä putkasta, kertoo mitä haluaa tehdä ja kyselee sitten vinkkejä (ei valmista koodia) kuinka sellainen kannattaisi toteuttaa. Samalla oppii tehokkaasti (toivottavasti) hyviä suunnittelumalleja erilaisiin ongelmiin.

Ohjelmointiin pätee sama kuin lähes asiaan kuin asiaan, se on mahdollista kelle vain, mutta lahjakkaille se oppiminen sujuu vähemmällä työllä.

lainaus:

EDIT - Ja tässä ohjelmassa oon tehny kaiken itse, en oo mistään lainannut koodia (sanottu EI Copy/Pastelle)

Tietysti hyvä oppimisen kannalta, mutta älä tartu liikaa tuohon periaatteeseen... Turhaa on tehdä sellaista työtä minkä joku on jo tehnyt (ja on valmis sen jakamaan). Ohjelmasi luultavasti itseasiassa käyttää jotain ulkoisia kirjastoja jotka voidaan ainakin periaattellisella tasolla laskea "lainaamiseksi".

Ja mitä tulee kieleen, voisin suositella sinulle Javaa. Tutoriaaleja löytyy paljon, kirjastot ovat kattavat ja kieli ei ole hassumpi (tosin ajoympäristössä onkin toivomiseen varaa, mutta se on aika pieni miinus harrastelijaprojekteissa). Eclipse tai Netbeans vain lataukseen ja värkkämään.

Antti Laaksonen [18.06.2009 19:40:24]

#

feltsu kirjoitti:

Mutta sitten tietysti herää kysymys, että onko toi VB 6:en opettelu turhaa tässä vaiheessa (siirtyäkö suoraan VB.NETtiin) vai takas opettelemaan C:tä? Vai mitä tulis tehä..?

VB6, VB.NET, C, C++ ja Python ovat hyvin samanlaisia kieliä. Jos osaa yhtä, ei ole vaikeaa oppia muita. Jos VB6 tuntuu sinulle sopivalta kieleltä, se on hyvä valinta.

feltsu kirjoitti:

Ja tietenkin vielä semmoinen mielenkiintoinen välikommentti että mitä ongelmia tuottaa se että inhoan matematiikkaa

Tavallisessa ohjelmoinnissa ei tarvitse juuri matematiikkaa: yläasteen tiedot riittävät. Et ole muuten yksin, koska opiskelen yliopistolla tietojenkäsittelyä ja suuri osa täällä opiskelevista inhoaa matematiikkaa.

feltsu [18.06.2009 19:53:16]

#

JTS kirjoitti:

Tähän tosin saa apua esim. täältä putkasta, kertoo mitä haluaa tehdä ja kyselee sitten vinkkejä (ei valmista koodia) kuinka sellainen kannattaisi toteuttaa.

No tää nyt menee oikeestaan pikkusen offtopiciksi, mutta niin sopivasti JTS mainitsi asiasta että päätän kuitenkin kysäistä, elikkä suunnitelmissa ois tehdä Nethack-tyyppinen peli (ehkä enemmän ADOM ku Nethack mut kuitenkin) ja lueskelin sen oppaan QuickBasiccia varten (kiitos hunajavohveli).. Mutta itse kysymys oiskin sitten se että kuinka hyvin tota voi käyttää VB6:n kanssa tota koodia minkä hunaja on jo kirjottanu? Että onnistuuko porttaaminen suht iisisti vai kannattaako vaan alottaa koko homma alusta?

Niinjoo ja tietenkin taas iso kiitos kaikille vastanneille! On ollut apua ainakin motivaation nostossa joka on tässä vähän hiipunut kun tuntuu ettei mitään onnistu oppimaan, mut alku aina hankalaa tai jotain :D

-Feltsu

EDIT - Niinjoo ja ettei tule kommentteja tyyliin "aloita helpommasta" tms niin selvennykseksi, että tarkoitus ei ole aluksi tehdä mitään peliä per say, vaan ennemminkin tommonen moottori missä olisi hahmon liikutellua ja ASCII-mappia ja siitä opitun myötä sitten alkaa väsäilemään sisältöä ja mahdollista peliä (mikä ei luultavasti koskaan valmistuisi :)

kayttaja-2791 [18.06.2009 20:09:41]

#

feltsu kirjoitti:

Mutta itse kysymys oiskin sitten se että kuinka hyvin tota voi käyttää VB6:n kanssa tota koodia minkä hunaja on jo kirjottanu? Että onnistuuko porttaaminen suht iisisti vai kannattaako vaan alottaa koko homma alusta?

Nyt olisi tietty nohevaa itse heittää muutama vinkki kerta avunsaantia mainostin, mutta tämä kyllä menee minulta melkoisen ohi oman osaamisalueen... hunajavohvelin oppaasta kannattanee ainakin katsoa ne pääkohdat, eli kuinka kartat ladataan, ukkoa liikutetaan, hirviöt luodaan, peliä päivitetään jne. sillä ne soveltuvat varmasti kieleen kuin kieleen. Toteutus vain vaihtuu.

Itse lähtisin tuota toteuttamaan varmastikin oliopohjaisesti, josta voisinkin antaa vinkkejä, mutta VB6:sta en ole koskaan käyttänyt joten jollakulla toisella on varmasti antaa parempia neuvoja.

Kuitenkin, hyvä aloitus varmasti olisi saada komentorivi-ikkuna (tai vastaava) näkyviin niin että sinne saa tulostettua sen pelaajan (eli merkin). Sitten voikin miettiä kuinka sitä voisi liikuttaa näppäimistöllä. Eli hunajavohvelin esittämä rakenne ohjelman toteuttamiseen vaikuttaa ihan järkevältä.

feltsu [18.06.2009 20:18:04]

#

Joops!

No pointtina olisi että sitten siinä valmiissa pelissä olisi windows-ikkuna joka olisi jaettu osiin, yhdessä osassa olisi kartta, yhdessä näkyisi inventory, yhdessä pelaajan statit ja yhdessä tallennus- jne menu-nappulat. Ja ton layoutin toteuttaminen on iisiä VB6:ssa (jonka takia siitä pidänkin) mutta noi nyt on vielä haaveita tässä vaiheessa :) jos nyt vaan pitäydyn siinä että yritän ens alkuun saada ton ukkelin näkyviin siinä yhdessä osassa ja siitä liikuttelemaan ja näin pois päin :)

(Alkaa meinaa oikeest menee offtopicciin koko touhu :D)

-Feltsu

RQ [18.06.2009 20:44:46]

#

feltsu kirjoitti:

Joops!

No pointtina olisi että sitten siinä valmiissa pelissä olisi windows-ikkuna joka olisi jaettu osiin, yhdessä osassa olisi kartta, yhdessä näkyisi inventory, yhdessä pelaajan statit ja yhdessä tallennus- jne menu-nappulat. Ja ton layoutin toteuttaminen on iisiä VB6:ssa (jonka takia siitä pidänkin) mutta noi nyt on vielä haaveita tässä vaiheessa :) jos nyt vaan pitäydyn siinä että yritän ens alkuun saada ton ukkelin näkyviin siinä yhdessä osassa ja siitä liikuttelemaan ja näin pois päin :)

(Alkaa meinaa oikeest menee offtopicciin koko touhu :D)

-Feltsu

Kannattaa tsekata tämä opassarja, sillä pitäisi päästä hyvin alkuun, jos kiinnostaa VB:llä peliohjelmointi.

feltsu [18.06.2009 20:49:09]

#

RQ kirjoitti:

Kannattaa tsekata tämä opassarja, sillä pitäisi päästä hyvin alkuun, jos kiinnostaa VB:llä peliohjelmointi

Jeps, toi on moneen kertaan luettu ja toi pelikin on melkein tehty, vaikken saanu sitä toimimaan ku se sano jotai MDCS libraryn puuttumisesta tai jotain muuta vastaavaa, sain kyllä sen Antin kirjoittaman koodin muutettua exe:ksi mutta omaani en saanu, et en sit tiiä mikä vika ja missä, en oo pahemmin kerenny nyt sitä omaa koodia vilkuilla että missä siellä on tullu kirjotusvirhe :) Meinaa kopioin sen koko koodin (en siis copypastennu vaan kirjoitin itse kokoajan seuraamalla mitä Antti oli kirjoittanut) Mutta juu, toi on kyllä mahtava opas ja tuntui että siitä ainakin opin jo jotain ku se oli niin loistavasti kommentoitua (kiitokset jälleen kerran Antti Laaksoselle)

-Feltsu

Mobel [18.06.2009 22:47:33]

#

VB6:sessa ei tietääkseni onnistu komentorivisovellukset ainakaan ihan helposti. Ei varmasti ole ollenkaan huono vaihtoehto aloittaa jollakin muulla Basic-sukuisella kielellä. Kuten eräässä vireillä olleessa keskustelussa kävi ilmi, on QBasic edelleen todella hyvä kieli ohjelmoinnin opetteluun ja samalla voit terästää vanhoja taitoja.

Aloitellessani kyseisellä kielellä olin samalla tavalla hukassa, enkä osannut juuri kehittää omia ratkaisuja, mutta jossain välissä palaset vain loksahtivat paikoilleen. Etenkin Javaan siirryttyäni homma alkoi luistamaan.

En myöskään ennen juuri pitänyt matematiikasta, mutta yläasteen lähentyessä loppuaan alkoi sekin kiinnostaa enemmän ja enemmän. Tiedä sitten johtuiko ohjelmoinnista vai muuten vaan iän karttumisesta.

Mielestäni ei alussa juuri kannata vaivata itseään sillä, tekeekö kielellä nykyään mitään. Jos kieli tuntuu mukavalta, on siitä hyötyä ohjelmoinnin opettelussa. Ja yhden kielen kun oppii, on seuraava jo huomattavasti helpompi hallita.

Jackal von ÖRF [18.06.2009 22:55:23]

#

Ohjelmoinnilla ja matematiikalla on yhteistä, että ne molemmat vaativat vastakkaisten ääripäiden taitoja: rajatonta luovuutta ja äärimmäistä pikkutarkkuutta. Ensin tarvitaan luovuutta siihen, että pystyy hahmottamaan ongelman ja keksii siihen ratkaisun, minkä jälkeen tarvitaan pikkutarkkuutta ja järjestelmällisyyttä siihen, että rakentaa ratkaisun pala palalta yhdistelemällä käytettävissä olevia sääntöjä. Kaikilta tuo ei välttämättä onnistu. Esim. taiteilijalta vaaditaan luovuutta ja kirjanpitäjältä pikkutarkkuutta, mutta harvalla on taipumuksia olla samanaikaisesti taiteilija ja kirjanpitäjä.

Ensimmäisellä kielellä ei ole väliä. Kunhan valitsee yhden ja käyttää sitä kunnes osaa ohjelmoida. Sitten kun osaa ohjelmoida, niin uuden kielen oppii päivissä tai viikoissa. Sitten pystyy myös paremmin arvioimaan, mihin mikäkin kieli soveltuu, ja voi valita kielen käyttötarkoituksen mukaan.

Tässä vielä tiivistelmä, että miten oppia ohjelmoimaan: http://norvig.com/21-days.html

lrp [30.06.2009 13:03:20]

#

Tää toimii missä vaan:
Hard work beats talent if talent refuses to work hard


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta