HyperTalk
HyperTalk limbaj de programare | |
---|---|
Autor | Dan Winkler |
Data de origine | 1987 |
Paradigme | Procedural |
Influențată de | limbaj natural și Pascal |
A influențat | Livecode , ECMAScript |
Implementare referință | |
Sistem de operare | Mac OS |
Această intrare sau secțiune despre subiectele de operare nu menționează sursele necesare sau cei prezenți sunt insuficienți . |
HyperTalk este un limbaj de programare creat în 1987 de Dan Winkler și utilizat în software-ul hipermedia HyperCard al lui Bill Atkinson .
Limbajul se adresează în primul rând începătorilor: programatorii HyperTalk erau numiți „autori” și procesul de scriere a programelor de scriptare . Scripturile HyperTalk sunt foarte asemănătoare cu limba engleză și utilizează o structură asemănătoare Pascalului .
Limbajul insensibil la majuscule și minuscule a fost interpretat inițial, dar a devenit „practic compilat”: fiecare script este compilat la prima rulare, după care codul rămâne disponibil.
Structurile de bază de control al debitului sunt furnizate: repetați pentru / în timp ce / până, dacă..Atunci..altfel ; este, de asemenea, posibil să definiți funcții și subrutine, numite aici handler , prin trecerea parametrilor. Tipurile de date sunt gestionate direct de limbă: fiecare dată este întotdeauna convertită într-un șir înainte de stocare: în momentul utilizării, HyperTalk transformă datele în tipul cerut de context; totul se întâmplă în fundal în timpul rulării. Nu există clase sau structuri în sens tradițional; locul lor este luat de șiruri speciale sau liste de articole , separate de un caracter (definibil, în cele mai recente versiuni). Aceste liste iau, de asemenea, locul vectorilor, care nu sunt susținuți direct.
Orientarea obiectului
Fiecare script este asociat cu un obiect HyperCard și salvat împreună cu obiectul în fișiere (numite stive ); HyperTalk vă permite să manipulați aceste obiecte și să le modificați proprietățile (comanda set ). Fiecare obiect este identificat folosind un limbaj foarte asemănător cu cel natural și indicând ierarhia în care este situat:
obțineți numele butonului cardului 5 pune „acesta este un test” în câmpul de cărți „câmpul meu” trimiteți „mouseUp” la butonul „OK” al cardului
Aceste obiecte (indicate prin nume, cu numărul comenzii sau cu un ID unic) pot aparține unei singure cărți sau a fundalului , din care pot fi vizibile pe fiecare carte, păstrând în același timp valori diferite.
HyperTalk oferă, de asemenea, control deplin al instrumentelor grafice, alegând instrumentul de utilizat și simulând mișcarea mouse-ului folosind comanda de tragere :
puneți „10,10” la început puneți „100.100” în capăt trageți de la început la sfârșit
HyperCard folosește mesaje (adică evenimente) pentru a gestiona diferite interacțiuni; de exemplu, mesajul mouseDown este trimis când utilizatorul apasă butonul mouseUp mouseUp când îl eliberează; ținta evenimentului este obiectul în care s-a produs evenimentul, care îl poate trece mai sus în ierarhie, după ce l-a procesat sau nu. În momentele de inactivitate, mesajul inactiv este generat și în timpul mișcării mouse-ului, mesajele mouseEnter și mouseLeave sunt trimise diferitelor obiecte. Apăsarea unei taste generează și un eveniment keyDown care conține codul tastei. Autorul unei stive nu trebuie să-și facă griji cu privire la generarea unei bucle de evenimente , deoarece acest lucru se întâmplă deja în cadrul HyperTalk.
Extensii HyperTalk
Limbajul, suficient de complet pentru utilizarea normală, ar putea fi extins printr-un protocol de tip plug-in : acestea sunt comenzi externe (XCMD) și funcții externe (XFCN). Practic era un cod nativ atașat la stive (încorporat în resurse , tip de fișier specific Mac OS ) cu un punct de intrare și o valoare returnată. Aceste extensii sunt apelate din scripturi ca orice altă funcție (handler) și pot genera mesaje. Unele XCMD-uri avansate au adăugat funcții avansate, cum ar fi suport pentru culori (ColorizeHC, HyperTint, AddColor), ferestre speciale (ShowDialog, MegaWindows, Listoid, Textoid, Tabloid, Prompt), suport pentru drag & drop sau multe interfețe hardware (Midi, serial etc.) .)
Descendenții HyperTalk
Multe limbi s-au născut în urma HyperTalk. De exemplu:
- SuperTalk - limba SuperCard ( http://www.supercard.us ) de Bill Appleton , prima clonă HyperCard
- PlusTalk - de Spinnaker Plus
- MediaTalk - limbajul Oracle Media Objects, prima clonă HyperCard multi-platformă și singura care este cu adevărat modulară
- CompileIt! -Talk - O stivă Tony Pittman HyperCard care compilează cod 68000, cu apeluri la rutinele Toolbox
- Double-XX-Talk - o clonă simplă HyperCard furnizată în plus față de CompileIt!: Permite testarea XCMD și XFCN fără HyperCard și un mic interpret HyperTalk
- Transcript (MetaTalk) - Limbajul clonării HyperCard din lumea Unix Revolution ( http://www.runreev.com [ link rupt ] ), cunoscut anterior ca MetaCard ( http://www.metacard.com )
- SenseTalk - limba HyperSense ( http://www.thoughtful.com ), a apărut pe NeXT și sistemul de testare Eggplant ( https://web.archive.org/web/20040401125733/http://www.redstonesoftware.com / usingeggplant. html )
Alte exemple de scripturi, pe care le putem considera clone de al doilea nivel:
- Lingo - limba directorului Macromedia
- Applescript - limbajul de script integrat în Mac OS
- SerfTalk - o clonă HyperTalk care a acceptat multe caracteristici moderne, dar a dispărut în timpul testului beta
Unii dintre termenii folosiți în HyperCard au devenit populari în alte limbi (de exemplu, mesaje JavaScript „onmouseup”).
Aceste clone și dialecte (denumite de obicei limbi xTalk ) au adăugat multe caracteristici indispensabile pentru un limbaj modern, cum ar fi gestionarea excepțiilor, proprietăți definite de programator, temporizatoare, multi-threading și chiar obiecte noi.
Câteva exemple HyperTalk
Un script de buton de fundal care aliniază toate butoanele unei file fiecare la 15 pixeli de cealaltă:
pe mouseUp puneți „100.100” în poziție repetați cu x = 1 până la numărul de butoane de card setați locația butonului cardului x în poziție adăugați 15 la articolul 1 din poziție sfârșit repetă end mouseUp
Acest script transferă conținutul unui fișier (până la caracterul <return>) în câmpul numit "câmpul meu":
pe mouseDown pune "myDisk: myFolder: myFile" în filePath dacă există un fișier filePath deschideți fișierul filePath citiți din fișierul filePath până la întoarcere pune-l în câmpul de cărți „câmpul meu” închideți fișierul filePath setați textul Stilul caracterului 1 la 10 al câmpului cardului "mioCampo" la bold incheie daca end mouseDown
Aceasta este o funcție care caută toate aparițiile modelului din șirul inStr și înlocuiește șirul newStr în locul său:
funcția replaceStr pattern, newStr, inStr repetați în timp ce modelul este în inStr pune offset (model, inStr) în p pune newStr în caracterul p la (p + lungimea modelului) -1 din inStr sfârșit repetă reveni inStr end replaceStr
linkuri externe
- (EN) HyperTalk on Encyclopedia Britannica , Encyclopædia Britannica, Inc.
Controlul autorității | LCCN ( EN ) sh88000439 |
---|