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

Ohjelmointikielet