HyperTalk: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
D'ohBot (discussione | contributi)
m Bot: Aggiungo: fi:HyperTalk
Xqbot (discussione | contributi)
m Bot: Tolgo: pt:HyperTalk; modifiche estetiche
Riga 5:
Sono previste le strutture di base per il controllo del flusso: ''repeat for/while/until, if..then..else''; è inoltre possibile definire funzioni e subroutine, qui chiamate ''handler'', con passaggio di parametri. I tipi di dati vengono gestiti direttamente dal linguaggio: ogni dato viene sempre convertito in ''stringa'' prima della memorizzazione: al momento dell'uso, HyperTalk trasforma il dato nel tipo richiesto dal contesto; il tutto avviene in background al runtime. Non ci sono ''classi'' o ''strutture'' nel senso tradizionale; il loro posto è preso da ''stringhe'' speciali o liste di ''item'', separate da un carattere (definibile, nelle ultime versioni). Queste liste prendono anche il posto dei vettori, non supportati direttamente.
 
== Orientamento agli oggetti ==
Ogni script è associato ad un oggetto di [[HyperCard]] e salvato assieme all'oggetto nei file (chiamati ''stack''); HyperTalk permette di manipolare tali oggetti e cambiare le loro proprietà (comando ''set''). Ogni oggetto viene identificato usando un linguaggio molto simile a quello naturale e indicando la gerarchia in cui si trova:
 
Riga 22:
HyperCard usa i ''messaggi'' (cioè gli eventi) per gestire le varie interazioni; per esempio, il messaggio ''mouseDown'' è spedito quando l'utente preme il pulsante del mouse ''mouseUp'' quando lo rilascia; il bersaglio dell'evento è l'oggetto in cui è avvenuto l'evento, che eventualmente può passarlo più in alto nella gerarchia, dopo averlo o meno processato. Durante i momenti di inattività viene generato il messaggio ''idle'' e durante il movimento del mouse vengono spediti ai vari oggetti messaggi ''mouseEnter'' e ''mouseLeave''. Anche la pressione di un tasto genera un evento ''keyDown'' che contiene il codice del tasto. L'autore di uno stack non deve preoccuparsi di generare un ''event loop'', in quanto questo avviene già all'interno di HyperTalk.
 
== Estensioni di HyperTalk ==
Il linguaggio, sufficientemente completo per un uso normale, poteva essere espanso tramite un protocollo tipo ''plug-in'': si tratta dei ''comandi esterni'' (XCMD) e delle ''funzioni esterne'' (XFCN). Si trattava in pratica di codice nativo allegato agli stack (inserito nelle ''risorse'', tipo di file specifico del [[Mac OS]]) con un punto di ingresso ed un valore di ritorno. Queste estensioni sono richiamate dall'interno degli script come una qualunque funzione (handler) e possono generare messaggi. Alcuni XCMD avanzati aggiunsero caratteristiche avanzate, come il pieno supporto del colore (ColorizeHC, HyperTint, AddColor), finestre speciali (ShowDialog, MegaWindows, Listoid, Textoid, Tabloid, Prompt), supporto del drag & drop o molte interfacce hardware (Midi, seriali, ecc...)
 
== Discendenti di HyperTalk ==
Molti linguaggi sono nati sulla scia di HyperTalk. Ad esempio:
 
Riga 46:
Questi cloni e dialetti (normalmente chiamati ''linguaggi xTalk'') hanno aggiunto molte caratteristiche indispensabili per un linguaggio moderno, come la gestione delle eccezioni, proprietà definite dal programmatore, timer, multi-threading ed anche nuovi oggetti.
 
== Alcuni esempi di HyperTalk ==
 
Script di un pulsante di background che allinea tutti i pulsanti di una scheda ciascuno a 15 pixel dall'altro:
Riga 96:
[[ja:HyperTalk]]
[[ms:HyperTalk]]
[[pt:HyperTalk]]