HyperTalk

HyperTalk on HyperCard-sovelluskehittimen oma ohjelmointikieli. ==Kielen rakenne== HyperTalkin toiminta perustuu objektien ja käyttäjän välillä lähetettäviin viesteihin (message) ja erilaisiin objekteihin, joita ovat painikkeet (button, btn), tekstikentät (field, fld), kortit (card, cd), pohjat (background, bg) ja pinot (stack). On myös muutamia objekteja, joilla ei ole omaa ohjelmakoodia, eivätkä ne voi lähettää tai vastaanottaa viestejä, mutta joita muut objektit voivat hallita; näitä ovat ainakin the message box (viestilaatikko) ja menubar. Viestit voivat olla automaattisesti lähetettävia (esim. idle, jota kutsutaan jatkuvasti objektin ollessa aktiivinen) tai käyttäjän toiminnasta aiheutuva (esim. mouseUp, joka lähetetään objektille sitä klikattaessa). Viestejä voidaan lähettää myös ohjelmasta käsin. Viestit määritetään niiden vastaanottajalle määrätään seuraavasti: on viesti käskyjä end viesti on viesti2 käskyjä end viesti2 on aloittaa viestinkäsittelijän, ja end lopettaa sen. Näiden käskyjen välissä on viestin aikana suoritettava ohjelmakoodi. Viestejä voi olla useita, ja ne kirjoitetaan peräkkäin esimerkin mukaisesti. Objekteille on myös ominaisuuksia, kuten visible (näkyvyys), ja number (järjestysnumero). Ominaisuudet vaihtelevat objekteittain. Suurinta osaa ominaisuuksista voidaan muuttaa ohjelmasta käsin. HyperTalk on hyvin lähellä englannin kieltä. Se sisältää mm. prepositioita (esim. into, to, from, of), joiden käyttö on kuitenkin loppuen lopuksi hyvin loogista: put "Hello" into the message box put-käsky kertoo jonkin arvon (value) sijoittamista johonkin, "Hello" on arvo, into ilmaisee, että seuraavaksi kerrotaan kohde, ja kohde on the message box. Toinen esimerkki: if the value of card field "tekstiä" is "Moi!" then beep end if if aloittaa ehtorakenteen, the value viittaa arvoon, of ilmaisee arvon sisältäjää, joka on card field "tekstiä", eli nykyisessä kortissa sijaitseva kenttä, jonka nimi on "tekstiä". is vastaa useimpien ohjelmointikielien ==-operaattoria (on yhtä suuri kuin). beep antaa äänimerkin ja end if lopettaa ehtorakenteen. ==Objektien hallinta== ===Painikkeet=== Painikkeet (button, btn) ovat objekteja, joita käytetään nimensä mukaisesti yleensä painonappeina. Niitä voidaan käyttää myös painamisen estämiseen (läpinäkyvä painike toisen painikkeen päällä), ohjattavina koristeina ohjelmassa, ja moniin muihinkin tarkoituksiin. Kaikkeen tähän löytyy yleensä parempikin tapa. Painikkeille voidaan määrätä useita vastaanotettavia viestejä, joista yleisin on mouseUp. Sitä käytetään, kun hiiren painike vapautetaan painikkeen päältä. Suurin osa painikkeille lähetettävistä käskyistä onkin juuri hiiren käsittelyyn liittyviä: mouseUp, mouseDown, mouseEnter, mouseLeave jne Painikkeille on useita ominaisuuksia, kuten Automaattinen korostus (korostus painettaessa), sekä niiden ulkonäkö. ===Kentät=== Kentät (field, fld) ovat neliönmuotoisia objekteja, jotka voivat sisältää tekstiä. Niille voidaan määrätä samat vastaanotettavat viestit, kuin painikkeille, ja muutamia muitakin. Kenttien ominaisuuksia ovat mm. Lukittu (voidaanko tekstiä muuttaa käsin), sekä niiden ulkonäkö. ===Kortit=== Korttien välillä voidaan liikkua, niitä voidaan luoda ja poistaa, ja niillä on muutamia ominaisuuksia. Niiden omia viestejä ovat mm. openCard (kortti avataan) ja idle (suoritetaan jatkuvasti). ===Pinot ja pohjat=== Pinoille ja pohjille määrätään pääasiassa avaus, ja sulkemisviestejä, ja niillä on muutamia ominaisuuksia. ===Message box=== Message box (tai the message box, suom. viestilaatikko) on erillinen, ohjattavissa oleva ikkuna, jolla käyttäjä voi suoraan lähettää HyperTalk-käskyjä. Se voidaan piilottaa käskyllä hide message box ja näyttää käskyllä show message box. ===Menubar=== Menubar viittaa valikkoriviin, joka sijaitsee näytön yläreunassa. Se voidaan piilottaa komennolla hide menubar ja näyttää komennolla show menubar. ==Ongelmat HyperTalk-kielessä== Suurin ongelma kielen kanssa on luultavasti sen kielioppi. Esimerkiksi the -sanan merkitys ja käyttötarkoitus on hyvin sekava. Myös prepositioiden kanssa tulee helposti epäselvyyksiä. Tämän takia kieleen on kehitetty lyhenteitä, ja osa prepositioista on mahdollista jättää pois. Esimerkki: go to card "kortti" saa aikaan samaan tuloksen kuin lyhenne go cd "kortti" eli siirtymisen korttiin nimeltä "kortti". ==Lähteet== *HyperCard Perusteet, Apple *HyperCard Käsikirja, Apple *HyperTalk Ohjelmoinnin perusteet, Apple Luokka:Ohjelmointikielet