Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Ohjelmoinnin aloitus nykyään

Sivun loppuun

Antti Laaksonen [04.06.2009 20:30:41]

#

Tilanne: Noin 10-vuotias lapsi on kiinnostunut tietokoneista ja omien pelien tekemisestä. Mikä olisi nykyään hyvä tapa aloittaa ohjelmointi?

Tässä on grafiikkaa ja musiikkia sisältävä QBasic-ohjelma:

' grafiikkatila
SCREEN 13
' ympyrän piirto
CIRCLE (100, 100), 50
' musiikin soitto
PLAY "cccedddfeeddc"

Mikä nykyinen kieli pystyy samaan? Missä grafiikkaa ja musiikkia saa muutamalla komennolla? Missä saa keskittyä olennaisiin asioihin ohjelmoinnin opettelussa? Mikä ohjelmointiympäristö toimii varmasti eikä siihen tarvitse asentaa lisäkirjastoja?

Nykyään tietokoneet ovat mahtavan tehokkaita ja Internet on täynnä tietoa. Miksi silti ohjelmoinnin aloitus tuntuu paljon vaikeammalta kuin ennen?

Latska [04.06.2009 21:00:40]

#

Joo, oon itekki vähän sitä mieltä, että QBasic on törkeän aliarvostettu kieli. Jos osaa, sillä saa aikaan vaikka mitä ja pohjimmiltaan vain mielikuvitus on rajana. DOS-emulointi onnistuu tehokkaasti nykykoneilla mitään ongelmia ei pitäisi olla. Itse en ole päässyt juuri esimerkkiäsi pidemmälle omissa ohjelmissani, mutta eipä ole ollut tarvetta. Jokainen edetköön omaan tahtiinsa omien tarkoitusperiensä mukaan, mutta jos vanha kieli on käytännöllinen nykyäänkin, sitä ei saa ruveta syrjimään iän tai sen takia, että se sattuu loppumaan -basic.

EDIT: Vaikka vaikeampi kieli karsisikin huomattavasti aloittajia, se ei silti ole syy suosia niitä aloitukseen. Jos joku kokee ohjelmoinnin omaksi jutukseen, miksi sitä ei saisi aloittaa pehmeästi helpolla kielellä?

Lumpio- [04.06.2009 21:17:10]

#

Antti Laaksonen kirjoitti:

Missä saa keskittyä olennaisiin asioihin ohjelmoinnin opettelussa?

Olennaiset asiat ohjelmoinnin opettelussa eivät ole grafiikka ja musiikki. Hauskoja voivat kieltämättä olla.

Antti Laaksonen kirjoitti:

Nykyään tietokoneet ovat mahtavan tehokkaita ja Internet on täynnä tietoa. Miksi silti ohjelmoinnin aloitus tuntuu paljon vaikeammalta kuin ennen?

Ehkä siksi, että tietokoneiden tehokkuus on pilannut nykynuoret eivätkä ympyrä ja Ukko Nooa PC-piipperistä enää sytytä. Pitäisi päästä heti tekemään joku Doom 5.

groovyb [04.06.2009 21:17:19]

#

no onhan noita lapsille suunnattuja educational programming härpäkkeitä.

kuten Alice

K_L [04.06.2009 21:21:29]

#

Ensimmäinen "tietokoneeni" oli Saloran Fellow. Laitteessa ei ollut kasettipesää mukana, joten pelejä sillä ei paljolti pelattu. Vaihtoehdot olivat siis vähissä. Se oli kirjoitettava itse Basicilla, tai sitten koneella ei tehnyt mitään.

Nykyään sinun pitää osata valita laajasta valikoimasta kieliä. Voisin kuvitella, että siinä helposti turhautuu. On helppo sanoa, että googleta tiedot. Googleenkin voi eksyä tunneiksi löytämättä yhtään mitään. Myös media oli paljon suppeampi. Mikrobitistä oli helppo poimia koodivinkkejä, ja samalla kehittää kokemustaan alasta. Nykyään Mikrobitti on täynnä televisio ja kännykkä arvioita. Nykyisillä laitteilla tuntuu siltä, että kaikki hieno ja kokeilemisen arvoinen on jo tehty.

Basic on edelleen hyvä (ellei paras) tapa alkaa ohjelmoida. Mutta jos odotukset on Hello Worldistä 3D räiskintään, niin koko oppiminen kuihtuu ennen alkuun pääsyään. Pitää löytää se hienous juu siitä, että oppii uuden tempun.

Latska [04.06.2009 21:30:32]

#

Ensimmäinen oma ohjelmani oli yksinkertainen pätkä, joka tulosti tiettyä tekstiriviä loputtomasti pötköön, kunnes painettiin enteriä tai esciä. Voi sitä onnistumisen riemua kun tajusin, että hei, tämähän toimii. Ja kirjoitin tämän täysin lunttaamatta tutoriaaleista. Tuollaisia elämyksiä nuorien ohjelmoijien pitäisi minusta ajaa takaa. Avun kysymisessä ei ole mitään väärää, kunhan sen tekee vastaajia kunnioittaen. (olisi sopinut useampaankin threadiin..)

os [04.06.2009 21:48:56]

#

Tällaiseen tulokseen pääsin pygame:n avulla

# coding=latin1
# ilman edellistä riviä ääkköskommentit eivät menneet läpi :(

# pygame käyttöön
import pygame

# alustetaan ääni
pygame.mixer.init()

# alustetaan kuva
screen = pygame.display.set_mode((640, 480))

# piirretään näytölle ympyrä; punainen, kp. (100,200), säde 50, viivan leveys 2
pygame.draw.circle(screen, (255, 0, 0), (100, 200), 50, 2)

# päivitetään näyttö
pygame.display.flip()

# toistetaan ääni (tiedosto 'aani.wav')
sound = pygame.mixer.Sound('aani.wav')
sound.play()

# odotetaan napinpainallusta
while (pygame.event.wait().type != pygame.KEYDOWN): pass

Ei ihan yhtä simppeli kuin QBasic, mutta ei kaukana (?) (EDIT: myönnetään, komentojen "nimet" ovat kyllä aika monimutkaisia). Omasta mielestäni muutamat mystiset "copypasteta joka ohjelmaan" -rivit eivät ole ohjelmointia aloitellessa kynnyskysymys ja tässäkin niitä on aika vähän. Python on muutenkin (nykyään) hyvä kieli aloittaa ohjelmointi: se on helppo ja (helpohkosti toteutettavissa) sovelluksissa on vain mielikuvitus rajana - mitenköhän mahtaa QBasicilla taipua esimerkiksi Internet-ohjelmointi?

EDIT: Ohjelmointiympäristön asennuken vaikeus on myös hieman suhteellinen käsite. Esimerkiksi omalla koneellani Python-pygame-paketti asentui kahdella komennolla (tai oikeasti Python oli tietty jo valmiina) näin

sudo apt-get install python
sudo apt-get install pygame

ja tämän jälkeen kaikki vain toimii. Ehkä Windowsilla enemmän klikkailua, mutta vaikeaa ei sielläkään liene (?), ja ainahan noita vähän joutuu säätämään. Itseäni ei myöskään hirveästi haittaa, että homman helppoudesta kunnian saava pygame on selvästi luonteeltaan lisäkirjasto. Tämäkään ei varmaan loppujen lopuksi ole kynnyskysymys.

Triton [04.06.2009 21:55:30]

#

Omalta osaltani kiinnostus ohjelmointia kohtaan heräsi jo varsin nuorena, mutta en vain saanut mitään aikaseksi ja isältäkin tuli lähinnä sellaista kommenttia, että odota pari vuotta niin kyllä se siitä. Noh php taisi olla kielenä ensimmäinen millä tosiaan ymmärsin asiat ja siitä olikin hyötyä, kun kahdeksannella luokalla järjestettiin ohjelmointikurssi kielenä Borlandin Turbo Pascal... Silloin vasta sisäistin asiat, kun joku oli opettamassa ja toisaalta niistä php:n kanssa opituista asioista oli hyötyä. On kyllä päässyt Turbo Pascalin käyttö vähenemään ja sen jälkeen php:n kanssa on tullut tehtyä kaikenlaista. Tässä huomasin sellaisen ilmiön, että php:n avulla opin Turbo Pascalia ja taas Turbo Pascalilla php:tä enkä todellakaan voisi kuvitalla, että olisin vielä 10-11-vuotiaan kyennyt sisäistämään kaikkia näitä asioita. Todennäköisesti juuri se C++ tuputtaminen joka suunnasta ja Basicin haukkuminen haittasi sen oikean kielen löytämistä. Sen lisäksi netissä tutoriaalit on aika pitkälti englanniksi ja taas kirjastosta löytyvät 80-90-luvun aikana kirjoitetut ohjelmointikirjat olivat aivan vääri tapa opetalla ohjelmointia. Kaikissa niissä sanotaan alussa, ettei tarvitse olla aikaisempaa kokemusta, mutta silti niissä käytetään termistöä, jonka omaksuminen nuorempana tuntui todella vaikealta. Näin jälkeenpäin on kiva katsoa sitä, että kuinka paljon niin lyhyessä ajassa on kehittynyt ja sitä onnistumisen tunnetta saa tuntea edelleen. En sitten tiedä olenko tai olenko ollut erilainen lapsi/nuori, kun minua ei ole koskaan sen enempää 2- tai 3D -pelitkään kiinnostanut; ei niiden pelaaminen tai tekeminen. Toisaalta se helpottaa oppimista siltä kantilta, ettei heti luovuta kun sitä Doomin parodiaa ei saanutkaan aikaseksi... .

Andu [04.06.2009 22:32:08]

#

Antti Laaksonen kirjoitti:

Mikä nykyinen kieli pystyy samaan? Missä grafiikkaa ja musiikkia saa muutamalla komennolla? Missä saa keskittyä olennaisiin asioihin ohjelmoinnin opettelussa? Mikä ohjelmointiympäristö toimii varmasti eikä siihen tarvitse asentaa lisäkirjastoja?

Kaikkiin kysymyksiin käy vastaukseksi CoolBasic. Lisäksi kaikki funktiot ja muut on selostettu suomeksi, esimerkkien kera. Tosin musiikkia ei ilmeisesti ihan noin helposti voi tehdä.

Tässä vielä esimerkki:

' tulostaa tekstiä ruudulle
Text 0,0,"Hello World!"
' piirtää ympyrän
Circle 50, 50, 10
' päivittää näytön
DrawScreen
' odottaa, että jotain painetaan
WaitKey

Jalmari91 [04.06.2009 23:28:41]

#

Itse tyrkyttäisin 10-vuotiaalle Javaa, koska se on melko helppo ja siitä on helppo siirtyä moniin C-sukuisiin kieliin, kuten C++:aan.

Blaze [04.06.2009 23:47:53]

#

Jalmari91 kirjoitti:

Itse tyrkyttäisin 10-vuotiaalle Javaa

Sille on myös jotain erityisesti opiskeluun sopivia ohjelmointiympäristöjä, joissa on valmiina helppokäyttösiä luokkia grafiikkaan ym. (http://en.wikipedia.org/wiki/Greenfoot) Disclaimer: en oo kokeillu ite

zokier [05.06.2009 00:13:52]

#

Jalmari91 kirjoitti:

Itse tyrkyttäisin 10-vuotiaalle Javaa, koska se on melko helppo ja siitä on helppo siirtyä moniin C-sukuisiin kieliin, kuten C++:aan.

javalla on ehkä aikansa ja paikkansa, mutta kaikessa enterpriceydessään en kyllä sitä lapselle ensimmäiseksi kieleksi tunkisi. Sanot sitä melko helpoksi; heitäppä tuommoinen esimerkki joka vastaa laajudeltaan esitettyjä esimerkkejä.

Python on tosiaan ihan kiva, mutta vaikka pygame helpottaakin kummasti niin siinä ei ole semmoista kivaa integroitunutta ympäristöä jossa voisi koodailla enemmän tai vähemmän interaktiivisesti. Ja samalla ko "ide" voisi piilottaa nuo "turhat" boilerplatet piiloon jotta yksinkertaisuus lähenisi op:n qbasic-esimerkkiä. Yksi asia mikä tuossa pythonissa on ikävä on se että sen hienon itsetehdyn sovelluksen jakaminen kavereille on turhan vaikeaa, ainakin viimeksi kun sellaista harrastin. Varsinkin kun käyttää jotain 3rd party kirjastoja.

Kyllähän tuollainen yksinkertainen ohjelmointi(oppimis)ympäristö vaikuttaisi puuttuvan nykypäivänä, tosin en noihin moderneihin basiceihin tutustunut. Yksi mikä löytyi kun tutkin asiaa oli Microsoftin Small Basic, mutta en usko että se selviää labrasta ulos. Pitäisiköhän putkan alkaa kehittämään jotain omaa ympäristöä :)

kayttaja-2791 [05.06.2009 00:21:56]

#

os:n kanssa samoilla linjoilla. Vaikka tuskin mainituissa basiceissakaan sinänsä vikaa on, mutta en tiedä onko niiden yksinkertaisemman syntaksin etu vain näennäinen.

jlaire [05.06.2009 00:52:52]

#

zokier kirjoitti:

Kyllähän tuollainen yksinkertainen ohjelmointi(oppimis)ympäristö vaikuttaisi puuttuvan nykypäivänä

Mitä olen sivusta muutamaa tällaista keskustelua seurannut, niin Logo ja Squeak on mainittu aika monta kertaa. Kumpikaan ei tosin ole mikään Basic.

temu92 [05.06.2009 02:25:58]

#

Itse tosiaan aloitin 9v QuickBasicilla. Tosin omassa opaskirjasessani ei ollut mitään kerrottu grafiikoiden teosta eikä silloin ollut nettiäkään meillä :/ Kuitenkin coolbasic on helppo, ainakin kun siinä on tämä suomenkielinen manuaali joka helpottaa oppimista.

E.K.Virtanen [05.06.2009 07:36:38]

#

Andu kirjoitti:

Kaikkiin kysymyksiin käy vastaukseksi CoolBasic. Lisäksi kaikki funktiot ja muut on selostettu suomeksi, esimerkkien kera. Tosin musiikkia ei ilmeisesti ihan noin helposti voi tehdä.

Jos alla on windows, niin sitten peesaan Andua tässä kohtaa. Varsinkin ohjeistukset CB:ssa ovat mitä mainioimmat juurikin aloittelevalle koodarille.

map_ [05.06.2009 08:35:50]

#

Antti Laaksonen kirjoitti:

' grafiikkatila
SCREEN 13
' ympyrän piirto
CIRCLE (100, 100), 50
' musiikin soitto
PLAY "cccedddfeeddc"

Mikä nykyinen kieli pystyy samaan? --

Varmasti melkein mikä tahansa nykyinen skriptikieli pystyisi samaan, mutta jostain syystä niille ei näytä olevan valmiina noin yksinkertaisia kirjastoja.

Gwaur [05.06.2009 11:51:00]

#

Antti Laaksonen kirjoitti:

Nykyään tietokoneet ovat mahtavan tehokkaita ja Internet on täynnä tietoa. Miksi silti ohjelmoinnin aloitus tuntuu paljon vaikeammalta kuin ennen?

Tyypillinen koodaripoitsu haluaa Hello, World! -ohjelman jälkeen heti tehdä oman halflifensä, mutta sellainen vaatii ihan oikeasti paljon enemmän kuin valmiin grafiikka- ja äänifunktion. :P

tgunner [05.06.2009 12:24:11]

#

En tunne nappulaa, mutta jos hänellä on jokin kiinnostus tietokonemaailman ulkopuolella (lautapelit, futis; mitä jannut nykyään harrastelevatkaan), niin voisit (omasta ajastasi riippuen) opastaa kaveria ohjelmoimaan ensin perusteet helpohkolla kielellä, joka ihan hyvin voisi olla QB, ja sitten aloittaa vähän pidemmän projektin, joka käsittelee hänen kiinnostuksiaan.

Esim. tunnen erään 12-vuotiaan, joka pelaa aktiivisesti Go-lautapeliä ja innostui tavattomasti kaverini opastettua hänelle Go-kaksinpelin ohjelmoinnin. Pikkukaveri ei tiennyt pahemmin kielestä, mutta ymmärsi ohjelman kulun, koska Go tulee häneltä selkäytimestä.

Jalmari91 [05.06.2009 13:36:33]

#

zokier kirjoitti:

Sanot sitä melko helpoksi; heitäppä tuommoinen esimerkki joka vastaa laajudeltaan esitettyjä esimerkkejä.

import java.applet.*;
import java.awt.Graphics;

public class Main extends Applet {
	public void init() {
		setSize(640,480);
		play(getCodeBase(),"Musa.wav");
	}

	public void paint(Graphics g) {
		g.drawOval(100, 100, 50, 50);
	}
}

Tommittaja [05.06.2009 14:29:41]

#

Jalmari91 kirjoitti:

(koodia)

:o voiko noin muka tehdä??? Omg :D

Jalmari91 [05.06.2009 14:54:39]

#

Tommittaja kirjoitti:

:o voiko noin muka tehdä??? Omg :D

Miten? Kyllä tuo mulla ainakin toimii miten pitääkin.

jalski [05.06.2009 14:55:39]

#

Aloittavalle hyvä BASIC-vaihtoehto Windows-alustalle: http://www.bbcbasic.co.uk/bbcwin/bbcwin.html

PortablE ja AmigaOS, simppeli esimerkki aloittavalle:

MODULE 'intuition', 'graphics'

ENUM ERR_NONE, ERR_WIN
RAISE ERR_WIN IF OpenW()=NIL


DEF win:PTR TO window

PROC main()
 win:=OpenW(0,0,640,480, IDCMP_CLOSEWINDOW,WFLG_CLOSEGADGET OR WFLG_ACTIVATE OR WFLG_DRAGBAR,'Testi',NIL,1,NIL)
 Box(10,100,500,380,2)
 Line(160,380,460,320,3)
 Line(100,50,220,400,3)
 WaitIMessage(win)
 CloseW(win)
FINALLY
  SELECT exception
  	CASE ERR_WIN;  Print('Error: OpenW() failed\n')
  ENDSELECT
ENDPROC

C:tä, Pythonia tai Pascalia taitavalle voisin suositella tutustumista Infernoon ja Limboon: http://www.vitanuova.com/inferno/index.html

Inferno tarjoaa tiedosto-liittymän resursseihin, esim. tcp/ip-pino on käytettävissä normaaleilla luku -ja kirjoitusoperaatioilla, eikä socketeista tarvitse tietää mitään.

esim. simppeli serveri: http://www.tip9ug.jp/who/jalih/server3.b
esim. simppeli clientti: http://www.tip9ug.jp/who/jalih/client.b

Ja tältä se näyttää "äksönissä" ajettaessa Infernoa Plan9-käyttöjärjestelmän päällä: http://www.tip9ug.jp/who/jalih/capture.png

tesmu [05.06.2009 15:06:06]

#

Ehdottomasti brainfuck tai headache... No ei trollit sikseen

Kyllä olen sitä mieltä, että coolbasic saattaisi olla se jolla "lapsetkin" saattaisivat jaksaa ja opetella tehdä, jonka jälkeen voisi siirtyä esim muihin basiceihin...

neau33 [05.06.2009 15:31:46]

#

Hi kids!

Here's something really cool for you all...

Antti Laaksonen [05.06.2009 18:37:13]

#

Yhdistelmä Python ja Pygame voisi tosiaan olla hyvä nykyajan vaihtoehto. Enää puuttuu suomenkielinen lapsille soveltuva oppimateriaali, mutta voisin koettaa kirjoittaa sellaisen kesän aikana.

ankzilla [06.06.2009 13:07:46]

#

PHP tarjoaa myös mukavasti onnistumisen iloja 8)

Päärynämies [09.06.2009 00:47:49]

#

Ehkä hieman aiheeseen liittyen tuli vastaan Jyväskylän yliopiston tarjoama peliohjelmointikurssi nuorille. https://www.jyu.fi/it/laitokset/mit/opiskelu/nuortenkurssi Tuo toki 13-16 vuotiaille tarkoitettu, mutta kai lapsiksi heidätkin voi laskea. Ehkä tilanne jo hieman eri tosin kuin 10-vuotiailla, jollaista ketjun aloittaja käytti esimerkkinä.

Sivuilta lainattua:

lainaus:

Ohjelmointityökaluna on Microsoft Visual Studio 2008, jossa on käytössä XNA Game Studio 3.0 ja helppokäyttöinen peliohjelmointikirjasto. Ohjelmointikielenä on C#.

Itselläni ei noista kokemusta ole, mutta ilmeisesti lienevät ihan käypiä tuohon tarkoitukseen. Tuo peliohjelmointikirjasto varmasti helpottaa asiaa, jos on jokin vartavasten tuolle kurssille tehty.

Antti Laaksonen [09.06.2009 09:50:49]

#

Erinomainen idea Jyväskylän yliopistolta! Ilmoittautumisaika päättyy jo huomenna, joten nyt nopeasti ilmoittautumaan!


Sivun alkuun

Vastaus

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

Tietoa sivustosta