wiki:qa/2015k
Last modified 3 years ago Last modified on 2015-02-01 19:39:24

Kysymys ja vastaus -palsta » 2015 kevät

Vastaajat:

  • VL: Vesa Lappalainen
  • AJL: Antti-Jussi Lakanen (Ohj1-kurssin luennoija keväisin, jatko-opiskelija)
  • AJK: Antti Juhani Kaijanaho (mm. erilaisten kieliin liittyvien kurssien pitäjä, jatko-opiskelija)
  • JP: Jouni Potila (Ohj1-kurssin tuntiopettaja)
  • TJ: Tero Jäntti (Jypeli-kehittäjä)
  • TK: Tomi Karppinen (Jypeli-kehittäjä)
  • ji: Jonne Itkonen

(Järjestä kysymyksiä ryhmiin omatoimisesti.)

Kurssijärjestelyt ja työkalut

Q: Tuleeko kaikista luennoista ja demoista videot kurssin sivulle?
A: Tulee. -AJL

Q: Ei ole varsinainen kysymys, mutta olisi mielenkiintoista nähdä jotakin jakaumaa tämän kurssin keskenjättäneiden demoaktiivisuudesta. Läpipäässeistä kyseinen jakauma taisi näkyäkkin luennolla.
A: Tuskin tulee yllätyksenä, että ne jotka tekevät vain pakollisen minimimäärän demoja (40 % kaikista demotehtävistä) eivät pääsääntöisesti saa hyvää arvosanaa -- jos edes pääsevät läpi. Vastaavasti, käytännössä kaikki ne, ketkä tekevät "paljon" demoja (lähellä 100 prosenttia), saavat käytännössä poikkeuksetta hyviä arvosanoja. Voin näyttää tarkemman kuvan luennolla. -AJL

Q: Mikä on avoin lähdekoodi?
A: Avoin lähdekoodi tarkoittaa sitä, että ohjelman tekijä julkaisee ohjelman valmiiksi käännetyn ajettavan binääriversion lisäksi ohjelman lähdekoodit, jotta kuka tahansa voisi parannella ohjelmaa. Esimerkiksi Linux-käyttöjärjestelmäydin on avointa lähdekoodia ja kasvanut sen avulla maailmanlaajuiseksi. Yleensä lisenssiehdoissa (esim. Creative Commons -lisenssit) vaaditaan, että jos muutettua ohjelmaa halutaan jakaa eteenpäin, niin myös sen muunnellut lähdekoodit on annettava mukana. Näin myös alkuperäinen tekijä hyötyy siitä, että muut parantelevat sovellusta. Jotkut antavat tuotoksensa täysin vapaaseen käyttöön ilman mitään rajoitteita. -JP
A: Avoimen lähdekoodin tarkka määritelmä on the Open Source Definition. -AJK

Muut kurssit ja työkalut

Q: Onko ohjelmointi 2 kuinka peliohjelmointi painotteinen?
A: Ei samalla tavalla kuin Ohj1. Kurssilla tehdään harjoitustyö, jossa on graafinen käyttöliittymä. Toki tuota voi viedä pelilliseen suuntaan, jos joku haluaa sitä niin painottaa, mutta se voi olla myös täysin toiseenkin suuntaan. -VL

Q: Jos ajatellaan sellainen hurja skenaario, että tämä kurssi menee hyvin ja haluaa tehdä v. 2016 keväällä Ohjelmointi 2-kurssin, mitä kannattaa tehdä kesän ja syksyn aikana, jotta tämän kurssin asiat eivät tyystin unohdu ja joudu aloittamaan kakkoskurssia nollasta? Opetusohjelman mukaan syksyllä 2015 ei ollut ohjelmointikursseja tarjolla.
A: Ohj 2 on tietääkseni tulossa myös kesällä 2015, joten sitä kannattaa harkita. (Kesätarjonta kannattaa aina tarkistaa laitoksen opinto-ohjaajilta.) -AJL

Q: Mikä on GitHub ja opetellaanko sen käyttöä kurssilla tai muilla kursseilla?
A: GitHub on palvelu, johon voi rekisteröityä ja johon voi tallentaa git-versionhallintatyökalulla tietoa nk. repositoryihin ("tietovarasto"). Palvelu myy lisäpalveluna privaattirepositoryjä ja sitä, että "repoja" voi olla enemmän. Versionhallinta on siis varsinkin ohjelmoinnissa aputyökalu, joka säilyttää tiedostoista useampia vanhoja versioita, joten vanhoihin versioihin on aina helppo palata. Tällä kurssilla käytämme harjoitustyössä SVN-versionhallintaohjelmistoa ja yliopiston SVN-palvelinta. Git:n käyttöön yliopistolla on Yousource-palvelu. -JP
A: GitHub tarjoaa opiskelijoille privaattirepoja myös ilmaiseksi, kannattaa tutustua. -AJL

Oppiminen ja opiskelu

Q: Millainen oli oma lähtötasosi / mikä oli vaikeinta kun aloitit koodauksen?
Q: Kuinka itse aloitit ohjelmoinnin ja koitko silloin sen haastavaksi?
A: Muistan että ensimmäinen ohjelmointikurssi (korkeakoulussa) jonka kävin, käsitteli lähinnä C-kielen ominaisuuksia, pointtereita ja pointterien pointtereita. Kun en silloin niille ei keksinyt oikein mitään järkevää käyttöä, niin asia tuppasi unohtumaan. Tässä mielessä olio-ohjelmointi myöhemmin tuntui järkevältä, kun "luokat" (esim. class Henkilo) ja "oliot" (Henkilo aajii = new Henkilo(...);) edustivat harjoituksissa jotain oikeasta elämästä tuttua ilmiötä tai asiaa. -AJL

Q: Mitä kirjoja kurssin aikana kannattaisi lukea, että oppisi paremmin asiat?
A: Hyvää kirjallisuutta löytyy kurssin etusivulla linkitetystä kohdasta Muu oheislukemisto. -JP

Pelit opetuksessa

C# sekä muut kielet

Q: Millä kielellä itse aloitit ohjelmoinnin?
A: QBasic / QuickBasic?. Huomasin ala-asteikäisenä, että QB-tulkki tuli MSDOS:n mukana. Sisäänrakennettu help-toiminto oli ahkerassa käytössä, kun kiinteää nettiyhteyttä ei vielä ollut. Sen jälkeen opettelin hieman Pascalia, mutta QB oli pitkään ehdoton suosikkini. -JP
A: Ihan ekana kokeilin Basicia, mutta Java oli eka kieli josta innostuin enemmän. Tai rehellisesti sanottuna, ensimmäinen kunnon opettajani sattui käyttämään opetuksessaan Javaa. -AJL

Q: Eroavatko eri ohjelmointikielet paljonkin toisistaan?
A: Kyllähän ne eroavat. Eri kielillä tehtyjä Hello Worldeja voi katsella vaikkapa Veskun monisteesta. -AJL

Q: Miten C# vertautuu hieman vanhempiin kieliin, kuten C tai FORTRAN, suorituskykynsä ja ohjelmoijaystävällisyytensä suhteen?
A: Ei kai me sitä käytettäisi jos uskottaisiin että jompikukmpi em. olisi jossakin suhteessa parempi :-) -vl

Q: Mitä ohjelmointikieliä osaat? Minkä niistä kielistä koet helpoimmaksi, minkä vaikeimmaksi, miksi?

Q: Kysymys luennoitsijalle: Mitä muita suosittuja ohjelmointikieliä on, joihin ei tällä kurssilla tutustuta?
A: Molempiin em. Katso kuvaa - vl

Q: Jos itse tekisit peliä tositarkoituksella, mitä kieltä käyttäisit?
A: Riippuu mille alustalle tekee (plus tuhannesta muustakin asiasta). Mutta karkeasti voisi sanoa että iPhonelle pelit tehdään Objective-C:llä tai Swift:llä, PC:lle varmaankin C tai C++. Windows Phonelle C#. -AJL

Q: Miksi kurssilla käytettävää C#-kieltä olisi hyvä osata käyttää?
Q: Onko C#-kielen osaamisesta hyötyä muiden ohjelmointikielien opettelussa?
A: On. C# on hyvin samankaltainen monen muun kielen kanssa - esimerkiksi Javan. Toki on myös eri paradigmoihin perustuvia kieliä, ks. esim. https://fi.wikipedia.org/wiki/Funktionaalinen_ohjelmointi Meilläkin on tarjolla funktionaalisen ohjelmoinnin kursseja. -JP
A: Jokin kieli on opeteltava ensimmäisenä, ja mielestämme C# on hyvä vaihtoehto. C#, paitsi se on olio-ohjelmointikieli, sisältää myös funktionaalisia ominaisuuksia, joten se on nk. moniparadigmainen ohjelmointikieli. Lisäksi se muistuttaa moneltakin osin monia muita "tuttuja" kieliä kuten Java. Voit siis hyödyntää oppimaasi muissa kielissä joita tulet opettelemaan. Tuskin kuitenkaan tulet pelkästään C#:a kuitenkaan käyttämään ihan koko loppuelämääsi. -AJL

Q: Miksi yliopistojen ohjelmoinnin perusteissa käytettävä kieli vaihtelee (c#, javascript, python)?
A: Koska algoritminen ajattelutapa ohjelmoinnin taustalla on kielestä riippumatta samaa. Meilläkään Ohjelmointi 1 ja 2 eivät ole samalla kielellä. -JP

Q: Mikä on henklökohtainen mielipiteesi siitä että, mikä on monipuolisin ohjelmointikieli pelien tekemiseen?

Q: Millä kielellä nykyiset 3d-pelit tehdään?

Q: Miksi on olemassa niin monta eri ohjelmointikieltä? Mihin niitä tarvitaan ja onko niillä jotain olennaista koodattavan ohjelman ominaisuuksiin vaikuttavaa eroa?

Q: Miten yhtäläisiä eri ohjelmointikielet ovat? Onko toisesta ohjelmointikielestä helppo vaihtaa toiseen, jos osaa toisen?

Muut käyttöjärjestelmät kuin Windows kurssilla

Q: Olisiko opettajilla tai ohjaajilla mitään mahdollisuuksia opetella Macin ja Linuxin käyttöä, jotta opetus olisi hieman tasavertaisempaa kaikille opiskelijoille? Läheskään kaikki opiskelijat eivät varmastikaan ole konetta ostaessaan / käyttöjärjestelmää valitessaan tienneet opiskelevansa tulevaisuudessa tietojärjestelmätieteitä, ja ohjaajien kommentit "elä valintojesi kanssa" tuntuvat hieman törkeiltä ottaen huomioon sen, että kurssin on tarkoitus opettaa kaikille opiskelijoille tasapuolisesti ohjelmointia.
A: Ainakin tässä vaiheessa tuntuu siltä, että tilanne on nyt aidosti uusi. Mac/Linux?-käyttäjiä on ollut aiemmin vain kourallinen, mutta pikkuhiljaa Macceja on koko ajan enemmän. Tuo laittaa myös meidät haastavaan tilanteeseen työkalujen valinnan suhteen, ja luulenkin että ohjaajan kommentti on enemmänkin itseironisesti liittynyt meidän omaan valintaamme työkalujen suhteen :-). Osaltani pahoittelen jos olet kommentin kokenut epämiellyttäväksi, koska tottakai haluamme tarjota tasapuoliset mahdollisuudet kaikille osallistujille. -AJL

Jypeli-spesifiset

Q: Lumiukkoa luodessa käytettiin apuna Jypeliä. Jos piirrettäisiin kolmio, miten se saataisiin käännettyä ympäri (eli kärjen osoittaessa ylöspäin käännettäisiin kärki osoittamaan alaspäin)?
A:: kolmio.Angle = Angle.FromDegrees(180); , ks. Angle,FromDegrees. - vl

Yhteydet matematiikkaan

Mielipiteet ja suositukset

Q: Mihin suuntaan näet ohjelmoinnin kehittyvän tulevaisuudessa? Niin tekniikan kuin ohjelmointiin liiittyvien työnkuvien ja työpaikkojen osalta?

Q: Kuinka paljon olette hyötyneet ohjelmointitaidoista työn ohella?
A: Jos tarkoitat että onko ohjelmoinnista hyötyä vapaa-ajalla, niin tottakai. Kun ymmärtää ohjelmoinnin perusteet, voi helposti hyödyntää sitä tietoa muualla. Sanotaan vaikka, että sinulla on kansiollinen - vaikkapa 150 kappaletta - valokuvatiedostoja, ja haluat pienentää alkuperäiset 20 megapikselin kuvat lähettääksesi ne esikatseltavaksi kaverillesi. Voit toki avata jokaisen kuvan yksitellen, pienentää koon, ja tallentaa uudella nimellä, mutta tämä kestää pitkään. Tai sitten voit skriptata tuon saman käyttäen Irfanview-ohjelman komentorivikäyttöliittymää. Alla esimerkki.

MD pienet
SET KOKO=1000
IF NOT '%1'=='' SET KOKO=%1
"c:\Program Files (x86)\IrfanView\i_view32.exe" * /resize=(%KOKO%, %KOKO%) /aspectratio /resample /sharpen=25 /jpgq=85 /convert=pienet\$N_$O

Q: Millaisena näet .NETin tulevaisuuden? Tuleeko se laajenemaan useammille alustoille kuten Macille tai Linuxille? .NETin serveripuolen koodi ainakin on avattu ja ilmeisesti porttaus on käynnissä.
A: Mono-projekti on avoimen lähdekoodin toteutus .NET:lle. -JP
A: Ja siis Monohan toimii jo em. järjestelmissä, toki jossain määrin rajoitetusti. -AJL

Ohjelmointi, tieteet ja taiteet

Q: Mikä on / Onko mikään vaikeaa henk. koht. sinulle ohjelmoinnissa? Saavuttaako koodari joskus sellaisen tason että kaikki onnistuu kuin vettä vain, vai onko aina jotain haasteellista?
A: Koko ajan oppii uutta. Tai oikeastaan voi olla oppimatta uutta jos ihan välttämättä haluaa, mutta ala ja työ sinänsä tarjoavat koko ajan uutta. Tulee uusia ominaisuuksia ohjelmointikieliin, laitteet muuttuvat, tavat tehdä asioita muuttuvat. Vielä 10 vuotta sitten ei kukaan kohissut mobiilipeleistä, mutta nyt se on iso bisnes. Kymmenen vuoden päästä voi taas olla joku toinen juttu jota emme nyt ajatelleet, ja se vaatii taas uudenlaista opettelua myös ohjelmoinnin osalta. -AJL

Q: Mitä taitoja hyvältä ohjelmoijalta edellytetään?
A: Kykyä kuunnella (asiakasta, muita tiimiläisiä, pomoa, ...), kykyä ja halua omaksua uutta tietoa joskus aika nopeastikin, kärsivällisyyttä, rohkeutta, ryhmätyötaitoja. On hyvä pitää itsensä ajan tasalla tekniikoista ja teknologioista, mutta samalla täytyy olla armollinen itselleen ja muille siinä, että et pysty tietämään kaikkea. -AJL

Työnäkymät

Q: Mikä on ohjelmoinnin toimialan nykyinen tila? Ovatko kauhutarinat ahnaista ohjelmoijista, jotka tahalleen jättävät ohjelmiinsa bugeja totta?

Q: Millaisia työpaikkoja ohjelmoinnin huippuosaajat voivat saada?

Q: Sanotaan, että tällä kurssilla pärjää kohtuullisen hyvin. Mitä voi/kannattaa kirjoittaa osaamistasostaan omaan CV:een? (Olettaen myös, ettei aiempaa ohjelmointikokemusta ole.)

Q: Voiko ohjelmontihommia hakea jos ensimmäisen kahden ohjelmmoinnin kurssin jälkeen? Tai siis onko oppilaan osaamistaso sen jälkeen riittävällä tasolla olettaen että hän pärjää kurssilla kohtalaisesti

Henkilökohtaisemmat

Q: Kysymys opettajalle: Mistä asioista Sinä et pidä ohjelmoinnissa?
A: Helppo vastaus on se että kun on niin paljon asioita jotka muuttuvat koko ajan, ja omaa osaamista pitäisi päivittää ihan koko ajan. -AJL

Sekalaiset

Vastaamattomat

Q: Ohjelmointi 1 / Demo 1 / Tehtävä B3.

Q: Kuinka paljon hyötyä ohjelmoinnista on fysiikan lukijalle?