wiki:qa/2013
Last modified 4 years ago Last modified on 2014-01-20 15:30:27

Kevät 2013

Q: Paljonko normaalisti menee aikaa, että alkaa tajuamaan ohjelmoinnista edes jotain?
A: Riippuu mitä tarkoittaa "edes jotain". Jo ensimmäisten kurssidemojen jälkeen osaa perusteita ohjelmoinnista! Kurssin puolenvälin jälkeen alkaa tulla syvällisempiä ahaa-elämyksiä alkupään asioista, kun alkaa tajuta, miksi asiat neuvottiin tekemään tietyllä tavalla, miksi johonkin kohtaan koodia tuli jokin tietty varattu sana ja niin edelleen. Kurssin jälkeen on vähintään jonkinlainen tuntuma siitä, mitä ohjelmoimalla voi yleensäkään tehdä, sekä osaamista sen verran, että tuleviin tarpeisiinsa voi kirjoittaa ihan vapaaehtoisestikin ohjelman helpottamaan muuten raskasta työtä. Niin ja yhtä kieltä osaamalla voi helposti opetella muitakin. -JP

Q: Kysymys Luennoitsijalle: Millaisia tämän kurssin kokeet ovat?
A: Eivät kovin vaikeita :-).
A: Tenttikysymykset ovat demotehtävien kaltaisia eli ohjelmointia kannattaa harjoitella demoja tekemällä. Helpoimmat tehtävät ovat tämänkaltaisia:

Mitä seuraavissa tapauksissa tulostuu?
1    int a = 5;
2    int b = a;
3    Console.WriteLine(b);  // a) Mitä tulostuu?     (1p)
4    a = 6;
5    Console.WriteLine(b);  // b) Mitä nyt tulostuu? (1p)

ja vaikeimmat vaativat oman ohjelmakoodin kirjoittamista, mutta eivät ole niin monimutkaisia, etteikö niitä saisi paperillekin aikaan tenttisalissa ilman tietokonetta. -JP
A: Tässä vielä lisää perustietoa tentistä. -AJL

Q: Kuinka saan Näytäön resulaatiota säädettyä? Käytäössä Mac OsX ja virtualboxin kautta Windows 7.
A: Windowsin näyttöasetuksista. -ji

Q: Miten Xboxille ohjelmointi eroaa normaalista peliohjelmoinnista? (haastavuus, testaus yms.)
A: Ei kai olennaisesti mitenkään. Mikäpä olisi "normaalimpaa" peliohjelmointia kuin konsolipelien ohjelmointi :-). -AJL

Q: Onko ohjelmointi mukavaa?
A: Erittäin. -ji
A: On. -AJL

Q: Koska kurssin aiheena on peliohjelmointi, olisi mukava tietää luennoitsijan taustoja. Mikä oli ensimmäinen peli, joka iski kovaa ja oli eräänlainen tekninen mestariteos? Mikä tämän hetken peleistä kiinnostaa teknisenä tuotoksena eniten?
A: Monet Commodore 64- ja Amiga 500 -pelit oli hienoja ja aikansa ikoneja. Ehkä parhaiten iski Syndicate, Lemmings ja Cannon Fodder. Teknisesti ja tuotannollisesti pelit ovat menneet niin valtavasti eteenpäin, ettei nykypelien vertailu noihin ole oikein mielekästä. 3D-mallinnuksen realistisuus ihmetyttää kerta toisensa jälkeen. -AJL

Q: Tehtävänannossa pyydettiin alkukyselyn lisäksi keksimään jokin kysymys, joka halutaan esittää luennoitsijalle. Minun kysymykseni siis on: kuinka haastavaa on oppia erilaisia ohjelmointikieliä kun aiempaa tietoteknistä osaamista ei ole? Terveisin, Sara Tiikkainen
A: Ensimmäinen kieli on aina se vaikein, koska samalla opitaan ohjelmoimaan. Sitten kun ohjelmointi alkaa olla yleisemmin hallussa, muut kielet oppii suhteellisen helposti (riippuen toki kielestä ja siitä, kuinka samanlainen se on kuin jo osatut kielet). Jos ohjelmointi kiinnostaa ammatiksi tai harrastukseksi asti, kannattaa ottaa tavoitteeksi opetella monia eri kieliä sitä mukaa kun kerkeää. -- AJK

Q: Mikä on debuggaus-näyte ja miksi se tehdään?
A: Debuggausnäyte on harjoitus, jossa harjoitellaan debuggerin käyttöä. Debuggeri on ohjelmointiympäristöjen perustyökalu, jonka avulla virheiden metsästäminen on huomattavasti mukavampaa kuin ilman sitä. -AJL

Q: Olen kuullut villiä huhua että syksyn kurssilla oli sellainen menetelmä että jos oli tehnyt 100% demoista eli 66 tehtävää ei silloin joutunut menemään tenttiin. Onko nyt kevään kurssin kohdalla moista menettelyä?
A: Varteenotettava ehdotus. Harkitaan. Kannattaa joka tapauksessa tähdätä tohon 100 prosenttiin, koska silloin on ilman muuta hyvä ennuste parhaimpaan arvosanaan, ja tentti (oli sitä sitten tai ei) lienee tuossa tapauksessa triviaali. -AJL

Q: Viime syksyn ohjelmoinnin kurssilla oli käytäntö, että jos olet tehnyt kaikki demotehtävät, niin ei tarvitse mennä tenttiin ja arvosanaksi kurssista saa 5. Olisiko sama mahdollista myös tällä kurssilla?
A: Ks yllä. -AJL

Q: Onko tietokoneella ohjelmoitaessa aina käytettävä komentoriviä? Jos ei, niin mikä on paras tapa ohjelmoida pelejä tietokoneella?
A: Ei, mutta integroidut ympäristöt (kuten Visual Studio) tekevät käytännössä saman asian, kuin mitä me olemme tähän asti koko ajan komentoriviltä tehneet. Toki mekin siirrymme komentoriviltä integroituun ympäristöön. "Paras tapa" on taas asia, johon ei voi oikein vastausta antaa, mutta ammattimaiset ympäristöt joita olen itse tutkaillut, muistuttavat loppujen lopuksi aika paljon toisiaan. -AJL

Q: Kysymykseni olkoon nyt vaikka se, että onko C# kielessä mitään tiettyä "sanaa" joka tarkoittaisi kokonaislukua(lähinnä sen neliöjuuritehtävän takia kysyn). Esim. seuraavassa tilanteessa: if x = "kokonaisluku": ... eli onko joku keino tehdä se näin helposti?
A: C#:ssa tuo ei mene aivan noin. Kokonaisluvuille on käytössä omat tyypit (esim. int) ja reaaliluvuille omat (esim. double). Katso monisteesta luku Muuttujat. Gurutehtävän osalta ratkaisu oli yksinkertaisempi, katso vaikka demo 1 videolta. -AJL
A: Tarkasti ottaen tietokone ei tiedä reaaliluvuista, vaan käytetään liukulukuja. Tuossa halusin sanoa sitä, että jos meillä on reaaliluku, sanotaan sqrt(2), niin double on se tietotyyppi, jota tuossa tapauksessa käytetään tiedon tallettamiseen keskusmuistiin, joskaan tietokoneelle ei tuollaista lukua voi tarkasti tallentaa. (Eikä muuten myöskään lukua 0.1. Tästä tulee kurssilla juttua myöhemmin.) Kiitos Jonne huomiosta. -AJL

Q: Jos tuntee tarpeelliseksi, niin saako perjantaisin jäädä useammallekin pääteohjauskerralle?
A: Ilman muuta. -AJL

Q: Mikä ohjelmointikieli olisi semmoinen, joka olisi hyödyllisintä osata hyvin, jos miettii työelämää tällä hetkellä?
A: Katso seuraava kysymys. Yhdellä kielellä pärjää huonosti. -ji

Q: Miksi ohjelmointikielenä käytetään C#, vaikka sivulla http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html olevan taulukon mukaan C ja Java on suositumpia?
A: Tioben listaukset elävät kuukaudesta toiseen. Ovatko C ja Java huipulla kun siirrytte työelämään? Ohjelmoinnin oppii vaikka sitten C# kielellä. -ji
A: Ohjelmointikielten suosituimmuusjärjestystä ei ole mahdollista mitata objektiivisesti. Tioben listaus on yksi yritys. Se on varmaankin varsin oikeassa siltä osin kun verrataan vaikkapa top-kymppiä top-viidenkympin loppupäähän, mutta mittavirheet ovat niin isoja, että top-viiden sisällä tuloksilla on lähinnä viihdearvoa. Ja kuten Jonne sanoi, ohjelmoimaan oppii kielellä kuin kielellä. Lisää kieliä joudutte kyllä joka tapauksessa uranne aikana opettelemaan. -- AJK

Q: Kuinka paljon koodia tarvitaan, jos haluaa tehdä kolmiulotteisen pallon, jota voi tarkastella kaikilta puolilta?
A: Palloa on vähän tylsä katsella eri puolilta, mutta kävisikö kuutio?

void setup() {
  size(640, 360, P3D);
  fill(204);
}

void draw() {
  lights();
  background(0);
  
  // Change height of the camera with mouseY
  camera(100.0*sin(radians(mouseX)), 200.0, 100.0*cos(radians(mouseX)),
         // eyeX, eyeY, eyeZ
         0.0, 0.0, 0.0, // centerX, centerY, centerZ
         0.0, 1.0, 0.0); // upX, upY, upZ
  
  noStroke();
  box(90);
  stroke(255,0,0);
  line(-100, 0, 0, 100, 0, 0);
  stroke(0,255,0);
  line(0, -100, 0, 0, 100, 0);
  stroke(0,0,255);
  line(0, 0, -100, 0, 0, 100);
}

Ohjelmointikielenä Processing (http://processing.org), sopiiko? -ji
A: Ei valitettavasti onnistu Jypelillä :-(. XNA:lla (jonka päälle Jypelikin on rakennettu) tämä kuitenkin onnistuu "kohtuullisen" helposti. Koodi: http://bit.ly/WGwgVd ja video: http://youtu.be/TwKxhwOlvm8. Kurssilla teemme kuitenkin 2D-pelejä. -AJL

Q: Mikä on luennoitsijan mielestä hankalinta/helpointa ohjelmoinnissa?
A: Helpointa aloittaa joku homma, vaikeinta saada se tehtyä hyvin. -AJL

Q: Opetellaanko me yhtään muita kieli kuin C#?
A: Tällä kurssilla vain sivutaan joitain muita kieliä. Mutta myöhemmillä kursseilla tulee vastaan monia muita kieliä, joten ole kärsivällinen :-). -AJL

Q: Teetkö itse paljon pelejä? Ei tarvitse vastata.
A: Liian vähän. Varsinkin nuorten kesäkurssien aikaan tulee tehtyä pikkupelejä sekä kännyköille että pöytäkoneelle. -AJL

Q: Miksi harjoitustyö on peli?
A: Koska pelit tuovat hauskuutta hommaan. Kuten sanoin alussa, pelin voi halutessaan ymmärtää "laajasti". Jos haluat tehdä jonkun ihan toisenlaisen harjoitustyön (ei Jypelillä), niin siitä pitää neuvotella erikseen. -AJL

Q: Mitä hyötyä ohjelmoinnista on tulevassa työelämässä?
A: Mitä hyötyä ajattelutaidosta on tulevassa työelämässä? -ji
A: Paljonkin, koska olet tullut meille opiskelemaan ja siinä vaiheessa toivottavasti asettanut tavoitteesi korkealle tällä alalla. IT-alalla ja muutenkin ohjelmointiin liittyviä taitoja arvostetaan, koska ne ihmiset, jotka osaavat ohjelmoida, osaavat myös tehostaa prosesseja ja liiketoimintaa, ja sitä kautta tehdä bisnestä kannattavammaksi. On vaikea kuvitella alaa, missä ohjelmoinnista ei olisi hyötyä. Ohjelmointiin voi törmätä yllättävissäkin paikoissa, vaikka et varsinaiseksi ohjelmoijaksi/sovelluskehittäjäksi päätyisikään. Naiivi (mutta varteenotettava) skenaario "ei-koodaajalle": Kuvitellaan, että tavoitteenasi on päästä johtajaksi. Johtajat tekevät raportteja. Raportteja tehdään Excelillä. Excel-raporttien tekemiseen tarvitaan makroja. Excel-makroja koodataan VB.NETillä. Toki voit kieltäytyä tekemästä mitään tämän kaltaiseen ohjelmointiin liittyvää ja työllistää firman IT-osastoa, mutta silloin hommat hidastuu ja sinulta voi jäädä muutama palkankorotus saamatta kun kakun jakajia on enemmän (mikä ei tietysti huono vaihtoehto ole sekään :)). -AJL

Q: Suurimmat hyödyt Ohjelmointi 1 -kurssista niille jotka eivät aio jatkaa ohjelmointiin syventymistä jatkossa?

Q: Mitä eroa on funktiolla ja aliohjelmalla, vai ovatko ne vain synonyymejä toisilleen?
A: Aliohjelma on mikä tahansa vekotin, jota voidaan kutsua toisesta (ali)ohjelmasta niin, että aliohjelman suorituksen päättyessä palataan kutsujaan, ja funktio on aliohjelma, jolla on paluuarvo. Kyseisillä sanoilla on muitakin merkityksiä vähän puhujasta riippuen, mutta nämä lienevät ohjelmoinnin yhteydessä yleisimmät määritelmät. -- AJK

Q: Kai kotikoneella voi ajaa ohjelmia mistä tahansa kansiosta? Missään kohdassa ei selvästi mainittu, että voiko kotikoneella ohjelmakansio olla mikä tahansa. Tai sitten en huomannut sitä.
A: Voi. Yliopiston koneilla IT-palvelut on vain estänyt muista kuin C:\MyTemp\- ja U:\MyPrograms\-hakemistoista ajamisen tietoturvasyistä. - JP

Q: Toimivatko kurssilla käytettävät ohjelmat ja muu, mitä täällä tehdään, myöskin Windows 8:lla? Onko niissä jotakin ratkaisevaa eroa verrattuna siihen, jos tekisi samat jutut seiskalla?
A: Visual Studio 2010 Ultimatea uudempiin Visual Studioihin on huomattavasti vaikeampaa asentaa Jypeli-kirjaston tarvitsema XNA, sillä Microsoft päätti olla tukematta XNA-pelikirjastoaan enää tulevaisuudessa. Siksi 2010-versio ja Windows 7 ovat vielä suositeltuja työkaluja tälle kurssille. Tulevaisuudessa Jypeliä käytetään todennäköisesti Mono-projektin avulla, jolloin alustoiksi saadaan myös Linux-jakelut ja MacOS X. - JP

Syksyn 2012 kysymyksiä

1. Ohjelmointi 1 suorittaminen, mahdollisuus oppia ilman aikaisempaa kokemusta

  1. Voiko ohjelmointi1-kurssin läpäistä vaikkei ennestään olekaan kovin kattavia tietokoneenkäyttötaitoja?
    • Kyllä voi! Itse koneella tehdessä taidot karttuvat ja esimerkiksi Tietokone ja tietoverkot työvälineinä -kurssi ja erityisesti sen vapaaehtoiset demotilaisuudet antavat hyviä lisäeväitä myös Ohjelmointi 1 -kurssin suorittamiseen. Vesan painottama asenne ratkaisee minunkin mielestäni kuitenkin eniten. - JP
    • Voi, täytyy ottaa avoimin mielin uusi asia vastaan. Ei pidä myöskään pelätä työntekoa ja vaivannäköä, mutta sillä tavalla saavutettu oppiminen ja osaaminen palkitsee. - TS
  2. Onko kurssi vaikea läpäistä, jos ei ole aiempaa kokemusta ohjelmoinnista?
    • SUURIN osa kurssilaisista (ja aiempina vuosina kurssin läpäisseistä) on ilman aikaisempaa ohjelmointitaustaa - VL
    • demoja ja HT:tä ahkerasti tekemällä ei ollenkaan mahdoton - VL
  3. Jos ei ole minkäänlaista ohjelmointikokemusta ennestään, niin onko Ohjelmointi 1-kurssin perusteella mahdollista oikeasti oppia ohjelmoimaan?
    • ohjelmoinnin oppiminen on pitkä prosessi, Ohj 1 johdattaa alkuun vaikka kokemusta ei olisikaan. Ohjelmointia oppii vain ohjelmoimalla ja homma jatkuu Ohj2:lla yms. kursseilla - VL
    • Samaa mieltä Veskun kanssa, tekemällä oppii. - TS
  4. Millainen on ohjelmointi1-kurssin tentti?
  5. Millainen on tämän kurssin tentti?
  6. Miksi kurssilla tehdään sekä harjoitustyö että tentti, eikö toinen riittäisi suoritukseen?
    • HT:n arvosteleminen numeroksi on hankalaa, koska siinä voi olla paljonkin ohjaajan työtä takana
    • Tentti ei opeta samassa määrin ja oppiminen on kuitenkin pääasia, ei suoritus, siksi mun kursseissa on AINA ht. - VL
  7. Miksi 40% tehdyistä demoista saa lisäpisteen, jos vähimmäisdemomäärä, jolla pääsee läpi, on 40%?
    • kannustuksen vuoksi :-)
  8. Kurssin lopussa tulee olla 40% tehtävistä palautettu. Lasketaanko se aivan kaikista demotehtävistä vai noista kuudesta "perustehtävästä" per kerta?
    • määrät on laskettu valmiiksi demosivuille. Eli 6 tehtävää/kerta = 100%.
  9. Jos molemmat demotunnit menevät päällekkäin toisen kurssin kanssa, niin onko niillä paikallaolo täysin pakollista?
    • paikallaolo ei ole missään kohti pakollista - VL
    • Demokerroilla kuitenkin tulee paljon palautetta tehdyistä tehtävistä (ja asiaan liittyviä sivuhuomautuksia), joten videotaltioiden katsominen voi olla hyödyllistä - varsinkin, jos tuntuu, että demotehtävissä oli itselle haasteellisia asioita. - JP
    • tai edelliseen vielä että voi tuntua että ei ollut haasteellista, mutta ei huomannut varsinaista haastetta, siksikin kannattaa katsoa. - VL
  10. Mitä mieltä olet, paraneeko kurssin aloittavien opiskelijoiden lähtötaso tulevaisuudessa (kasvavan tietotekniikan käytön takia)?
    • melkein päinvastoin. Luulo siitä että osaa, ei tuo riittävää nöyryyttä. - VL
    • Se mitä tietokoneilla tehdään arkielämässä on usein kaukana itse ohjelmoinnista ja tietoteknisten palvelujen tekemisestä. Ehkä peruskäyttötaito on useammalla hallussa tulevaisuudessakin. -TS
  11. Suosittelisitko tilastotieteilijälle sivuaineeksi tietotekniikkaa?
    • ilman muuta. Yksi osattu oma ala + tietotekniikka tekee kovan luokan osaajan. - VL
    • Erittäin hyvä mahdollisuus tilastotieteilijälle työllistyä teknisemmälle alalle. Ei tarvitse turvautua vain muiden valmiiksi paketoimiin menetelmiin, vaan voi itse muokata ja luoda uusia menetelmiä. Tämä on valtti työmarkkinoilla ja edes ymmärrys näistä asioista helpottaa työntekoa muutenkin. - TS
  12. Suositteletko kaikille tietojärjestelmätieteen opiskelijoille ohjelmoinnin jatkokurssia?
    • en kaikille. Alaa kohtaan pitää jonkin verran olla mielenkiintoa. Niille suosittelen, jotka aidosti haluavat oppia. - VL
  13. Joutuuko tehtäviä ratkaistaessa joskus käyttämään muitakin tietolähteitä internetin syövereistä, vai pitäisikö aina selvitä prujun ja ohjeiden avulla?
    • periaatteessa luentomoniste + luennot + pääteohjaukset pitäisi riittää, ellei tehtävä erikseen ole sellainen, missä hakemista edellytetään. Guru-tehtävät erikseen.
    • perspektiiviä kannattaa ehkä ottaa muidenkin malleista, alkukurssista tehtävät ovat kuitenkin niin perustehtäviä, että muiden mallit voivat vielä johtaa jopa harhaan. Naapurinpoikaa kannattaa varoa :-) - VL
  14. Mikä on aiempien vuosien perusteella ollut opiskelijoille haastavinta ohjelmoinnin kursseilla?
    • eiköhän se haaste ala juuri siitä kohdasta missä ollaan nyt menossa, eli jos muuttujien käsite ja aliohjelmat eivät nappaa, niin loppu on vaikeaa kun rakentuu kaikki noiden päälle. Eli kyllä nyt on oltava skarppina. - VL
  15. Jos kurssin aikana tippuu kärryiltä, niin missä kohdin se todennäköisimmin tapahtuu? Eli mikä on ensimmäinen vastaantuleva asia, johon on panostettava normaalia enemmän?
    • ks edellä - VL
    • Jos ei alussa opittavat perusasiat ole selviä, on mahdotonta ymmärtää mitään jälkeenpäin tulevaa. - TS
    • Tuolta palautettujen demojen määristä näkee että suurin pudotus tulee demojen 4 ja 5 välillä. - VL
  16. Jos harjoitustyön kanssa on ongelmia, voiko siihen saada apua henkilökohtaisesti muissa kun ohjauksissa?
    • ohjaajilta voi kurssin loppuosalla varata myös henk.kohtaisia aikoja. Ohjaajat eivät kuitenkaan tee sitä harkkaa, vaan itse pitää olla valmiina ottamaan vinkistä vaaria. - VL
  17. Koska päällekkäisyyksiä luentojen kanssa, mietin onko ollut mitään tietoa/veikkausta siitä onko opiskelijoilla jotka käyneet luennoilla kuinka paljon suurempi todennäköisyys läpäistä kurssi/keskimäärin kuinka paljon parempi keskiarvo kuin opiskelijoilla jotka eivät ole käyneet luennoilla.
    • mulla ei ole vielä kunnon tilastoa tästä jotta voisi sanoa puoleen tai toiseen. Joka tapauksessa oleellisinta on demojen teko. Ja niihin tarvittaessa avun hakeminen pääteohjauksista. Jos motivaatio riittää, niin varmaan videoita katsomalla voi saada saman hyödyn kuin luennolla istumalla. Kunhan katsoo noita videoita joka viikko, eikä 8 tuntia ennen tenttiä... - VL
  18. Mikä on helpoin ohjelma aloittelijoille tutustua ohjelmointiin ?
    • jos tarkoitat ympäristöä/kieltä, niin tästä tulee jatkuvasti tutkimuksia ympäri maailmaa ja kaikki ovat eri mieltä keskenään. Jos uskoisin että joku muu tapa on parempi kuin se mitä nyt käytämme, niin käyttäisin sitä. Mutta kokeilkaa nyt sitä Khan Academia, siinä voi olla ideaa. - VL
  19. Onko realistisesti mahdollista oppia ohjelmoimaan HYVIN, vaikka ei ole minkäänlaista aiempaa kokemusta aiheesta tai ylipäänsä tietokoneista?
    • 80% joka vuoden kurssilaista on tällaisia. Ja pärjäävät erinomaisen hyvin. Joskus jopa liika kokemus tuo ylimielisyyttä, mikä sitten on este tiedon vastaanottamiselle. Joissakin maissa esim. liikennelentäjäkoulutukseen ei oteta henkilöitä joilla on aikaisempaa ilmailutaustaa. Eli aina pohjat eivät ole tae menestykselle. Tämä kurssi tosin varmasti on helppo harrastelijalle, mutta tosissaan ottaneet harrastelijatkin ovat sanoneet saaneensa jotakin uuttakin. Motivaatio on isompi vaikutin kuin pohja. - VL
    • Minkä tahansa asian oppiminen on kiinni innostuksesta ja erityisesti asian tekemisestä. Asiaa tekemällä tulee asiassa hyväksi. - TS
  20. Kuinka vaikea kurssi on suorittaa ilman aikaisempaa ohjelmointikokemusta?
    • ks. aikaisemmat kysymykset. Jos on tosissaan, niin ei vaikea. - VL
  21. Milloin harjoitustyön tekeminen kannattaa aloittaa?
    • jossakin määrin heti. Aluksi suunnittelemalla mitä on tekemässä ja heti kun osataan tehdä jotakin, niin yrittää soveltaa sitä omaan työhönsä. - VL
  22. Milloin projekti (peli) aloitetaan?
  23. Montako kertaa tentin saa uusia?
    • väärä asenne! Kurssille lähdetään niin, että mää meen läpi kerralla vaikka väkisin. Ja se onnistuu kaikilta jotka ovat tosissaan. Et kai aamulla lähde yliopistolle pyörällä sillä asenteella että monestikohan matkan saa uusia jos menee välillä ojaan... - VL
    • demopisteet saa ekaan tenttiin mukaan (jotta asenne olisi kohdallaan). Sen jälkeen on pari uusintaa ja seuraavana vuonna taas. Mun puolesta ei rajoja... - VL
  24. Lopullinen kysymykseni onkin oikeastaan että kuinka aikaisemmat fysiikanopiskelijat ovat suorittaneet tämän kurssin?
    • useimmiten hyvin, koska fysiikka on lähellä matematiikkaa ja mun ajattelumalli ja siksi opetus vivahtaa matematiikkaan. - VL
    • mutta erinomaisesti ovat pärjänneet ihan puhtaat humanistitkin, jos tänne asti on vaivaantunut, niin on varmasti motivaatiotakin. Ja humanistien viesti on ollut että "ompa teillä vähätöisiä kursseja", eli se siitä työläydestä :- ) - VL
  25. Tarvitseeko ohjelmoinnissa paljon matematiikkaa? Kuinka paljon sitä olisi tarpeen opiskella?
    • Alan Turing oli matemaatikko, samoin von Neumann, joten tietotekniikan ajattelumallissa on paljon matematiikan perinnettä. Itse asiassa näen että ohjelmointi on samanlaista kuin matematiikan tekeminen (olen väitellyt matematiikasta): lauseet ovat tavallaan ohjelmia, lemmat aliohjelmia jne. Iso ongelma ratkaistaan jakamalla se pienemmiksi jotka kukin ratkaistaan erikseen (vrt. lemma/aliohjelma). Ongelmanratkaisun periaatteet ovat samoja. Sitten sovellettavasta alasta riippuu kuinka paljon siinä tarvitaan matematiikkaa. Grafiikka on geometriaa ja lineaarialgebraa. Tieteellinen laskenta pitkälle kovaa analyysiä jne. Olen kirjoittanut tästä opinto-oppaaseen pidemmän pätkän. Mutta toki tietynlaiset WWW-sovellukset voivat olla hyvin epämatemaattisia. Mutta matematiikkaa ei ole (x+3)/2 vaan tuo on alakoulun laskentoa, millä ei ole MITÄÄN tekemistä matematiikan kanssa :-) - VL
    • Matemaattinen ajattelu auttaa ohjelmoinnissa vaadittavaa ajattelua. - TS
  26. Tämä kurssi on haastavaa käydä yhdessä fysiikan ja matematiikan kurssien kanssa yhtaikaa: Jokin näistä onkin välttämättä käytävänä itseopiskeluna. Tälle kurssille on tehty kaikki mahdollinen apu itseopiskeluun, kuten tuntitaltiot, joten automaattisesti tämä kurssi olisi helpoin vaihtoehto. mutta olisiko muuta tapaa? Onko olemassa jotain muita kursseja, joka opastaisi ohjelmoinnissa, mutta ei välttämättä sattuisi "koulu ajalle", kuten kesäisin tai iltaisin? Vai tulisiko minun vain odottaa ensi vuoteen, ja toivoa ettei kurssi sattuisi silloinkin jonkun tunnin päälle? Onko tämä vain poikkeus vuosi?
    • tuskin tilanne muuttuu, ennen kuin Ohj on jonkin vuoden fysiikan opiskelijoiden ohjelmassa pakollisena ja siten sille raivataan kalenterista tilaa. Mutta ei tämäkään auta, kun esim. kai Tietotekniikan palkollisia sivuaineopintoja on Ohj1:n luentojen kanssa päällekkäin. Eli eri aineiden koordinaatio hävisi aika hyvin silloin kun Tietotekniikan laitos siirtyi eri tiedekuntaan. Toivottavasti nuo nettimatskut edes vähän auttaisivat päällekkäisyydestä kärsiviä. Ikinähän kaikkia yliopiston kombinaatioita ei voida ottaa huomioon. Jos mikään pääteohjausajoista ei missään tapauksessa käy, niin niitä voi yrittää pitää eri aikaankin jos tulee pyyntö riittävän monelta. - VL

2. Työkaluista

  1. Java-ohjelmassa oli valmis "aja ohjelma"-toiminto, löytyykö C#-kieltä ja Visual Studiota käyttäessä samanlaista?
    • VS:ssä F5 - VL
  2. Miten komentoriviltä kopioidaan tai maalataan tekstiä kaikkein näppärimmin?
    • tässä ei taida voida käyttää muuta kuin hiirellä maalaus ja sitten Enter. - VL
    • kannattaa kuitenkin ensin vasemman yläkulman menun ominaisuuksista laittaa Quick Edit päälle.
    • liittäminen on hiiren oikea nappi - VL
    • muista käyttiksistä: linux samalla tavalla, muttei tarvitse painaa enteriä ja liittäminen keskinapista, joskus täytyy käyttää Ctrl+Insert = copy, Shift+Insert = paste, jotka toimivat windowsissakin (vieläkö toiminevat?) - ji
    • OSX: maalaus hiirellä, cmd+c = copy, cmd+v = paste. - ji
  3. Ei suoranaisesti liity ohjelmointiin, mutta kysytään kuitenkin: Miksi Windowsissa oletus-kovalevy on aina nimetty C:-asemaksi, eikä esimerkiksi A:-asemaksi?
    • Alkujaan koneissa oli vain lerppu- tai korppuasema tai jopa kaksikin, ja niitä varten varattiin DOS:ssa A- ja B-asematunnukset. Taaksepäin yhteensopivuuden säilyttämiseksi ensimmäinen kiintolevy on nimeltään C:-asema. UNIX-sukuisissa käyttöjärjestelmissä kaikki tieto jäsennetään yhteen puumaiseen rakenteeseen, jonka juurena toimii ihan pelkkä / eli käytössä ei ole erillisiä asemakirjaimia. - JP
  4. Miten pystyn tallettaa csk-tiedoston bat-muotoon? Tallennettaessa tiedostoa editorilla en löytänyt bat-vaihtoehtoa.
    • valitaan muoto *.* ja itse kirjoitetaan se tarkennin .bat siihen tiedoston nimen yhteyteen
  5. Miten polun saa pysymään komentorivillä, jotta sitä ei tarvitsisi aina luoda uudestaan?
    • Joskus oli setx-niminen komento jolla tuon sai tehtyä komentoriviltä. Nykyisin varmempi taitaa olla se Control Panelin kautta tehty (ks. path).
  6. Miten Notepad++ -tekstieditorilla saa nopeasti tehtyä numeroluettelon (vrt. Demo1/teht.2)?
    • itse asiassa en tiedä on siinä mitään parempaa oikotietä kuin mitä demojen palautuksessa esitin ConTextille.
    • demoissa unohtui sanoa että luettelon olisi voinut käydä tekemässä yhdellä nykäisyllä Excelissä ja kopioinut sen sieltä.
    • Joihinkin editoreihin voi itse ohjelmoida lisää toimintoja, joilla tuollaisen voisi tehdäkin. - VL
  7. Jos haluaa käyttää kurssin aikana omaa konetta tulee asennettua koneelle ties kuinka monta eri ohjelmaa. Olisi kiva tietää mikä minkäkin ohjelman merkitys oikeasti on.
    • kysy aina luennolla kun jotakin käytetään. Esim. heksaeditorin avulla havainnollistetaan sitä miten tieto tallennetaan. VS:n rooli tulee olemaan aika selvä jatkossa. Alice havainnollistaa erilaista tapaa ohjelmoida (samanlaista ideaa käytetään mm. teollisuusautomaatiossa, vrt. Lego-robotti). Tekstieditoria tarvitaan jokapäiväisesti, Notepad on siihen liian heppoinen. - VL

3. Eri kielistä

  1. Onko joku tietty syy miksi Javasta on siirrytty C# meillä opetuksessa?
    • Jypeli tehtiin C#:ille
  2. Mikä ero on minulle "tutulla" c++ ja nyt käytettävällä C# kielellä? Kumpi oli ensin ja miksi toinen luotiin?
    • C++ oli ensin. C#:Issa on automaattinen muistinhallinta, mikä on aloittelijalle uskomaton etu.
  3. Voiko C#:lla tehdä käyttöliittymiä? Mitkä ohjelmat ovat käytetyimpiä käyttöliittymäsuunnittelussa?
    • toki. Ja jopa erittäin helposti, siinä Visual Studio onkin parhaimmillaan. MS puolella Expression Blendin on tarkoitus olla työkalua, jolla suunnittelija tekee ulkoasun ja koodari voi jatkaa tästä suoraan. Valitettavan usein käyttöliittymä kuitenkin piirretään jollakin piirto-ohjelmalla millä ei ole mitään tekemistä ohjelmoinnin kanssa ja koodari joutuu sitten aloittamaan työt ihan alusta. Näytän VS:n ja Blendin kykyjä kurssin loppupään luennolla (ei oppimistavoitteen asiaa) - VL
  4. Mitä eroja ohjelmointikielillä on ja miksi niitä on niin paljon?
    • "kauempaa" katsottuna joillakin on vain pieni syntaktinen ero (C++, Java, C#, Object Pascal jne...)
    • sitten on kovinkin erilaisia kieliä, kuten funktionaaliset kielet (esim. Haskell, Lisp yms)
    • sitten on proseduraalisia kieliä kuten C, alkuperäinen Pascal, Fortran jne. Tai oliopohjaisia kieliä kuten C++, Java, C#, Smalltalk
    • miksi niitä on paljon? Yksi tykkää tyttärestä ja toinen äidistä... Välillä jopa tuntuu olevan turhan suuri tarve tehdä uusi kieli. Mutta esim. C++ ajautui jo omaan mahdottomuuteensa kun vanhaa pohjaa yritetään paikata. Siksi uudistukset (Java ja C# esim.) olivat ihan tervetulleita. Miksi vain toinen ei kelvannut. Kilpailevat firmat... - VL
    • se onkin mielenkiintoista aina, että miksi joku kieli tulee suosituksi ja toinen ei... - VL
    • Kielitieteen puolella on esitetty ns. Sapirin–Whorfin hypoteesi, joka väittää, että kieli vaikuttaa ihmisen maailmankuvaan. On aika selvää, että se pätee ohjelmointikielten kohdalla, sillä jokainen ohjelmointikieli kannustaa ja osin pakottaa tietynlaiseen ajatteluun; kukin kieli omanlaiseensa. Se on yksi merkittävä syy, miksi kielillä on eroja ja miksi niitä on paljon. –ajk
    • Toisin sanoen: joka kielellä on hyvät ja huonot puolensa eikä kaikkien mielestä parasta kieltä ole keksitty. Siksi aina sillloin tällöin joku etevä ohjelmoija laatii oman kielen. – AJK
  5. Verrattuna muihin olio-ohjelmointikieliin, mitkä ominaisuudet tekevät C#:sta erityisen - hyvässä ja pahassa?
    • C++:aan nähden automaattinen muistinhallinta
    • Javaan nähden mm delegaatit ja propertyt ovat kivoja
    • kieli alkaa olemaan varsin laaja, mutta en tiedä voiko sitä laskea miinukseksi. Ei ole pakko käyttää kaikkia ominaisuuksia - VL
    • Smalltalkiin verrattuna se on kankea ja "epäpuhtaampi", sillä Smalltalkissa olio on paljon vahvempi ja käytetympi toteutusmuoto asioille, joten esimerkiksi luokat, metodit ja numerot, sekä 'true' ja 'false' boolean-arvot ovat olioita. -ji
  6. Mikä on yleisimmin käytetty ohjelmointikieli?
    • JavaScript. Ai et usko vai? Kirjoitapa tuohon ylös selaimesi hakukenttään: javascript:alert("terve, maailma!"); ja sitten rivinvaihto. Noin, maailmassa on taas yksi JavaScript-ohjelma lisää! ;-) -ji
  7. Mikä on yleisin käytetty ohjelmointikieli?
  8. Onko tarpeellista osata useita eri ohjelmointikieliä? Montaako? Ovatko jotkut kielet niin samanlaisia, että tietokone osaa itse kääntää ne kieleltä toiselle?
    • Täältä Java/C# -linjalta muutamaa, sitten eri "paradigmoista" muutamaa. - VL
    • Kuten Villestä näkee, niin riittävän yksinkertaisia voi kääntää toisikseen aika helpostikin. Jos kunnolla käytetty jonkin toisen kielen ominaisuutta, niin käännöksestä ei välttämättä tule hyvää. MS:n .Net-alustan idea onkin että siinä voi käyttää ristiin useita kieliä, jolloin ei tarvitse kääntää kieleltä toiselle. On myös Javan virtuaalikoneelle tehtyjä muita kieliä, kuten Scala, jota voidaan (kai???) käyttää yhdessä Javan kanssa. - VL
    • Ohjelmointikielet voidaan luokitella erilaisiin ryppäisiin, joita kutsutaan yleensä paradigmoiksi. Saman paradigman sisällä kielet ovat aika samanlaisia, mutta paradigmojen välillä on merkittäviä eroja; sama pätee myös kielestä toiseen siirtymisen vaikeuteen. C#, Java ja C++ kuuluvat kaikki samaan paradigmaan, mutta esimerkiksi Haskell (ks. TIES343) on merkittävästi erilainen. – AJK
    • Ohjelmoija saattaa pärjätä yhden kielen tai paradigman osaamisella, mutta taitava ohjelmoija osaa monia kieliä useasta eri paradigmasta. Suosittelen, jos innostusta on, uusien kielten jatkuvaa opiskelua myös omaehtoisesti. - AJK
    • Periaatteessa mille tahansa kieliparille on mahdollista laatia ohjelma, joka kääntää yhdellä kielellä laaditut ohjelmat toiselle kielelle. Jonkin verran sellaisia on kirjoitettukin; niitä käytetään lähinnä vanhojen perinnäisohjelmien siirtämiseen moderneihin ympäristöihin. Yleensä konekäännös ei ole yhtä hyvä kuin käsin kirjoitettu; sama pätee niin ohjelmointikielille kuin luonnollisillekin kielille (kai olette kaikki jo nauraneet Google Translaten tai Bingin käännöksille). – AJK
  9. Voiko C#:lla ohjelmoida nokialle(N8,symbian) sopivia ohjelmia?
    • ei ainakaan suoraan. Lumioille kyllä. Unohtakaa Symbian. Jos Nokia olisi ajoissa tehnyt peliliikkeitä, se olisi vieläkin suurin. - VL
  10. Miksi ohjelmointi 1 on C#-kielellä, mutta ohjelmointi 2 pääosin Javaa?
    • juuri siksi :-) Eli parempi eri kielet kuin samaa koko ajan. Molemmat ovat valtavirran kieliä ja niihin on hyvä tutustua ja erityisesti huomata että siirtyminen toiseen sujuu helposti.
  11. Eri ohjelmointikieliä on monia, mutta jos verrataan joitain yleisimpiä kieliä (esim. C#, C++, Java jne.), mitkä ovat niiden olennaisimpia eroja ja mikä kieli mahdollisesti olisi paras tällä hetkellä tai missä asioissa kukin kieli on parhaimmillaan?
    • nopeus ei ole enää minkään kielen etu vaikka joku voisi muuta väittää. - VL
    • automaattinen muistinhallinta on ohjelmoijan turva ja se puuttuu C++:sta. - VL
    • C:n perintönä C++:ssa on valtava määrä aukkoja ja suuri määrä viruksista käyttää hyväkseen juuri näitä aukkoja. - VL
    • muuten käyttötarkoitus ja käytössä olevat kirjastot ja ympäristöt ovat tärkeämpiä kuin kielet. - VL
  12. Jos verrattaisiin ohjelmoinnin oppimisen kannalta java-koodia ja c#-koodia, kumman sanoisit olevan helpompi/vaikeampi oppia ja miksi näin?
    • en näe mitään eroa. Kumpikin ovat aloittelijan kannalta selkeästi C/C++:aa helpompia saada toimivaa koodia. Tosin alkukursseilla käytetään kielestä rajoitettua joukkoa eikä yritetäkään oppia kaikkea. Mutta edelleen. Ne kirjastot ovat se suurin pulma. - VL
    • Nämä kaksi kieltä ovat hyvin lähellä toisiaan. - TS
  13. Ovatko kaikki ohjelmointikielet yhtä pikkutarkkoja isoista kirjaimista ja välimerkeistä?
    • Suureksi osaksi ovat. Merkitys muuttuu jos merkkejä puuttuu tai on väärässä paikassa. Ihan kuten luonnollisessakin kielessä: "Armoa ei, vankilaan" - "Armoa, ei vankilaan". Ja kun koodi kirjoitetaan koneella käsiteltäväksi, niin sillä ei ole useinkaan kykyä arvata mitä tarkoitetaan. Google on paras arvaaja, kirjoitinpa mitä pöllöä tahansa, se osaa kysyä "tarkoititko...". Mutta tuo on kaikki syntaksia mistä puhut. Ja jos on syntaksivirhe, se on virheistä helpoin korjata kun kääntäjä siitä huomauttaa. Vaikeampaa on sisällölliset virheet, jotka paljastuvat vasta ohjelman ajossa jos silloinkaan. Useimmiten vasta asiakkaalla. ELi älkää peljätkö syntaksia vaan sitä mitä tulee sen jälkeen kun syntaksi on kunnossa... - VL
    • Täytyy myös muistaa, etteivät ne välimerkit siellä ole huvin vuoksi, vaan jäsentävät koodin rakenteen. - TS
    • Nipotus on hyväksi. Jos ei nipoteta, pitää sen sijaan yrittää arvata mitä ohjelmoija oikeasti tarkoitti kirjoittaa. Tällöin riski väärälle tulkinnalle kasvaa. Sama ilmiö esiintyy ihan ihmistenkin välillä: jos sanot jollekulle jotain epäselvästi mutta hän ei varmista sinulta, mitä tarkoitit, saattaa myöhemmin käydä ilmi, että hän ymmärsi viestisi ihan eri tavalla kuin tarkoitit. Sopivissa oloissa se voi jopa maksaa ihmishenkiä. – AJK
  14. Miten ohjelmointi 1-kurssin vaikeustaso ja ohjelmointikielet ovat muuttuneet kurssin historian aikana + miten paljon ohjelmoinnin kurssista on hyötyä (yleinen koneenkäyttö) normaalien tehtävien jne. tekemisten lisäksi?
    • Olen pitänyt vastaavaa kurssia (tai laitoksella on pidetty)
      • Fortran (OK)
      • Pascal (OK, suunniteltu opetukseen, alunperin puuttui merkkijonot, mutta Turbo Pascal korjasi tämän)
      • C (täynnä ansoja, kaikki aika menee niistä kertomiseen)
      • C++ (sama vika + paljon lisää :-, tosin voi ottaa osajoukon joka on aika toimiva)
      • Java (OK)
      • C# (OK)
    • Ajatusmalli siitä, mitä ohjelmat pitävät sisällään ja millä tavalla koodari ajattelee, voi auttaa tavallistenkin ohjelmien käyttöä. Erityisesti auttaa ymmärtämään miksi niissä on puutteita (rajalliset resurssit, valmistumisen paine, kukaan ei tahallaan tee "roskaa"). - VL
    • Jos ymmärrät ohjelmointia, ymmärrät huomattavasti enemmän miten tietokone toimii. Tämä vähentää mystiikkaa teknologian ympäriltä. - TS

4. Kurssin sisällöstä

  1. Ovatko (ovathan) kurssilla opittavat asiat "kestäviä", eli taidot eivät ole vanhentuneita jo vuoden päästä?
    • ehdottomasti säilyvät kunhan turhat yksityiskohdat suodattaa pois. Kielet vaihtuvat, perusperiaatteet ovat olleet samoja jo kymmeniä vuosia - VL
  2. Mitkä ovat kurssin läpäisemisen kannalta kolme ehdottomasti tärkeintä aihealuetta?
    • aliohjelmat
    • muuttujat
    • silmukat - VL
  3. Saanko käyttää englanninkielisiä muuttujien, aliohjelmien yms. nimiä koodissani suomenkielisten nimien sijaan? (Tuntuu minusta hölmöltä käyttää suomenkielisiä nimiä englanninkielisten sanojen seassa)
    • saat valita itse oman koodausstandardisi ja englannin käyttö on ihan ok. Kurssin esimerkeissä yritän käyttää siksi suomea, että erottuisi paremmin mikä on itse tehtyä ja mikä tulee kielestä tai kirjastosta. Totta että oikeaan ohjelmaan tällainen sekakielisyys ei kuulu :-) - VL
  4. Miksi ohjelmointi 1 kurssit ovat ihan erilaisia tasoltaan (opetukseltaan)?
    • on erilaisia tapoja opettaa ja jotkin sopivat toisille ja jotkin toisille. Itse haluan opettaa esimerkkipohjaisesti ja näyttäen mitä itse joudun tekemään/ajattelemaan. - VL
  5. Miksi tietotekniikan laitoksen ja tietojenkäsittelytieteiden laitoksen järjestämiä ohjelmointi 1 -kursseja ei voisi hieman yhdenmukaistaa, vaikka kurssien kohderyhmä osittain erilainen onkin?
    • kumman suuntaan "mukaistetaan"? Nykyinen antaa opiskelijoille mahdollisuuden valita. - VL
  6. Antavatko ohjelmointi 1 ja ohjelmointi 2 kurssit valmiuden päästä ohjelmoimaan yrityksiin? Tietenkin arvosanat täytyisivät olla kohtuullisen hyviä molemmista.
    • eiköhän Ohj2 ole yksi ensimmäisistä mitä paikalliset yritykset kysyvät kun ottavat töihin :-) Mutta nuo eivät riitä, kyllä opinnot olisi hyvä viedä loppuun saakka, jotta näkymä ei jää liian kapeaksi. - VL
    • Kapeaksi jää osaaminen pelkästään noiden perusteella. Voivathan ne töihin ottaakin. - TS
  7. Kuinka hyvin ohjelmoijat työllistyvät?
    • en tunne ketään työtöntä :-) Joka tosiaan on valmis työntekoon ja osaa jotakin. - VL
    • lisäksi erinomainen mahdollisuus oman firman perustamiseen. Tarvittava rahallinen pääoma pieni. Sijoitus jonkin on useimmiten henkinen sijoitus, jolloin jos homma ei vedäkään kuten piti, ollaan menetetty "vain" työpanosta. Pieni firma voi elää pienelläkin asiakaskunnalla kunhan on valmis uudistumaan.
  8. Mikä on sinun opetusurallasi laajin peli, joka on ohjelmointi 1 kurssilla toteutettu? Nyt kun mahdollisuus on mobiilipuolellekin peliä siirtää, onko joku lyönyt rahoiksi jo pelkästään ohj1 osaamisella?
    • itse asiassa tämä on vasta toinen kerta minulle tällä kurssilla ja olen nähnyt vain murto-osan viime syksyn harjoitustöistä kun ne olivat ohjaajien vastuulla. Antti-Jussi ja ohjaajat osannevat vastata tähän paremmin. - VL
    • Rahoista en tiedä, mutta monia hienoja hienoja pelejä on syntynyt, esimerkiksi Simo Rinteen Turnajaiset (mm. verkkopeli), Visa Nummelinin Otusottelu (RTS, lukiolainen), Henrik Paanasen SupaXtriim (mm. omat valot). Näistä jokainen on toki laajempi kuin Ohj1-kurssilla vaadittu, mutta kertoo jotain Jypelin mahdollisuuksista ja toisaalta siitä, että hommaan uppoutuu helposti ja "pakollinen harkka" muuttuu yhtäkkiä kiinnostavaksi ja hauskaksi... -AJL
  9. Mikä on mielestäsi parhaiten toteutettu peli Ohjelmointi 1 kurssilla?
    • ks edellä, pitää odottaa ohjaajien vastausta. - VL
  10. Pystyykö tämän kurssin puitteilla minkäänlaiseen 3D-mallinnukseen? Ja jos ei, niin millä kurssilla se on mahdollista?
    • ei suoranaisesti tällä kurssilla. Vuosi sitten taisi olla yksi 3D-pelimallinnuskurssi. En muista nimeä. - VL
    • Tämäkin on opittavissa itseopiskeluna, jos kiinnostusta riittää. Ohjelmoinnin kanssa vähän tekemistä, paitsi että mallinnusohjelmiakin voi usein skriptata tekemään työt puolestasi, jolloin ohjelmointitaidosta taas on hyötyä. - TS
  11. Joudutaanko me tutustumaan ASCII-koodiin tällä kurssilla tarkemmin?
    • kuulostaa siltä että ASCII ei kiinnosta :-) Oppimistavoitteen kannalta ei. Mutta en tiedä millä kurssilla tutustutaan koodeihin kunnolla, kun tuo ASCII/ISO/UTF-sotku pitäisi hallita, jotta voisi pärjätä näiden aina rikki olevien skandien kanssa. - VL
    • kun käsitellään merkkijonoja ja kirjaimia, täytyy hieman ymmärtää koodistosta.
  12. Mihin heksalukuja oikeasti käytetään? Onko ne kehitetty vaan lyhentämään binäärilukuja? Ja jos on niin, miksi binääriluvut on sitten olemassa?
    • minun perspektiivistä ne ovat lyhenne binääriesitykselle. On käytetty myös 8-järjestelmää, mutta se ei istu niin hyvin 8 bitin tavuun koska ei tule kokonaisia 3 bitin yhdistelmiä tasamäärää. Kun minä aloitin, yliopistolla oli Univac 1100 kone, jossa tavut olivat 9 bittiä ja silloin 8-järjestelmä istui nätisti. Binaariluvut ovat koska se binäärisessä tietokoneessa on luonnollisin tapa esittää asioita. Kahden eri arvon tunnistaminen toisistaan on merkittävästi helpompaa kuin 10 erilaisen (on tai ei ole, jännite on 0 V tai 5V, vesi virtaa tai ei virtaa, joo tietokoneen voisi tehdä vaikka vesihanoilla).
  13. Huomaan että edellisellä kurssilla oli jokin "teemapäivä" johon osallistuivat sekä Microsoft että Nokia. Onko tällä kurssilla tiedossa jotain vastaavaa?
    • mahdollisesti tulee. Ei vielä varmaa, kävivät täällä juuri elokuun lopulla (5 opiskelijaa paikalla).
  14. Onkohan asiaan liittyvää kirjallisuutta tai internetsivuja, joka olisi hyödyllistä kurssin Guru-tehtäviä ajatellen?
    • yleisluontoisesti mikä tahansa ohjelmointialan kirjallisuus. Yksittäisiin tehtäviin enemmän ajattelu. - VL
  15. Milloin opimme tekemään omia kirjastoja omia ohjelmia varten?
    • osittain koko ajan, eli esim tuollainen LumiukkoAli olisi jo askel siihen suuntaan. Kuitenkin enemmän ehkä vasta Ohj2 ja Graafisten Käyttöliittymien Ohjelmointi -kurssilla.
  16. Saako netistä ladattua julkisia kirjastoja omaan käyttöön?
    • saa. Kannattaa kuitenkin tutusta ehtoihin, että ne soveltuvat omaan työhön ja mahdolliseen kaupallistamiseen. Lisäksi mitään ei kannata rakentaa toisen kirjaston päälle, ellei kirjastosta saa myös lähdekoodia, koska muuten tekijän lopettaessa käy huonosti. - VL
  17. Tullaanko jossain vaiheessa perehtymään tarkemmin graafisten c#-ohjelmien luontiin vai riittääkö, että osataan vain viitata johonkin kirjastoon (kuten Jypeli), mistä ne haetaan omaan ohjelmaan?
    • graafinen voi tarkoittaa monta asiaa. Graafinen käyttöliittymä ei kuulu tälle kurssille, vaikka pelissä onkin grafiikkaa. Näytän silti kurssin lopussa miten VS:llä tehdään graafista käyttöliittymää. Jos haluaa mennä asioiden edelle, voi katos viime vuoden luennoista viimeisiä luentoja. - VL
  18. Kuinka "hyväksi" ohjelmoijaksi voi tulla jo pelkästään yliopiston kahden ohjelmointikurssin pohjalta? Toisin sanoen kuinka vankan osaamisen tason voi näiden kurssien avulla saavuttaa?
    • ei nyt vielä minkäänlaiseksi. Päälle tarvitaan kokemusta ja sitten muiden kurssien tuomaa laajakatseisuutta. Ohjelmointi ei ole pelkkää "napunapua". Itse asiassa paljon muuta. Sovellusprojekti lopulta vetää tietoja yhteen ja antaa perspektiiviä. - VL

5. Jypeli

  1. Miten ohjelmaa voi sanoa itsetekemäksi vaikka on käyttänyt muiden tekemiä koodeja (esim. Jypeli-kirjasto)?
    • jos tuolle linjalle lähdettäisiin, niin kukaan ei ole itse tehnyt mitään, koska ei ole tehnyt sitä tietokonettakaan. (minä olen kyllä logiikkapiireistä aloittaen rakentanut, samoin "käyttiksen", mutta silloinkin ne piirit ovat ollet toisten tekemiä). Autotehtaatkin käyttävät toisten tekemiä renkaita yms. Kyllä alalle kuuluu, että käytetään hyväksi toisten tekemää työtä. Tietysti aina voi mainita mitä on käyttänyt pohjana. Jypelikään ei ratkaise sitä varsinaista ideaa, joka on aina (toivottavasti) tekijän oma. - VL
  2. Opimmeko kurssilla mitään pelifysiikan tekemisestä, kun käytämme valmista kirjastoa?
    • Emme yritäkään, koska se ei kuulu perinteisesti CS1-kurssien oppimistavoitteisiin. - VL
  3. Yritin etsiä Jypeli-kirjastosta jotain muuta muotoa ympyrän tilalle lumiukkoa varten (siis ettei suukin olisi pallo). Miten tuota kirjastoa käytetään? Pääsin PhysicsObject -otsikon alle omin avuin mutta siitä eteen päin en löytänyt.
    • Sieltä käyttöohjeista pääsee ehkä paremmin kiinni, sen jälkeen dokumentaatiosta. Shape olisi tässä tapauksessa se luokka jota etsit - VL
  4. Voiko kurssin harjoitustyönä tehdyn pelin saada helposti toimimaan android puhelimessa?
    • täysin uudelleen kirjoittamalla. Jypeli tekee suurimman osan ja siitä ei ole Android-versiota. Sorry - VL
    • Android-ohjelmat tehdään Javalla, ja Jypeli on rakennettu Microsoft XNA:n päälle. Windows Phone -puhelimiin pelin voi portata, mutta Androideihin ei. :( - JP
  5. Miten paljon kurssin tehtävissä tullaan käyttämään Jypeliä tai muita kirjastoja?
    • oisko demoista n. 50% Jypelillä ja toinen puoli ilman. HT Jypelillä.
    • muita kirjastoja ei systeemin mukana tulevien lisäksi tällä kurssilla käytetä. - VL
  6. Voiko harjoitustyössä käyttää grafiikkaa paremmin eli liittää kuva jostain ulkopuolelta ja tehdä niin graafisesti näyttävämpi peli?
    • se on tarkoituskin, että taustaksi ja olioiden kuviksi laitetaan grafiikkaa. - VL
  7. Kuinka paljon lumiukkopeliä monimutkaisempia ovat erilaiset puhelimeen saatavat pelit, esim. Angry birds?
    • valtavan paljon monimutkaisempia. Hyvä HT jää ehkä 5-50 x AB:n monimutkaisuudesta.
  8. Kuinka paljon taitoja ja millaiset ohjelmat vaaditaan esimerkiksi nyt Angry Birdsin tekoon?
    • hyvä ohj.osaaminen. Hyvä visuaalinen osaaminen. Huumoria tehdä "tarina" joka on yksinkertainen mutta kantaa eteenpäin. Lisäksi äänimaailma pitää hallita. Löytyykö nämä ominaisuudet yhdeltä ihmiseltä? Useimmiten ei, eli tarvitaan hyvä ryhmä, taitoa, uskallusta, yritystä ja tuuria. - VL
    • Meidän työkalut riittävät hyvin AB:n tasoisen tekemiseen WP:hen. Ja Eclipse yms. Androidiin. - VL
  9. Onko Windows Phone tulevaisuuden alusta?
    • sillä olisi kaikki mahdollisuudet. Esteenä vaan on uskomaton Nokia + MS vihamielisyys. Useimmat alustaa haukkuvat eivät edes tiedä mistä on kyse. Ongelmat ovat muut kuin mitä haukutaan. Vikoja on, mutta niistä voisi selvitä jos MS kuuntelisi asiakkaitaan. - VL
  10. Toimiiko jyypeli-kirjasto ollenkaan Javan (tai yleensä muiden kielien) kanssa, vai onko yhteensopivuus juurikin se syy miksi syksyn ohjelmointi 1 -kurssin kieli on vaihdettu C#:iin (jotta voidaan tehdä kurssilla peli harjoitustyöksi)?
    • Jypeli on rakennettu MS:n XNA-kirjaston päälle ja siitä ei ole muita implentaatioita. Eli ei toimi. - VL

6. Yleistä ohjelmoinnista

  1. Täytyykö ohjelmoijan opetella paljon komentoja ulkoa?
    • mieluummin ei. Pitää tietää mistä löytää mitäkin kun tarvitsee. Ja jos jotakin käyttää jatkuvasti, niin sen oppi siksi aikaa. Kuukauden päästä sekin on unohtunut jos ei aktiivisesti käytä. Ulkoaosaaminen on pääosin turhaa kapasiteetin käyttöä, tosin nopeuttaa aktiivityössä. - VL
  2. Mikä on kaikista vaikeinta ohjelmoinnin maailmassa?
    • pitää asiat kasassa. Ajattelu. - VL
    • ihmisten jakaminen karsinoihin. - VL
    • joutavanpäiväinen tekniikoista taistelu. - VL
    • turha ulkoistaminen. -VL
    • jatkuva muuttuminen. - VL
    • vanhan poisheittäminen. - VL
    • Suunnittelu. Sitten kun tietää miten tekee, niin ohjelmointi on vain suorittavaa työtä. - TS
    • Tuo edellinen voi johtaa myös väärään mielikuvaa. Ohjelmointi on suorittavaa => siirretään Intiaan => katastrofi. Pitää muistaa että hyvin suunniteltu on ... kokonaan tekemättä. Eli jossakin vaiheessa on ruvettava myös tekemään, koska suunnitelmat ja tarpeet muuttuvat. Tulee uusia ideoita, jotka voivat kokonaan tehdä vanhat suunnitelmat tarpeettomiksi. Asiakkaat voivat huomata etteivät toivoneetkaan sitä mitä saivat. Jos jämähdetään "suunnitteluun ja spekseihin" menetetään mahdollisuus luovuuteen. Jos koodarilta kielletään luovuus, on työteho menetetty. Suunnittelua ja tuotantoa ei saa erottaa toisistaan. Asiakasta ja koodaria ei saa erottaa toisistaan. - VL
    • Näinpä. Ulkoistettu tekijä ei välttämättä tiedä miten tekee, koska ei ymmärrä alkuperäistä ongelmaa ja sen taustaa. - TS
    • Ohjelmointivirheiden välttäminen. – AJK
  3. Mikä on hyvän ohjelmoijan tärkein ominaisuus?
    • luovuus, kriittisyys ja ajattelu. - VL
  4. Mikä tekee hyvän ohjelmoijan?
    • harjoittelu. Muiden koodien lukeminen. -VL
  5. Mikä/mitkä on/ovat koodaajan tärkein/tärkeimmät ominaisuus/ominaisuudet?
    • tuosta oli jo edellä jonkin verran. Laaja-alaisuus ehkä unohtunut mainita. - VL
    • ja näkisin, että kommunikointikyky on sitä tasoa että voidaan päästää asiakkaan kanssa suoraan tekemisiin jolloin informaatiota ei katoa. Jos johdolla/projektipäälliköllä on älyä siihen että koodari voi jopa jotakin ymmärtää :-) - VL
  6. Muistaako hyvät ohjelmoijat paljon koodeja ulkoa?
    • tietävät mistä tietoa löytää ja muistavat sen mitä juuri nyt käyttävät. Eivät muista kuukauden päästä. - VL

7. Henkilökohtaista

  1. Miksi vihaat graafisia käyttöliittymiä? Mitä nopeudessa hävitään, voitetaan usein intuitiivisuudessa ja helppokäyttöisyydessä.
    • oikeassa paikassa GK on ihan OK. Mutta sen automatisointi ei toimi. Silloin jäädään ikuisiksi ajoiksi hiiren orjaksi. Kun jotakin tehdään harvoin on tuo intuitiivisuus ihan OK. Mutta jatkuvasti toistettuna ja aina hiirellä tehtynä se on itse asiassa käden surma. Monta rannetta on jo mennyt hiirellä pilalle. Itse asiassa minä olen kuitenkin laitoksella melkein eniten GK:n puolella :-) - VL
  2. Mitä kuuluu?
    • riippuu päivästä. Ma luennon jälkeen tuntui että aliohjelmien idea meni perille, mutta Ti tuli ehkä liikaa asiaa ja se jäi vähän kaivelemaan. - VL
  3. Mikä on luennoitsijan mielipide Windows 8 käyttöjärjestelmästä?
    • jos se käynnistyy nopeammin, niin OK.
    • tiililiittymä ja koko ruudun ikkunat eivät sovi isoon työaseman näyttöön. Toivottavasti olen väärässä, mutta mielestäni MS yrittää jotakin minkä Applekin on todennut turhaksi, eli yhdistää työasema ja tabletti. - VL
  4. Mikä on mielestäsi paras ohjelmointikieli? Miksi? Tarkoittaako jonkin kielen yksinkertaisuus suoraan tehottomuutta/epäkäytännöllisyyttä?
    • itse pidän edelleen Delphistä, mutta se johtuu siitä, että sillä on tehty isoin ohjelma jota jatkuvasti ylläpidän. C#:issä on ihan kivoja ominaisuuksia, mm automaattinen muistinhallinta on paremmin kuin Delphissä. Mutta oikeastaan kielet eivät ole se pointti vaan kirjastot ja ympäristö. Ainakin minulle. - VL
  5. Mikä on suurin yksittäinen saavutuksesi ohjelmointiin liittyen?
    • kyllähän jos ihmismäärää katsotaan, niin Korppi on aika laajassa käytössä.
  6. Miten (ja miksi) aloitit oman ohjelmoijan urasi, ja mikä on ollut mieleenpainuvin ohjelma jonka olet saanut aikaan?
    • tietyssä mielessä kaikki alkaa jo lukiovuosilta kun rakentelin autosuunnistusta varten "sulautettua järjestelmää". Aluksi ihan pelkkä nelilaskin, jonka + nappia "painettiin" transistorin avulla aina kun rengas oli pyörähtänyt tietyn matkan. Tästä lopulta täysin itse tehtyyn järjestelmään (jota ei ohjelmoitu vaan ohjelmointi oli sitä miten piirit pistettiin keskustelemaan keskenään). Tästä aikanaan jatkosovellus joka mittasi kattopeltejä ja se on edelleenkin firmamme päätuote. Ohjelmointi on niin pitkäjänteistä puuhaa, että siinä ei tule ihan samanlaisia ahaa-elämyksiä ison asian ratkaisusta kuin matematiikassa. Pienessä mielessä kuitenkin aina kun jotakin asiaa tosissaan pitkään miettii ja keksii siihen hyvän ratkaisun, niin se tyydyttää. Aika hienoja mm. oli aikanaan kun tietokoneen näytön sisällön sai siirrettyä sokeiden lukulaitteelle.
  7. Montako ohjelmaa, jotka on edelleen käytössä / toiminnassa, olet tehnyt?
    • en ole ikinä laskenut. Suurimmaksi osaksi koodaan itselleni. Kuten esim. polkupyörän mittari WP:hen. Ei ole tarkoitettukaan muille. Tai systeemi joka lähettää reaaliaikaisen sähkönkulutuksen kännykkään. Koneen käyttöä itselleni avustamaan hirveä määrä pieniä ohjelmia, joista esim. tiedostoja helposti kopioiva KOPIOI on edelleen mulla aktiivikäytössä, vaikka tehty joskus 80-luvun puolivälissä (kun mikään valmis ohjelma ei osannut kopioida rekursiivisesti). Firmamme järjestelmiä tietysti käytössä ympäri maailman. Korppi (suoranaisesti siinä ei hirveästi suhteessa mun koodia, mutta monet ideat ovat mun) on käytössä, tosin sen koodaus on mennyt nykyisin vähän muille urille kuin alkuperäiseen tarkoitukseen, eli opettajille ja opiskelijoille.
  8. Miten itse kiinnostuit ohjelmoinnista ?
    • alunperin kun tulin opiskelemaan ajattelin että jos tietokoneen käyttö on niin vaikeaa että sitä pitää opiskella, niin saa mun puolesta olla. Mutta (olin jo tehnyt noita sulautettuja järjestelmiä, en kuitenkaan ymmärtänyt ohjelmoinnista) menin kuitenkin kurssille. Ekassa kokeessa kysyttiin että mistä tieto koostuu ja vastasin että tiedon palasista kun oikea vastaus olisi ollut "tietoalkioista". Lopetin koko homman hetkeksi. Mutta myöhemmin jatkoin ja huomasin että ei siitä lopulta hirveästi haittaakaan ole ja voi jopa olla itselle hyödyksi. Nykyistä Ohj2:sta vastaavan kurssin puolessa välissä rupesin ko kurssin tuntiopeksi. - VL
  9. Miten olet itse innostunut ohjelmoinnista ?
    • ks edellä. Se tuli hissukseen kun tajusi että tinaamalla johtoja on hyvin vaikea muuttaa toimintaa ja erityisesti saada aikaan monimutkaisempia toimintoja.
  10. Oletko koko ikäsi ollut kiinnostunut ohjelmoinnista? Teitkö esim. jo lapsena itse pelejä ynnä muita?
    • lapsena ei ollut tietokoneita, onneksi. Valokuvatkin kehitettiin ja tehtiin itse pimiössä :-)
    • kun minä olin lukiossa, oli oikeastaan vasta ohjelmoitavat laskimet tulossa. Lukion 1. luokalla käytin laskutikkua ja olin siinä varmaan luokan paras soveltamaan sitä erilaisten tulosten tarkistamiseen. Kun sitten laskimet rupesivat tarjoamaan samaa, sieltä aluksi löytyi apuja. Yliopiston fysiikan harkkatöissä koodasin laskimeen ne töissä tarvittavat kaavat ja sain parhaimmillaan työn palautettua heti kun mittaukset oli tehty. Ja sitten siitä aikanaan ne tietotekniikan kurssit. Alunperin tulin lukemaan fysiikkaa, vaihdoin siitä matikalle ja lopulta tälle alalle. - VL
  11. Mikä on mielestäsi ohjelmoinnissa kaikista vaikeinta, entä kaikista mukavinta?
    • oikeastaan tämä on vaikeinta mitä ihmiskunta on ruvennut tekemään. Mahdollisuudet ovat niin laajat, samalla myös mokaamisen mahdollisuudet. Ohjelmien koon kasvaessa vaikeinta on sen kokonaisuuden hallinta. Enkä osaa edes kuvitella mitä tuo on jos on mukana satoja koodareita. Sellaisessa en ole ollut mukana (enkä ole varma haluaisinkokaan). - VL
    • pitää muistaa, että ohjelmaa ei voi tehdä kunnolla jos ei hallitse alaa johon on ohjelmaa tekemässä. Tällä munitaan monta ohjelmaa. - VL
    • käyttöliittymäsuunnittelijat jotka eivät tiedä ohjelmoinnista mitään, eivät edistä alaa. - VL
    • mukavinta on kun saa hyvän idean toimimaan haluamallaan tavalla. Se tyydyttää joksikin aikaa. - VL

8. Lajittelemattomat vastatut

  1. Minun teki mieli heittää ainakin neljä kertaa kone seinään näitä tehtäviä tehdessä... Uskotko, että koneeni on ehjä vielä jouluna?
    • laita kone sidontaliinalla pöytään kiinni, silloin se kestäneen jouluun.
  2. Onko tähän kurssiin liittyen olemassa Microsoftilla jonkinlainen projekti, mistä voi saada joitakin mukavia hyödykkeitä, kuten puhelimen? Jos, niin millainen, ja mitä siitä saa?
    • tänä vuonna ei ole tiedossa, mutta voihan tilanne muuttua.
  3. Huomasin DreamSparkin sivuilla mahdollisuudesta ladata Kinetic -ohjelmisto, jolla saisi mahdollisesti hyväksikäytettyä kannettavan tietokoneen webkameraa harjoitustehtävän kanssa. Kuinka mahdoton tehtävä tämä olisi?
    • ihan riippuu omasta kokemuksesta. Ihan alusta tehtynä voi olla haastavaa, riippuu siitä mitä kuvalla aikoo tehdä. - VL
  4. Mikä on seuraava läpimurto it-alalla?
    • jos tietäisin, niin keksisin sen itse. - VL
  5. Missä kulkevat tällä hetkellä ohjelmoinnin rajat ja tullaanko ne rikkomaan?
    • yhtenä rajana pidetään ohjelman kriittistä kokoa, jonka jälkeen siihen tehty yksi korjaus tuottaakin 2 virhettä. Tuota rajaa voidaan viedä ylöspäin kehittyneemmillä työkaluilla ja "paradigmoilla". Esim. olio-ohjelmointi siirsi rajaa verrattuna pelkkään rakenteiseen ohjelmointiin (jota opettelemme tällä kurssilla, tosin käytämme oliota, emme tee uusia luokkia, paitsi se peli-luokka). Lisäksi nuo rajat riippuvat aika paljon ohjelmoijasta. Samoin kuin tuottavuuskin. On sanottu että millään muulla elämän alalla ei ole yhtä suuria tuottavuuseroja kuin ohjelmointialalla. - VL
    • Ainut raja ohjelmoinnissa on se, minkä ihmisen mielikuvitus asettaa. -ji
    • Tunnetaan joukko ohjelmointiongelmia, joille todistettavasti ei ole olemassa ratkaisua. Esimerkiksi sellaista ohjelmaa ei ole mahdollista kirjoittaa, joka mistä tahansa sille annetusta ohjelmasta sanoisi (luotettavasti), jääkö se jumiin annetulla syötteellä. Tätä kutsutaan pysähtymisongelmaksi (the halting problem). On myös todistettavasti mahdotonta laatia kääntäjää, joka kääntää minkä tahansa sille annetun ohjelman niin pieneksi exe-tiedostoksi kuin on ylipäätään mahdollista. Tätä kutsutaan kääntäjänkirjoittajien täystyöllisyyslauseeksi (the full employment theorem for compiler writers). Tervetuloa pohtimaan näitä kysymyksiä vuoden kuluttua Automaatit ja Kieliopit -kurssille! –ajk
  6. Onko alkoholilla todettu olevan positiivinen vaikutus ohjelmistokehityksen tulokseen?
    • joskus nollaus voi auttaa aloittamaan ajattelun uudelta kantilta.
    • koodaamista vaikutuksen alaisena en suosittele. Ideat voivat vaikuttaa paremmilta kuin oikeasti ovatkaan. - VL
    • Kuten nettisarjakuva asian kertoi: http://xkcd.com/323/ ;) - JP
    • Mutta täysissä järjen voimissa aloitettu aamuyön tunneille venyvä koodaussessio voi siirtyä oikeasti "flowhun", jossa saa tehty ihmeitä. Ahkera pohtiminen/yrittäminen väsymyksen aiheuttaman herpaantumisen takia voi johtaa uuteen näkemykseen. Tai sama voi tapahtua kun menee nukkumaan ja asiat jäävät pyörimään, niin uusi idea voi tulla unessa. Matemaattisesti "isoimman" keksintöni tein aamulla liikennevaloissa. - VL
  7. Onko Maciin olemassa paljon viruksia?
    • Yhä enemmän nykyisin, kun alusta on yleistynyt. Aiemmin kannatti tehdä mieluummin Windows-viruksia, koska Windows oli selkeästi yleisin käyttöjärjestelmä. Vielä tällä hetkellä Mac-virukset ovat useimmiten troijalaisia, jotka pyytävät käyttäjää syöttämään pääkäyttäjän salasanan ohjelman suoritusta varten ja yrittävät tehdä sen esimerkiksi jonkin tutun ohjelman logolla varustettuna, joten valppaana kannattaa varoitusdialogeihin vastatessa olla. Virusturvaohjelmistot MacOS-järjestelmissä turvaavat useimmiten enemmänkin Windows-käyttäjiä, joille Mac-käyttäjä saattaisi vahingossa levittää Windows-viruksen sisältävän tiedoston. En kuitenkaan sano, etteikö toimivia ja tehokkaitakin Mac-viruksia olisi. Niitä ei vain ole vielä yhtä paljon kuin Windowsille. - JP
    • Edellistä vastausta voi soveltaa myös Linux-viruksiin, vaikka niistä nyt ei kysyttykään. - JP
    • Tietääkseni Macille, tarkemmin OSX:lle ei ole olemassa yhtään virusta, eikä maailmaltakaan Veijo Googlen ystävällisellä avustuksella yhtään viitettä moisiin löytynyt. Sen sijaan muita haittaohjelmistoja, kuten matoja ja troijalaisia, löytyy jo jokunen. Linuxille viruksia on jo muutamia, joten on vain ajan kysymys, koska ne OSX:lle ilmestyvät. -ji
  8. Mikä on suurin ja monimutkaisin ohjelmointiköntti, mitä on tehty ja miten sen ylläpito on mahdollista?
    • En tiedä vastausta, mutta kysymyksesi ovat hienoja! Jos etsiä pitäisi, kokeilisin löytää jotain lennonhallinta- ja finanssijärjestelmien suunnalta. Joka tapauksessa suosittelen lukemaan tämän: http://dreamsongs.com/Files/DesignBeyondHumanAbilitiesSimp.pdf Termi, jota noista järjestelmistä käytetään, on Ultra-large scale systems. -ji

8. Historia

  1. Minkä takia ohjelmointi on alun perin syntynyt, ja kuka sai varsinaisen idean siihen?
    • Minkä takia? Koska ihminen sai idean. Kuka? Äitinä pidetään Ada Byronia, Lovelacen herttuatarta, mutta jo häntä ennen Jacquard rakenteli ohjattavia kutomakoneita, joiden ohjauksessa oli rekursiivisia rakenteita. -ji
    • Ei ole olemassa yksittäistä keksijää. –ajk
    • Ohjelmoitavia koneita on suunniteltu ja rakennettu ainakin vuosituhat (Banū Mūsān veljesten automaattinen huilu on peräisin 800-luvulta), tosin vasta kutomakoneiden kehitys 1700-luvulla toi ne yleisesti käyttöön (mainittavia nimiä Bouchon, Falcon ja de Vaucanson; ji:n edellä mainitsema Jacquard teki ohjelmoitavat kutomakoneet tunnetuiksi mutta ei itse keksinyt suurinta osaa siitä). Charles Babbage suunnitteli 1800-luvulla mekaanisen Analyyttisen Koneen, täysin ohjelmoitavan tietokoneen sanan modernissa merkityksessä, jota ei kuitenkaan koskaan rakennettu. Ada Augusta King (os. Byron), Lovelacen kreivitär, mainitaan usein maailman ensimmäisenä ohjelmoijana koska hän kävi kirjeenvaihtoa Babbagen kanssa ja julkaisi kokonaisen Analyyttiselle Koneelle tarkoitetun ohjelman. –ajk
    • Jos yksi henkilö pitäisi valita ohjelmoinnin keksijäksi, ehdottaisin itse Alan Turingia, joka 1930-luvulla julkaisi mullistavan uuden teoreettisen mallin mekaaniselle laskennalle. Kun 1940-luvulla sitten alettiin sodan motivoimana rakentaa ohjelmoitavia tietokoneita, Turingin malli oli kaikilla mielessä. –ajk
    • Varsinaiset modernit tietokoneet kehittyivät monessa paikassa yhtä aikaa 1940-luvun kuluessa, joten yksittäistä keksijää ei voi mainita. Erityismaininnaan ansaitsee ENIACin alkuperäinen ohjelmointitiimi: Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas ja Ruth Lichterman. –ajk
    • Jos haluatte tutustua maailman ensimmäiseen ohjelmoinnin oppikirjaan (vuodelta 1951), sen voi tilata lainaan yliopiston kirjaston kaukopalvelun kautta Varastokirjastosta. –ajk
    • Ensimmäinen oikeasti käyttöön tullut moderni ohjelmointikieli oli FORTRAN, jonka pääkehittäjä oli John Backus. Sitä aiemmin oli Konrad Zuse suunnitellut (mutta ei toteuttanut) maailman ensimmäisen ohjelmointikielen, Plankalkülin, ja näiden välissä oli ilmestynyt monia esimoderneja ohjelmointikieliä. –ajk
    • Miksi ohjelmointi keksittiin? Tarvittiin teknillistieteellisiin, kaupallisiin ja sotilaallisiin käyttötarkoituksiin yhä parempia laskentavälineitä. Siitä se sitten lähti. –ajk

9. Vastaamattomat

  1. Tähän ku piti joku kysymys esittää niin esitetään nyt tällänen mieltä askarruttava kysymys vaikkei ihan ohjelmointiin liitykkään, eikä mitenkään tärkeä ole. Asensin windowssin pöytäkoneeseen ja aloin säätää path polkkua samalla kaavalla kuin läppärissä on. Törmäsin ongelmaan cygwinin kanssa. Vaikka path polussa oli cygwinin bin kansio määritelty ei se jostain syystä suostunut toimimaan. Vasta kun siirsin sen ensimmäiseksi linux komennot alkoi toimimaan. Mistä tämä johtuu? Eikö tietokoneen kuitenkin pitäisi käydä kaikki ne kansiot läpi mitkä on pathiin laitettu? Listalla ennen ollut kansio missä on bat tiedostoja kuitenkin toimii vaihdon jälkeen normaalisti.
  1. Mikä oli ensimmäinen ohjelmoitu tiedosto, kuka sen teki, ja milloin?