Tapaus 7
Tapaus 7
Virike 1
Kuten tiedämme, IRC eli irkki on reaaliaikainen keskustelupalvelu, jossa kommunikointi
tapahtuu tekstipohjaisesti. Irkki on jaettu erityisiin kanaviin, joille
lähetetyt viestit näkyvät kaikille kanavalla olijoille. Myös käyttäjien välinen viestintä
on mahdollista.
Koska irkki on tekstipohjainen, siihen on helppo tehdä automaattisia asiakasohjelmia, ns.
botteja. Botteja on lukemattomia erilaisia: ne voivat vartioida
kanavia, tuottaa jonkin palvelun, pyörittää jotakin peliä, olla hauskoja tai ärsyttäviä
tai mitä tahansa.
00:53 <@olut_> !sivsan http://www.suklaatupakka.com
00:53 <@iluBOT> Lucky Strike on parasta tupakkaa
00:53 <@suffeli> suffeli on parasta suklaata
00:53 <@RaunoP> http://www.suklaatupakka.com : ei löytynyt
00:53 <@iluBOT> olut_: WANHA!
00:53 <@suffeli> suffeli on parasta suklaata
00:53 <@iluBOT> Lucky Strike on parasta tupakkaa
00:53 <@suffeli> olutta!!
00:53 <@iluBOT> RaunoP: WANHA!
00:53 <@RaunoP> iluBOT: Jos ystäväsi ei halua puhua ongelmastaan, kerro hänelle
tilanteista, joissa sinullakin on ehkä ollut samantapaisia huolia
00:53 <@olut_> 9 \o/
Virike 2
Turingin testi on tietojenkäsittelytieteen pioneerin Alan Turingin ehdottama
koejärjestely, jolla voitaisiin testata koneen älykkyyttä. Kokeen tuomari keskustelee
samanaikaisesti ihmisen ja koneen kanssa – kumpikin näistä yrittää vaikuttaa
ihmismäiseltä. Jos tuomari ei pysty päättelemään, kumpi keskustelukumppaneista on kone,
sanotaan koneen läpäisseen Turingin testin.
Jotta kokeessa todella testattaisiin vain koneen keskustelukykyä, se tehdään siten,
että tuomari ei näe kumpaakaan keskustelukumppania. Keskustelu käydään pelkän
tekstiyhteyden – esimerkiksi irkin – välityksellä.
(Bonuspisteitä saa, jos saa tuomarin vakuuttuneeksi siitä, että hän on kone.)
Virike 3
Oletetaan, että on käytössä IRC-bottikirjasto, joka piilottaa ohjelmoijalta
IRC-palvelimen kanssa kommunikoinnin ja IRC-protokollan muut yksityiskohdat
– ohjelmoija voi esimerkiksi tehdä metodikutsun this.join("!studio1");,
ja kirjasto hoitaa loput.
Bottikirjastossa käytetään tapahtumapohjaista ohjelmointia. Perusideana on
se, että ohjelmoija toteuttaa omaan bottiluokkaansa metodeita, joita kirjasto kutsuu
tietyn tapahtuman sattuessa. Otetaan esimerkiksi metodi onMessage,
jota kutsutaan aina, kun botti näkee jonkin viestin.
public void onMessage(String sender, String channel, String message) {
if (message.startsWith(this.getName()) {
this.send(channel, sender + ": " + message);
}
}
Yllä kuvattu metodi tarkkailee kanavalle tulevia viestejä, ja jos jokin viesteistä
alkaa botin omalla nimellä, botti toistaa viestin kanavalle. Samantyyppisiä metodeita
on useimmille kuviteltavissa oleville tapahtumille, esimerkiksi:
- Joku käyttäjä (tai botti itse) liittyy kanavalle tai poistuu sieltä
- Kanavan topic vaihdetaan
- Joku poistetaan (kick) kanavalta
- Botille lähetetään yksityisviesti
- Yhteys palvelimelle katkeaa
Tehtäviä
- Keksikää erilaisia toimintoja, joita irkkibotti voisi suorittaa.
- Suunnitelkaa arkkitehtuuri, jonka avulla botin eri toiminnot voitaisiin jakaa
ryhmän kesken siten, että kukin toiminto olisi omassa Java-luokassaan, ja kutakin
luokkaa voisi kehittää muista riippumatta. Myös uusien toimintojen lisäämisen tulisi
olla helppoa.
- Ideoikaa muutama toimintamalli, joita käyttämällä botti voisi yrittää selvittää
Turingin testin. Miten botti voisi osata puhua? Entä miten sen voisi opettaa puhumaan?
TYÖOTSAKE:
OPPIMISTAVOITTEET:
LÄHTEET:
|