Kertokaapa, onko ala-aste -ikäiselle tekniikasta kiinnostuneelle poijalle minkäänlaista 'ohjelmointikieltä', josta hän saisi onnistumisen iloa. Oliopohjaista yms...?
Antakaa vinkkejä, jos kokemusta. KIITOS.
Antakaa vinkkejä, jos kokemusta. KIITOS.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 10
Vanhimmat
Siihen, mikä on paras kieli, vaikuttaa koodaajan lahjakkuus ja tavoitteet. Peruskysymys: Pitäisikö heti aloittaa "teollisuusakateeminen" ohjelmointi?
Jotkut 3d-grafiikkaohjelmistot ovat jo itsessään hyvin "ohjelmoitavia". Niiden mekaniikassa on enemmän oppimista, kun minun aloittaessani basicin perustoiminnoissa. Muutaman vuoden kuluttua on vielä enemmän. Kehittäjät huolehtivat siitä.
Siis valmisohjelmien toiminta VOISI olla järkevämpää tuntea perin pohjin, kun ohjelmointikielet, joilla työskentely on yhä vaivalloisempaa ja taitoa vaativampaa.
Ohjelmointi voisi avautua myöhemmin ohjelmien laajennosten kautta (skriptaus) tai silloin jos innostuu parantelemaan ohjelmaa (open source).
Tuomoinen omituisuus löytyy
"Tietokoneiden kanssa kannattaa nykymaailmassa hankkiutua tutuksi jo pienenä, mutta ohjelmoinnin opettelu on monille melkoinen askel. Java tai C on etenkin nappulaikäiselle turhan tuhti tapa opetella ohjelmoinnin perusteita. Paremmin alkuun pääsee vaikkapa kotimaisella Kielix-ohjelmointikielellä. Kielixin komennot ovat selvää suomea, eikä sen omaksumiseen vaadita laajaa ohjelmoinnin perusteiden käsitepohjaa. Olio-ohjelmoinnin fanaattiset kannattajat saattavat rypistellä kulmiaan Kielixin rivinumeroille, vaikka luultavasti ovat itsekin aloittaneet koodariuransa jonkin kotimikron Basic-versiolla."
http://www.saunalahti.fi/~mcc/kielix20/index.htm
Logo ?
http://en.wikipedia.org/wiki/Logo_(programming_language)
Ehkä Python ?
DrScheme, jos enkuntaito riittää. Tuosta se lähtee:
http://docs.plt-scheme.org/quick/index.html
Siitä voisi lähteä, että ohjelmointikielessä on jotain minimalismia. Oliopohjaisuus voi olla turhan raskasta kauraa heti aluksi mutta toisaalta olisi hyvä jos kieli olisi sellainen joka ei aiheuttaisi älyttömästi uudelleen oppimista kun siirtyy helloworldeista eteenpäin.
Niin hurjalta kuin kuullostaakin niin sopivin kieli saattaa hyvinkin olla C. Kieli on tavattoman yksinkertainen joten se on myös helppo ymmärtää (paitsi pointterit..), mutta ongelmana on 70-lukulainen kääntöjärjestelmä. Jos viritettäisit ohjelmointiympäristön (ja kirjastot) valmiiksi että tuo ei olisi turhaan nostamassa oppimiskäyrää niin voisi olla hyvä vaihtoehto. Siitä on sujuvaa siirtyä olio-ohjelmointiin ja C:n syntaksi on kopioitu joka paikkaan, että ei mene senkään omaksuminen hukkaan.
Kieltämättä tulkkaava kieli olisi näppärä joten ehkä sitten toinen hyvä vaihtoehto olisi Python.
Eli tarjoat lapselle työkalua jossa ei ole mitään turvaominaisuuksia!
Vaikka C-kieli on yksi yleisemmin käytetyistä kielistä niin se on tarkoitettu
ammattilaisille (tmv) jotka ymmärtävät sen tarjoamat vaaratekijät.
Ohjelmoinnin aloittamiseen soveltuu esim. Pascal, Delphi jne
Lazarus on Pascal -pohjainen joten se soveltuu hyvin opiskeluun. Lisäksi se on täysverinen ohjelmointiympäristö moneen käyttöjärjestelmään.
http://www.lazarus.freepascal.org/
Lego Mindstorms, en omaa kokemusta mutta idea on mielestäni hieno.
Minusta ohjelmointi ei välttämättä sovellu vielä ala-aste ikäiselle. On tietenkin poikkeuksia, mutta voin kyllä sanoa, että tuskin kovin moni ala-aste ikäinen ohjelmointiin kykenisi se vaatii jo sellaisia matematiikantaitoja ja päättelykykyä jo aika paljon jos haluaa edetä siitä helloworldistä yhtään pidemmälle. Meilläpäin kaikki ohjelmointikurssit mitä on järjestetty kouluissa on ollut 8. - 9. -luokkalaisille ja sielläkin on ollut ongelmia käsittää jo ihan simppeli if-lause! Ja jos joku täällä ehdottelee ihan olio-pohjaista kieltä, niin mielestäni se ei ole todellakaan sopiva niin nuorelle. Pelkkä olion käsite voi olla liian hankala nieltäväksi...
Omasta kokemuksesta (aloitin ohjelmoinnin ala-asteen 6. luokalla) voin sanoa että alkuun ohjelmoinnin tulee olla äärettömän helppoa, että oppii perusasiat edes.
Pieni tarina: Koulun ATK-kerhossa, jossa siihen aikaan vielä pelattiin enimmäkseen amigalla mätkimispelejä (32 väriä!). Itse kyllästyin pelaamiseen luokan ainoalla PC:llä (EGA 4-väri näyttö) ja opettaja avasi minulle basic-editorin luokan PC-koneella ja löi koneen mukana tulleen ohjekirjan käteen. Mitään ATK-opetusta ei silloin edes ollut.
Kirjoitin koneelle:
10: PRINT "ANNA NIMESI"
20: INPUT A$
30: PRINT "HEI, ", A$
RUN
Sen jälkeen juoksin kotiin ja kirjoitin nuo rivit Commodoren 64 komentotilaan ja sehän toimi. Pientä ironiaa kun nykyään ajattelee että noin vain voisi koneelle kirjoittaa koodia ymmärtämättä kääntäjistä, tulkeista tai editoreista tuon taivaallista. Olin onnesta sekaisin kun tajusin osaavani ohjelmoida.
Tuohon kuin lisäsin vielä IF ja GOTO lauseet, niin niillä pärjäsi jo hyvin kauan:
IF A$="K" PRINT "VASTASIT KYLLÄ"
IF A$="E" GOTO 70
Tuohon aikaan kirjastoista sai vielä värityskirjan näköisiä BASIC oppaita joissa oli listauksia "avaruussota"-peleistä, jotka lähinnä arvuuttelivat lukuja ja IF-ehdon täyttyessä hihkaisivat ruudulla "Pelastit maapallon avaruusolioilta" PRINT komennon avulla. Oi niitä aikoja :)
Ja vielä FOR lause ja numero muuttujan manipulointi eri FOR ja IF lauseiden avulla. Tein matikka pelejä sun muita, ja sitten siirryin merkkien sijoitteluun ruudulle koordinaatein POKE komennolla Y*40 X muuttujien avulla. Ja print komennolla sai hienoa merkkigrafiikkaa C64 aikoina, eikä silloin haaveiltu 3D mallinnuksesta sun muista olioista.
Tämä on taso millä ala-aste ikäiset tutustuvat ohjelmointiin. Nykynuoret tälläkin palstalla kyselevät miten ohjelmoida joku 10 000 työtunnin pelin/ohjelman tapainen ohjelma itse, ja tämä ekana projekti ideanaan, kun ei niillä ole mitään ymmärrystä perusasioista. Aloita basicilla, sitä sen nimikin tarkoittaa. Toisekseen sitä ehtii ennen lukiota loppua ohjelmoida useammallakin eri kielellä jos sikseen tulee.
ps. Tämä on sitten ainut poikkeus kun sanon jotain hyvää basic kielestä ;)
Delphi. Ja saa ilmaiseksi täältä:
http://turboexplorer.com/delphi
Ai miksikö Delphi on C:tä parempi:
no esim.
Delphillä voi tehdä näin:
var
St1, St2 : St3 : String;
begin
St1 := 'moi';
St2 := 'taas!';
St3 := St1 ' ' St2;
ShowMessage(St3);
end;
tai, jos pudotat formille TLabel -komponentin, niin tällöin voi
ShowMessage(St3);
asemesta käyttää:
label1.Caption := St3;
Delphin vahva puoli on siis kehityynyt merkkijonokäsittely, jota C:ssä ei ole.
Kuten joku muu kirjoittaja jo mainitsikin, C.ssä ei juuri "turvarakenteita" tunneta. Ja C:ssä ei pääse juuri alkeita pidem,mälle ilman osoittimia eli pointtereita.
Delphistäkin nuo pointterit toki löytyvät, mutta delphikoodaaja selviää varsin pitkälle kokonaan ilman niitäkin.
C:ssä taas koko merkkijonojen käsittely tukeutuu vahvasti pointtereihin, ja niiden väärä käsittely aikaansaa muistivuotoja, "access violation" ilmoituksia jne. Ja jos jotain nettiin yhteydessä olevaa koodaa, aina on tietoturvauhankin vaara olemassa.
Delphissä taas merkkijonoja voi liittä toisiinsa -operaattorilla )ks. edellä oleva esimerkki) ja merkkijonojen pituutta rajaa vain vapaa muistitila, tai noh, onhan se delphin puoleltakin rajoitettu, mutta raja EI ihan heti tulekaan vastaan:
tavallisen String -tyyppisen merkkijonon maksimipituus on 2147483647 merkkiä, ja unicodea huolivan Widestringin max. pituus sekin on
1073741823 merkkiä.
Lisäksi delphin merkkijonoissa voi olla mukana myös NULL -merkki (joka C:ssä tulkitaan merkkijonon loppumisen merkkinä).
esim. näin:
St4 := 'abc'#0'def;
Ja tuon merkkijonon pituus on todellakin 7 merkkiä, minkä voi osoittaa näin:
ShowMessage(IntToStr(length(St4)));
// em. rivi tulostaa "7"
Ja tuossa siis St4:n neljäs merkki on NULL.
Delphissä muuten St4:n 4. merkkiin voi viitatta näin:
var
Merkki : Char;
begin
merkki := St4[4];
end;
edelläolevat St4:ää käyttävät toki edellyttävät muuttujan St4 määrittelyä, mutta pieniä testiohjelmia tehtäessä voi hyvin käyttää luokkamuuttujaa, lisäämällä TForm1 -tyypin public -sanan jälkeen:
St4 : String;
Turbo Delphin asennus koneelle on parempi sinun hoitaa itse, älä jätä sitä lasten tehtäväksi.