wiki:k2015/qa
Last modified 2 years ago Last modified on 2015-02-03 08:51:28

Ohjelmointi 2/ Kysymyksiä ja vastauksia

Kysymykset ovat alun perin kotoisin demotehtävästä, missä sai esittää luennoitsijalle yhden kysymyksen. Vastaan näihin "henkilökohtaisiin" sitä mukaa kuin ehdin, mutta yleisempiin saa toki muutkin vastata.

Vastaajat:

  • VL: Vesa Lappalainen
  • AJK: Antti Juhani Kaijanaho (mm. erilaisten kieliin liittyvien kurssien pitäjä, jatko-opiskelija)
  • AJL: Antti-Jussi Lakanen (Ohj1-kurssin luennoija keväisin)
  • ji: Jonne Itkonen
  • VT: Tirronen
  • JP: Jouni Potila (Ohj1-kurssin tuntiopettaja s2012 ja k2013)

Kevät 2015

1. Kurssin suorittaminen

Q: onko kurssille tulossa ohjelmointi 1 tapaan "pahasti pihalla" ryhmää mikäli demotehtävät käyvät liian haasteellisiksi, mutta haluaa enemmän demopisteitä?
A: Tälle kurssille ei tule. Pääteohjauksia on melkoinen määrä, pitää vaan käydä siellä ja pitää huoli että saa ohjaajilta aikaa. Käy niin monessa ryhmässä kuin tarvitsee. - VL

Q: Onko kurssin sisältö ja suoritustavat pysyneet alusta alkaen samanlaisina?
A: 90-luvun alusta asti kunkeksin pistää demot pakkolliksi ja harjoitustöille aikataulut. Sitä ennen läpäisy oli huonoa. Kieli on sitten toki vaihdellut ja nyt tullut tämä graafinen liittymä muutaman vuoden ajan. - VL

Q: Minkähän takia tätä Ohjelmointi 2 -kurssia niin raskaaksi haukutaan?
A: Siitä ei pääse läpi ruksi-ruutuun menetelmällä, koska läpäisy ei ole kurssin pääasiallinen tavoite, vaan oppiminen. Pelkällä läpäisemällä ei vielä osaa mitään! - VL

Q: Ohjelmointi 2 on "tunnetusti" yliopiston vaikeimpia kursseja. Kotisivuilla ilmoitetussa aikataulusuunnitelmassa on demojen tekemiseen varattu aikaa keskimäärin 5 tuntia viikossa. Kuitenkin useimmilla henkilöllä näihin menee aikaa yli 10 tuntia. Miksi kurssilta saatava opintopistemäärä on sitten vain 8 op, jos oikeasti työmäärä on paljon tätä suurempi?
A: En tiedä ovat opiskelijat tulleet hitaammiksi vai viekö työkalut enammän huomiota itse asialta vai yritetäänkö väkisin liian paljon tehdä. Kyllä keskimääräisen opiskelijan pitäisi ne perustehtävät voida tehdä tuossa 5-6 tunnissa. Mutta toki tiedän itsekin että kun joku menee pieleen, siinä saa menemään vaikka viikon etenemättä mihinkään. Siksi meillä on ohjaajat että tähän ei pitäisi joutua. Kuitenkin vuosien varrelta on noita aikamittauksia ja kohtuullisesti ollaan skaalassa. Joku voi sada jonkin kurssin hieman halvemmalla, mutta kun jos meinaa kelvollisen työkalun saada ohjelmoinnista, sitä pitää tehdä. Ja muutakin pitää opiskelilla eli ei koko opintoja pistemäärää voi pelkästä ohjelmoinnista saada. Kun vaihdettiin ov => op, niin Ohj2 oli ykis kursseita jossa muutos meni ylöspäin, 5 ov => 8 op ja sitten se C++ lisäosa menee helposti siihen 26 tuntiin. Sen päälle se JSP osa myös. Sitten saattaa olla tulossa lisäosa Java+tietokannat (1op). Eli kyllä noista kertyy. - VL

Q: Miksi demokerroista on itseisarviointi nyt? (vai onko aina ollu ohj2)
A: Ei ole ennen ollut. Ongelma on se, että edellisen kerran demojen vastauksia ei omaksuta ja silloin niiden päälle ei voi rakentaa. Tämä on yritys siihen, että jokainen miettisi miksi mitäkin tapahtui edellisellä kerralla ja joko vastausten jälkeen ymmärtää asiat. Ja osaa siitä tarkentaa itselleen mitä pitää kehittää. - VL

Q: Mikä on keskeisin/tärkein/suositeltavin asia (tai jos yksi ei riitä, niin kolme asiaa), joka tällä kurssilla tulisi opetella mahdollisimman hyvin?
A: Korpissa on se osaamistavoitetaulukko. Empä siitä osaa kummemmin tiivistää. Ilman muuttujia, parametrin välitystä, aliohjelmia on vaikea päästä kunnolla olioihin käsiksi (koska ne koostuvat kaikista noista). - VL

Q: Onko mahdollista saada enemmän ohjelmointi demoja
A: Kyllä niitä on tulossa, ota loppupään demotehtäviä viimevuodelta ja pohdi niitä valmiiksi. - VL

Q: Onko kyselystä mitään näkyvää hyötyä opiskelijoille demopisteen lisäksi?
A: Näiden kyselyiden pohjalta on kirjoitettu parin opinnäytetyötä ja tarkoitus on tehdä julkaisujakin heti kun löytyy opiskelija, joka jaksaa tehdä näiden kimpussa tutkimusta. - VL

Q: Mistä näkisi helposti eri kielien komentoja?
A: Nyt kun itse "opettelen" JavaScriptiä ja Pythonia, niin kyllä ensin mietin miten homma menisi C#:issa/Javassa ja sitten etsin vastaavilla termeillä netistä. StackOverflow on hyvä paikka. Ja kielten omat kotisivut. - VL

Q: Onko C# ja Java-kielen eroavaisuuksista jollain sivulla yksinkertainen ja selkeä esitys vai tuleeko erot oppia tilanne kerrallaan kantapään kautta?
A: Jonkin verran tuota on koitettu luentomonisteeseen kerätä ja loput mun mielestä tarvittavat tulee luennoilla ja demoissa. Kotisivuilla on linkkejä myös muiden ko. erojen materiaaleihin. - VL

Q: Kuinka paljon kurssin asiat tulevat vaikeutumaan loppua kohden (vaikkapa ohj1-kurssiin verrattuna)?
A: Kun oliot on käsitelty, niin asiamäärältään ei yhtään. Mutta kun samaa asiaa sovelletaan laajempaan skaalaan, niin ihmiset eivät taas näe metsää puilta ja eivät huomaa että ei tässä mitään uutta ole, saman soveltamista vaan. Eli avoimin silmin katsottuna ei vaikeudu. - VL

Q: Millainen jakauma arvolauseissa Ohj2-kurssilla? (Kun vertaa Ohj1-kurssiin)
A: Hyvin samanlainen. Kaikki ahkerat saavat 5, muutamat ykkösen. - VL

Q: Kysymys: Mikä on sinun mielestäsi SUOSITELTAVIN opiskelupolku JUY'ssa Ohjelmoinnin osalta

a) Kandi-vaiheeseen asti

  • eli mitä oheiskursseja Ohjelmointi 2 opiskelijoiden kannattaa suorittaa samalla?
    • Taisit alussa kertoakin tämän, mutta 'repetitio mater studiorum est'

b) Maisteri-vaiheeseen asti

  • Tiedän, tämä ei ole ajankohtaista vielä mutta kiinnostaa kuitenkin kovasti.

Lisäisi motivaatiota tässä vaiheessa, kun tietäisi 'polun'.

A: a) Algoritmit, käyettävyyteen liittyvät kurssit. b) Kyllä tuo pitäisi aika hyvin olla kuvattuna opinto-oppaassa. Tietoliikennettä, tietokonejärjestelmiä, muita kieliä (mm. funktio-kieliä), graafisia käyttöliittymiä, WWW-ohjelmointia, tietokantoja, projekteja jne... - VL

2. Työkaluista ja materiaalista

Q: Onko kurssin kieleksi valittu Java lähinnä siksi, että saadaan C#:lla 1. kurssin tehneet opiskelijat käyttämään jotain toista kieltä?
A: Itse asiassa tämän kurssin kieli on jo pidempään ollut Java. Ohj1 kurssin kieli vaihdettiin Jypelin takia (enkä kadu kumpaakaan) - VL

Q: Minkälainen prosessi on opetuksissa käytettävien kielten valinta?
A: Yleenä kieli vaihdetaan kun "maailmalla" tapahtuu riittävästi. Esimerkiksi aikaan järkevästä pascalista luovittiin kun opiskelijat halusivat C:tä. Sitten kun olio-ohjelmointi tuli kuviin, kannatti siirtyä C++:aan. Javaan siirtyminen oli luontevaa kun Java valtasi alaa. C# tuli mukaan lähinnä Jypelin takia, kun se oli tehty sillä ja näin Ohj1 kurssin sisällön sai mielekkäämmäksi. Täytyy myös olla niin, että kurssia vetävä uskoo kieleen jota käytetään. - VL

Q: Miksi opettelemme Javaa, emmekä C#:ia? Eikö olisi järkevämpää keskittyä vain ja ainoastaan yhteen kieleen kursseilla, jotta siitä tulisi vahva kieli opiskelijoille, sillä mielestäni on ilmiselvää että jokainen pystyy itse laajentamaan kieliosaamistaan kun on jokin vahva kallio mistä lähteä?
Q: Miksi ohjelmointi 1- ja ohjelmointi 2 -kursseilla ei käytetä samaa ohjelmointikieltä, kun C# ja Java ovat niin samankaltaisia?
A: Siksi että opittaisin alusta asti näkemään metsää puolta. Kieli on homman vähäpätöisin asia. Ongelmat ovat syvemmällä ja niitä vain pahentaa keskittymällä kieleen. - VL

Q: - Ohjelmistokoulus on menossa kokoajan enemmän korkeamman tason kielien opetukseen (Java, .NET). Miten tärkeänä näet alemman tason kielien ymmärryksen (C, C++), jotka kuitenkin toimivat kaiken pohjana ja ovat edelleen ainoita vaihtoehtoja embedded maailmassa?
A: Sanoisin että embedded koodaajia on vähemistö ja heidän pitää olla parempia kuin "webbi-koodarit". Silloin toki pitää ymmärtää rauta alemmalta tasolta. En muuten itse oel embedded urallani kirjoittanut yhtään C:tä. Kaikki tein assemblerilla ja nykyisin siis Delphillä. Mutta lyhyesti: pienen vähemmistön takia ei kannata pilata enemmistön elämää. Meillä on kurssin päätteeksi C/C++-osa jossa saa esimakua tuosta. - VL
A: Se, että vain C/C++ olisi sopiva kieli sulautettujen järjestelmien ohjelmoimiseen on ikävä lausahdus, joka ei oikein koskaan ole pitänyt paikkaansa. Pienempiä järjestelmiä on ihan mukava ohjelmoida assemblerilla, varsinkin jos on makrot käytössä. Esimerkiksi Ericssonin puhelinkeskukset, joita on huimasti tällä planeetalla käytössä, on ohjelmoitu kielellä nimeltä Erlang. Forth on kautta aikain ollut suosittu sulautettujen ohjelmointikieli (vanhojen Macintoshien ja Sunin työasemien BIOS buuttasi Forthin päällä). Ranskanperunoiden laatua valvotaan Smalltalk-ohjelmiston avulla. Tiedänpä erään kehittäjän tehneen oman Lispin sulautetun järjestelmänsä ohjaamiseen. Vaihtoehtoja siis löytyy, kun vain innostuu etsimään ja kokeilemaan. -ji

Q: Olisiko harjoitustyön tekeminen C#:lla merkittävästi vaikeampaa kuin javalla?
A: Jossakin määrin olisi jopa helpompaa ja MS:n Blend olisi helpompi vekotin tehdä graafista käyttöliittymää. Tosin silloin Linux/Mac väki teilaisi minut :-) - VL

Q: Funktio-ohjelmoinnista on povattu paradigmaa tulevaisuuden ohjelmoinnille. Onko ohjelmoinnin peruskursseilla näillä näkymin tulossa muutosta ohjelmoinnin lähestymistapaan vai pitäydytäänkö proseduraalisessa tyylissä? Miksi?
A: Kyllä alkeisopetuskessa mennään varmaan vielä muutama vuosi näillä. Materiaalia on tehty pitkää ja uuden tekeminen on aina iso homma. Funktio-ohjelmoinnista on parikin kurssia tarjolla. Kannattaa mennä sinne ja katsoa mistä on kyse. Itse en tykkää siitä symboliikasta mikä noihin liittyy. Tykkään enemmän verbaalisista kielistä. Mutta sota.... - VL

Q: Olisiko mahdollista tehdä muutos luentomonisteeseen joka on netissä? Vaikka niin että luennolla käydyt asiat näkyisi reunalla punaisella ja itse voisi merkata lukeneeksi luennolla käydyt asiat vihreällä. Tämä ei ole kunnon kysymys, mutta on ollut mielessä. Eli samalla tavalla kuin nyt mutta siellä näkyisi myös mitä on käyty luennolla.
A: Ei ihan heti, koska tuossa on muita kehittämiskohteita isommalla prioriteetillä. Mutta voisi kokeilla käyttää omia huomautuksia (Comment/Note) noiden tekemiseen. Mieluummin kuin paljon punaista ja vihreää, näkisin että tavoite on saada merkinnät pois ja moniste "siistin näköiseksi". Mutta en silti sulje pois etteikö joskus voisi olla tulossa muitakin merkitätapoja kuin Notet ja se punaisen pois klikkaaminen. - VL

Q: Kysymys luennoitsijalle (joka ei mitenkään liity kurssiin tai ohjelmointiin, mutta jota kysyjä on miettinyt, koska kaikkea kummallista sitä tuleekin luennoilla joskus mietittyä): ID-numerosi Korpissa on 4. Oletan, että numerointi on juokseva, jokainen uusi opiskelija/ henkilökuntaan liittyvä saa seuraavan vapaana olevan numeron. Onko näin? Milloin ID:t (tai oikeastaan Korppi)on otettu käyttöön, siis minä vuonna? KENELLÄ ON NRO 1? (Onko jollakulla nro 0?) Millä perusteella 0 tai 1 on annettu juuri hänelle?
A: Muistaakseni 1 = admin, 2 ja 3 ovat ekoja kehittäjiä ja minä olin eka käyttäjä. Syksyllä 2001 oli ensimmäisen kerran käytössä Graafisten käyttöliittymien kurssilla. Nuo id:t on edeltävältä kesältä. Mutta tietyssä mielessä Korpin juuret ovat jo ihan 80-luvun alussa, milloin tein matikan laitoksella KurKi (= Kurssien Kirjanpito) ohjelman demopisteiden seurantaan ja arvolauseiden antamiseen. Sitten 97 aloitettiin Web-KurKi jok aoli käytössä tuohon Korpin alkuun saakka. - VL

Q: Miksi, kun klikkasin A1 tehtävässä olevaa linkkiä kurssikyselyyn, niin sain seuraavanlaisen virheen:

Virhe:
Sinulla ei ole oikeutta kyselyyn!
- Kyselyn vastausaika ei ole voimassa
- Et kuulu ryhmään, jolla on oikeudet kyselyyn

A: Olin laittanut linkin vahingossa viime vuoden kyselyyn. - VL

Q: Kurssin taustajoukoilla on valtava määrä osaamista, tietoa ja kokemusta. Voisiko kurssin olennaisimman sisällön tiivistää johonkin äärelliseen mittaan? Kysymykseni motivaatio on kurssin fyysisen ja sähköisen aineiston valtava määrä lukuisine työkaluineen, moninaisine tehtävineen, kymmenine sivuineen ja satoine linkkeineen.
A: TIM on askel tähän suuntaan. Sen alku on juuri siinä, että haluaisin eroon linkkisotkuista. Mutta asiaa on paljon ja sitä on hankala jäsentää, erityisesti kun asiat muuttuvat ja tulee uutta ja vanhaakaan ei viitisi heittää pois noilta sivuilta jos siinä on sisältöä. Mutta aina voi tehdä parantavia ehdotuksia. Meiltä on jonkin verran mielikuvitus loppu... - VL

Q: Miten comtestin saa tuottamaan sen testaukseen vaaditun alku- ja lopputekstin Macillä? Tarkoitan siis sitä tekstiä, joka ilmaantuu ruudulle niinne kommenttiriveille, kun on kirjoitettu (ja painettu) comt + ctrl + space.
A: Eikö Mac sitten tee tuota? - VL
A: Ei, ComTestissä on vikaa... -ji
A: Seison korjattuna, toimiihan tuo. Pitää vain olla JavaDoc-kommentin sisällä, kun yrittää tuon aktivoida. -ji

Q: Visual studion ja c# jälkeen, tuntuu todella raskaalta vääntää eclipsellä ja java:ksi. Muuttuuko kielien välillä vaihtelu tulevaisuudessa helpommaksi?
A: Kyllä tuo ero katoaa, Eclipse on aika hyvä työkalu. Jos olisit aloittanut toisinpäin, sanoisit samaa VisualStudiosta / C#:ista. - VL

Q: Miten StringBuilder ja String liittyvät toisiinsa ja miten (missä tilanteissa) niitä käytetään?
A: Vrt. Ohj1. String silloin kun sisältö ei tarvitse jatkuvasti muuttaa, StringBuilder silloin kun tarvitsee. Tyypillisesti isommat jonot rakennetaan ensin StringBuilderiin ja sitten ehkä muutetaan Stringiksi. - VL

Q: Onko jossain tarjolla hyvä lunttisivusto javalle (mielellään suomeksi)? Usein tehtäviä tehdessä olisi kiva jos olisi listoja esim. operaattoreista, silmukoista, kirjastoista(?) yms. ja niiden käytöstä yksinkertaiset esimerkit. Muistelen, että Ohjelmointi 1:llä aikaa meni siihen, että etsi jostain esimerkeistä ja monisteista apua siihen, miten mikäkin kirjoitettiin. Yksinkertainen syntaksi ilman kuvausta/yleisimpiä käyttökohteita ei riitä.
A: Jaa, se Java-kirja on yli 600 sivua. Miltä tuo näyttäisi? - VL

Q: Jos svnht:ta ei saa toimimaan omalla koneella, niin tuleeko ongelmia käsin siirtämisessä myöhemmissä vaiheissa ja olisiko parempi/helpompi tehdä ht mikroluokan koneilla, missä svnht toimii?
A: Olisi kiva tietää mikä siinä ei toimi. TeamViewer käyntiin omalla koneelle, mulle sähköpostina ne tunntukset siitä ja voin katsoa. Mutta voi toki käyttää työkaluja ristiin, eli kotoa vaikka TortoiseSvn ja sitten yliopistolta svnht. Kunhan muistaa päivittää sitä files.txt ja Tortoisen tapauksessa käsin lisätä uudet tiedostot versioitavaksi. - VL

Q: Miten algoritmin toimivuutta olisi paras arvioida?
A: Silloin kun on kyse pelkästä algoritmista, niin en muuta tietä kuin se pöytätesti. - VL

3. Eri kielistä

Q: Mitä merkittäviä etuja on siinä että on monenlaisia erilaisia ohjelmointikieliä sen sijaan ,että olisi vain yksi äärimmäisen laaja utilitäärinen kieli?
A: Henkilökohtaisesti en näe tuossa mitään etua että on monta erilaista. Jos olisi yksi, jossa olisi kaikki ominaisuudet ja se skaalautuisi eri tarkoituksiin ja tarjoaisi eri ongelmiin sopivia paradigmoja. Mutta kun joku kehittää yhtä, niin toinen haluaa toista. Sama asia kuin luonnollisissa kielissä että väkisin tehtynä se ei kelpaa kenellekkään. Jo riita siitä, että pitääkö muuttujat esitellä (C-suku) vai saavatko ne syntyä ihan itsekseen (esim. Python) jakaa porukan. Ja sen lisäksi kaikki muut ominaisuudet, joista toinen tykkää ja toinen ei. Ikuinen sota :-) Meidän on vaan elettävä näillä eväillä mitä on annettu ja koitettava tehdä valintoja, jotka kestävät vuosia. - VL
A: Erilaisilla kielillä on erilainen näkemys 'maailmasta', tai ne sisältävät erilaisia piirteitä ja rakenteita ohjelman kuvaamiseen. Jos C#:a ja Javaa vertailee, ovat ne kuin kaksi marjaa, eroja ei maailmankuvassa ei juurikaan ole. Otapa Javan tilalle toinen VisualStudion kieli, F#, niin jo muuttuu näkemys siitä, miten ohjelmat tulisi kirjoittaa. Tästä 'näkemyksestä' käytetään nimitystä ohjelmointiparadigma. On huomattu, että on hyvä opetella kieliä eri paradigmoista. Silloin ohjelmointi omalla suosikkiparadigmalla ja -ohjelmointikielellä paranee. Ilmiö on sama kuin jos opikelee jotain uutta alaa tai asiaa: maailman oppii näkemään eri tavalla.
On toki olemassa moniparadigmakieliä, kuten C++ ja Common Lisp, mutta ohjelmointia aloitellessa suosittelisin pysymään valittua paradigmaa vahvasti tukevassa kielessä. -ji

Q: Mitä tunnettuja ohjelmia on tehty java kielellä?
A: Korppi :-) - VL
A: Minecraft. -ji

Q: Mikä on helpoin ohjelmointi kieli ohjelmoinnin aloittavalle ja mikä on kaikkein vaikein?
A: Varma kysymys aloittaa sota :-) - VL
A: Paras kieli aloittavalle on ohjelmoinnin opiskeluun tarkoitettu kieli, jolle löytyy tukea ja osaajia. Huonointa on käyttää täysin omituista kieltä, tai kieltä, joka vaatii hyvää ohjelmoinnin osaamista ja pidempää kokemusta ohjelmoinnista. Toki teollisuuskieli sisältää pienen motivoivan osan, kun sitä käytetään 'oikeastikin', mutta jos valmistutte vaikka viidessä vuodessa, ei teollisuuden käyttämä kieli välttämättä enää ole se sama, jota opiskelitte. Esimerkiksi aloittelijakielien uusi tulokas Pyret vaikuttaa minusta tutustumisen arvoiselta. -ji

Q: Mikä on yleisin ohjelmointikieli?
A: Tuon sivun mukaan tällä hetkellä JavaScript. Mutta mittaustapoja on monia. - VL

Q: Mihinkä ohjelmointikieliin suosittelisit opiskelijoita panostamaan?
A: Niin moneen kuin vain ehtii. Tuossa em. linkin sisäkehällä oleviin ainakin. Siis tuonne Scalan kokoisiin palloihin kuvassa. - VL
A: Jos Scalaan lopettaa, jää paha maku suuhun. Siellä on monta tutustumisen arvoista kieltä pienemmissä palloissa: Swift, F#, Erlang, Lispit (erityisesti Common Lisp ja Emacs Lisp), Racket, Assembler, Smalltalk ja Forth esimerkkeinä. -ji
A: Lainataanpa Dijkstraa:

Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. Edsger W. Dijkstra:EWD498

Q: Miksei Java osaa luonnollisia lukuja?
A: Ei ymmärrä? Eikös int nyt melkoisen määrän siitä kata ja long vielä enemmän? - VL
A: BigInteger vielä enemmän, vaikka onkin kokonaislukujen joukko. Integer-luokan olioilta taas löytyy jokunen etumerkitöntä (unsigned) laskentaa tukeva metodi. Rationaaliluvut eivät vielä ole Javaan asti päätyneet, joten jos niitä tarvitset, vilkaise vaikka Clojurea. -ji

Q: Miks aina dissaat C:tä kun mun kaveri sano et se on paras?
A: Olen jo aikani saanut kärsiä C:stä. En halua samaa muille :-) - VL

Q: Miksei kurssia opeteta C:llä?[[BR]] A: Olen tuota aikanaan tehnyt enkä näe mitään syytä palata siihen. Ladakin oli aikanaan käyttökelpoinen auto, mutta ei sekään hirveästi enää menisi kaupaksi. Asiat vaan ovat menneet eteenpäin. - VL

Q: Mikä on paras ohjelmointikieli ja miksi?
A: Varmin tapa saada sota aikaiseksi... - VL
A: Common Lisp tietty. -ji

Q: Koneet eivät ymmärrä olioita. Olio-ohjelmointi -kielet vievät enemmän resursseja, kuin muut paradigmat. Jos lähdekoodin ylläpito ei olisi onglema, olisiko olio-ohjelmointia olemassa?
A: Kyllä lähdekoodin ymmärrettävyys on yksi kaikkein tärkeimmistä asioista. Ohjelmat eivät ikinä ole valmiita. Välttämättä tosin ei olio-ohjelmat edes vie enemmän resursseja, vaan saattavat jopa vähentää niiden tarvetta (verrattuna siihen, että ei osaa kirjoittaa oliomaista koodia proceduraalisilla kielillä). Ja alunperin oli tarkoitus että Javalle tehdään omat prosessorit, jotka on optimoitu nimenomaan siihen tarkoitukseen. - VL
A: Alunperin oliosuuntautuneisuudessa ajateltiin, että olio on kuin tietokone, joka on valjastettu suorittamaan yksi velvollisuus. Koneet eivät ymmärrä olioita, sillä ymmärtäminen on vielä ihmisen yksinoikeus, mutta tietokoneet tavallaan ovat olioita. Olio-suuntautuneisuuden alkuvuosina rakennettiin tietokoneita, jotka oli tehty olio-ohjelmia ajaviksi. Koko järjestelmä oli ohjelmoitu oliokielellä. Sittemmin natiiveja oliokäyttöjärjestelmiä on rakennettu yleiskäyttöisillekkin (esim. x86) alustoille. Ja jopa "oliosuuntautuneita mikrokontrollereita", prosessoreista puhumattakaan, on tehty. -ji
A: Oliokielet eivät myöskään "vie enemmän resursseja". Resurssit tuhlaantuvat, kun oliokielillä yritetään tehdä muiden paradigmojen (ohjelmointinäkemysten) mukaisia ohjelmia. Tämä pätee myös toisinpäin. -ji

Q: mitkä ovat c# ja javan erot/ javan vaikeat asia c# verrattuna
A: Aika samanlaisia. Delegaattien ansiosta tapahtumankäsittely on hieman helpompaa C#:issa. Samoin sen laajempien ei-olio-ominaisuuksien takia jotkut ei-olio -jutut ovat sillä mukavampia. Mutta ei noista eroista niin suurta numeroa kannata nostaa. Kieliä isompi asia on kirjastot. - VL

Q: Kuinka Java eroaa C#:sta? Onko C# olio-ohjelmointikieli?
A: Mielestäni C# ei häviä Javalla muuta kuin joidenkin kirjastojen osalta. Kielenä mielestäni parempi. - VL
A: C# on olevinaan olio-ohjelmointikieli, muttei sitä varsinaisesti ole. Proseduraalisuus ja modulaarisuus paistavat aivan liian vahvasti läpi. Harvempi kieli on kunnollinen olio-ohjelmointikieli. Helpointa sellaiseen on tutustua aloittamalla olio-suuntautuneisuuden määritelmän yhteydessä kehitettyyn Smalltalk-ohjelmointikieleen. -ji

Q: Mihin ohjelmointi on menossa, mikä on seuraava suuri kehityssuunta?
A: Sanoisin että kaikista muodeista riippumatta samat perusasiat ovat vielä tärkeitä tulevaisuudessakin. Oikeastaan silloin 30 v sitten puhuttiin ihan samoja juttuja, koneet vaan olivat heikompitehoisia ja piti enemmän pohtia suorituskykyä. Rinnakkaisuus ja siinä kai funktio-ohjelmointityyliset asiat auttavat. - VL

Q: mitä ovat ohjelmointialustat ja järjestelmät
A: Jaa, en tiedä. IDE (= Integrated Development Environment), esim. Eclipse ja Visual Studio ovat järjestelimä, joihin on kasattu yhden kuoren alle suuri määrä ohjelmoijan tarvitsemia työkaluja. Tärkeimpinä kääntäminen, ajaminen, debuggaaminen, mutta toki myös ryhmätyövälineitä. - VL

4. Kurssin/kurssien sisällöstä

Q: Vaikea keksiä kysymystä, mutta kuinka syvällisesti olisi pitänyt kirjoittaa siitä mitä ohjelmointi on?
A: Mutu, ei mitään muuta. - VL

Q: Mitä kursseja kannattaa valita, jos haluaa oppia useamman ytimen hyödyntämiseen prosessorista? Tulevaisuudessa useamman threadin ajaminen tulee olemaan tärkeää, niin haluaisin oppia käyttämään tätä mahdollisimman tehokkaasti ja useissa asioissa.
A: Algoritmikurssit (kaikki) ja mahdolliset laitteistokurssit. En muista, että meillä olisi tarjonnassa mitään varsinaista rinnakkaisohjelmointikurssia, mutta kenties jollain numeerisen tietojenkäsittelyn kurssilla tuota pohditaan. Uskoisin grafiikkaohjelmoinnissa kerrottavan grafiikkapiirin käyttämisestä laskentaan, joten se kannattaa käväistä. Funktio-ohjelmointiin kannattaa tutustua, sekä syvemmin olio-ohjelmointiin, jos jälkimmäisen kurssi taas joskus toteutuisi. -ji

5. Ohjelmointi ja muu koulutus

Q: Tarvitseeko ohjelmointia opettaa jo peruskoulussa?
Q: Mitä mieltä olet ohjelmoinnin opettamisesta peruskoulussa ja miten sen opettamista tulisi edistää?
A: Pelkään että tästä saadaan kouluihin uusi matematiikka kun sitä joutuu opettamaan opettajat jotka eivät asiaa osaa, eivätkä siten ehkä pysty innostamaan oppilaita. Parempi olisi lähteä vapaaehtoisten kurssien kautta ja saada haluttu kulttimaine kuin pakollinen "mää en siitä mitään tajuu" -ilmiö. Opettajien koulutus tuossa kai on yksi ja toki pitäisi saada hyvää materiaalia. Mutta aika kiire tulee... - VL
A: Kyllä tarvitsee. Pelkään tosin samaa kuin Vesa. Ohjelmointia tulisi opettaa, koska sen avulla voi kehittää mallintamisen ja ongelmanratkaisun taitojaan. Ohjelmointia tulisi myös opettaa, jotta sen avulla voisi helpottaa työssään olevia tylsiä rutiinitehtäviä, joista selviää 'ajattelematta'. Kaikista ei tarvitse tulla sovelluskehittäjiä ja järjestelmäohjelmoijia. Mielummin kannattaisi pohtia, millainen olisi elämäsi, jos et osaisi laskea mitään. Ohjelmointitaidosta on vähintään yhtä paljon apua kuin laskutaidostakin. -ji

6. Yleistä ohjelmoinnista

Q: Mitkä ovat mielestäsi olio-ohjelmoinnin huomattavimmat edut perinteiseen proseduraaliseen ohjelmointiin verrattuna, vai onko niitä? Vai onko kyseessä vain "muoti-ilmiö" ja kummallakin on omat hyvät ja huonot puolensa?
A: Kyllä olio-ohjelmointi on selkeä kehityksen tulos, eikä edes mikään muoti-ilmiö, vaan kotoisin jo 60-luvulta. - VL
A: Proseduraaliselle ohjelmoinnille on hankala keksiä nykyään muuta järkevää käyttöä kuin skriptaus, eli toisten ohjelmien ohjaus tekemään yhdessä jotain. Ohjelmien koon kasvaminen ja rakenteen monimutkaistuminen on pakottanut etsimään ratkaisuja, jotka huomioisivat nämä. Yksi tällainen kehityssuunta on olio-ohjelmointi, toinen funktio-ohjelmointi, jotka ovat aika lailla saman kolikon kaksi eri puolta.
Joka tapauksessa kyse ei ole muoti-ilmiöstä. Muoti-ilmiöisyyden armoilla on sitten se "ohjelmointityyli", joka kullakin ajanhetkellä on de facto standardina. Nyt se on heikko ja huonosti toteutettu oliomaisuus, seuraavaksi saman kohtalon kokee funktionaalisuus. -ji

Q: Millä tavoin ohjelmointi tulee muuttumaan seuraavan 10 vuoden aikana?
A: Vauhdikkaasti, ja toivottavasti fiksummaksi. -ji

7. Henkilökohtaista

Q: Mistä luennoitsijan oma ohjelmointi kiinnostus on lähtöisin?
Q: Miten itse päädyit ohjelmoinnin pariin?
Q: Onko ohjelmointi jotain mitä olet aina halunnut tehdä, vai ajauduitko tekemään sitä?
A: Kyllä se on enemmän ajautumista. Aluksi ajattelin fyysikon uraa, sitten hetken matemaatikon, mutta kun ohessa tuli tehtyä aina jotakin apuvälineitä ja sitten ajauduin opettamaankin tätä. Matematiikan väitöskirjaakin varten piti sillointehdä lähes kaikki itse (toki laitoksen nykyinen professori Raino Mäkinen teki mulle silloin harkkatyönä integraalimerkit sen ajan kirjoittimelle) - VL A: Niin ja toki lukioaikana harrastin autosuunistusta ja siihen rakentelin mittausta sille, että milloin ollaan oikeaan aikaan aikatarkastusasemalla. Oisihan niitö saanut rahalla, mutta se tarvittiin bensaan. Ja tähtitornille (mulla on tähtitieteen appro ekan opintona) tehtiin systeemi, mikä osais kaukoputkeen etsiä halutun kohteen. Nyt nuo ovat arkipäivää (ja parempia) tavallisen harrastajankin putkissa. Mutta noista tuli sitä kokemusta, jonka päälle perustettiin oma firma. Ja sitten noiden päälle se mitä opiskelussa sai eri aloilta. - VL

Q: Oletko ollut kehittämässä ohjelmia/ohjelmistoja yrityksille?
A: Vain omalle (Kave Oy) ja sen näytinkin teille. Historia siis 80-luvun alusta. Eli oikeilla järjestelimillä on hyvin pitkä elinikä ja silloin on kielet yms. valittava niin, että ei tarvitse heti huomanna vaihtaa. - VL

Q: Mikä on luennoitsijan suurin saavutus näin ohjelmointimielessä?
A: Sanotaanko vaihteeksi että sellaisista mistä on ollut jollekin apua, niin 80-luvun puolivälissä ohjelma, jolla sai PC:n näytön näkövammaisten pistekirjoituuslaitteelle. - VL

Q: Onko luennoitsija tehnyt sovelluksia jotka ovat julkisesti käytössä?
A: Korpissa olin kovastkin mukana alkuvaiheessa. Windows Phoneen CycloLite?, W8 tablettiin YourMap?. aikaan esim. VT200 pääteohjelma oli kovastikin käytössä, TeXin? preview silloin kun sitä ei muilta ollut yhtä nopeana ja eri laitteille. - VL

Q: Mikä on vaikeinta ohjelmoinnissa?
Q: Mikä ohjelmoinnissa on kaikkein haastavinta?
A: Se että kaikki ei mene kuten haluaa. Aika ei riitä mihinkään. - VL

Q: Mikä on parasta ohjelmoinnissa?
A: Silloin kun onnistuu ja tuloksen näkee toimivan kuten on tavoitellut. - VL

Q: Mikä on henkilökohtainen suosikki ohjelmointikielesi?
Q: Mikä on luennoitsijan lempi ohjelmointikieli?
Q: Mikä on luennoitsijan suosikki ohjelmointikieli?
Q: Mitä ohjelmointikieltä käytät mieluiten?
A: Jos tämä ei menisi sodaksi kun on henkilökohtainen kysymys. Teollisuusautomaatiota Delphillä, koska mulla on siihen niin paljon pohjakoodia. Muuten ehkä C# vaikuttaisi mulle sopivimmalta. Pythonia ja JavaScriptiä? olen joutunut kirjoittamaan TIMin yhteydessä enkä hirveästi tykkää kummastakaan, mutta se johtuu osin ajanpuutteesta ja siitä että en ole kunnolla sisällä kummankaan kielen ajatusmallissa. - VL

Q: Kuinka kauan olet opettanut ohjelmointia yliopistolla?
A: Keväällä 82 rupesin kesken kurssin tämän vastaavan kurssin tuntiopettajaksi. - VL

Q: Mikä on mielestäsi hienoin ohjelma jonka olet tehnyt/jota olet ollut mukana tekemässä?
A: Se mitä parhaillaan on tekemässä. Toki Korpista olin aikanaan aika ylpeä, nykyisin se on ajautunut malliksi siitä, mitä ohjelmointi ei saisi olla (prosessit yli tavoitteen...). Uskon että TIMistä tulee joskus vielä hieno systeemi kunhan saadaan sille rahoitusta. - VL

Q: Mikä on mielestäsi paras ohjelmointi 2 -kurssilla tehty harjoitustyö?
A: Tähän on valitettavasti sanottava että en ole nähnyt itse suurta osaa kurssin töistä ja olisi epäreilua sitten ruveta nostamaan jotakin esiin. Graafisten käyttöliittymien kurssilta mulle on eniten jäänyt mieleen se ohjelma, jota käytän vieläkin lineaarialgebran esimerkkinä. Sekä ne korttipakka-komponentit, joita esim. Napoleonin haudassa käytin. - VL

Q: kuinka vaikeaa mielestäsi on ohjelmointi asteikolla 1-10?
A: 10. Jos se ei ole sitä, niin tekee liian helppoja asioita. - VL

8. Lajittelemattomat vastatut

9. Historia

10. Työelämä

Q: Kuinka monen kurssin jälkeen uskaltaa hakea töitä, jossa mahdollisesti joutuu/pääsee ohjelmoimaan?
A: Suosittelisin, että sitten, kun on maisterin paperit kourassa. Koska tämä on kuitenkin useimmille liian pitkä aika odottaa, niin kannattaa ainakin tehdä Ohj1, Ohj2, Oliosuunnittelu, GKO, Alg1, Alg2 ja kandiprojekti, niin on tosi turvallisilla vesillä. Ja ehdottomasti tuohon mukaan Funktio-ohjelmointi 1 vielä, niin alatte päästä jyvälle asioista. -ji

Q: Tietotekniikkaa voi hyödyntää lähes alalla kuin alalla, mutta toisaalta uutisissa on nähty mm. Ixonos-firman lähtö Jyväskylästä. Työllistyvätkö tietotekniikan opiskelijat yhä enemmän muualle kuin varsinaisiin teknologiayrityksiin?
A: Kyllä, ja ovat aina työllistyneet. Tietotekniikaa voi tosiaan hyödyntää alalla kuin alalla, joten työt eivät tekevältä lopu. -ji

Q: Mitä kannattaa tehdä, jotta pääsee kehittämään järjestelmiä työelämään?

Q: Minkälaista kesätyötä tietotekniikan opiskelijan kannattaisi hakea?

Q: osataanko kurssin jälkeen tarpeeksi että kannattaa hakea koodiapinan töitä?
A: Joidenkin tapauksessa se voi olla mahdollista, osan ei - VL

Q: Minkälaisella ohjelmointiosaamisella kannattaa hakea "alan hommiin"?

Q: Antaako tämä ohj2-kurssi valmiudet toimia työelämässä ohjelmoijana?

Q: Onko realistinen ajatus, että saisi ensimmäisenä kesänä töitä jo omalta alalta? Jos on, niin mitä moiseen vaaditaan? Minkätyyppistä kesätyötä tuo sitten olisi?.

Q: Milloin uudella opiskelijalla on tarpeeksi kokemusta, että voi hakea töihin/kesätöihin jossa tarvitaan ohjelmointia?

11. Lentäminen

Q: Kummasta luopuisit jos olisi pakko, lentäminen vai ohjelmointi?
A: Talvella lentämisestä ja kesällä koodaamisesta :-) - VL

Q: Oletko keksinyt vielä tapaa yhdistää lentämisharrastus ohjelmoinnin kanssa?
A: CycloLiten yksi ominaisuus on se, että se lähettää paikkaani koko ajan maassa oleville ja näin haku helpottuu jos en pääse takaisin kentälle. Sitten toki tuloslaskenta on ollut mun ohjelma 80-luvun lopusta saakka. Aikanaan niin että paperikartta digitointipöydän päälle ja sitten siihen klikattiin mihin oli laskeuduttu. Nykyisin puretaan GPS:llä ja tarkistetaan mun Riippuliito-ohjelmalla. Mutta ilmassa pysyn noista erossa, puhelin lähettelee omia aikojaan valjaissa ja toki on sveitisläisen firman tekemä huippumittari laskemassa sitä, mitä laskettavissa on.

Q: Mistä löytyy parhaat paikat harrastaa riippuliitämistä Jyväskylän alueella? Jollei Jyväskylän alueelta löydy, niin mistä löytyy lähin aktiviteettiin kelpaava paikka?
A: Leivonmäellä Höysösensuolla on meillä 1.4 km hinausura ja tätä voi pitää yhtenä Suomen parhaista paikoista harrastaa. Talvella toki järvien jäät. Tikkakosken käyttö loppui siinä vaiheessa kun Kauvalta lentokoulutus siirtyi tänne. - VL

12. Lajittelemattomat

Vastauksia joihin ei ole kysymystä

Vanhoja kysymyksiä ja vastauksia

QA 2014