HyperTalk

HyperTalk

HyperTalk is a high-level programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer's HyperCard hypermedia program by Bill Atkinson. The main target audience of HyperTalk was beginning programmers, hence HyperTalk programmers were usually called authors, and the process of writing programs was called "scripting". HyperTalk scripts are fairly similar to written English, and use a logic structure similar to the Pascal programming language.

The case-insensitive language was at first interpreted, but since HyperCard 2.x 'virtually compiled'. It supports the basic control structures of procedural languages: repeat for/while/until, if/then/else, as well as function and message "handler" calls (a handler is a subroutine, a message handler is a procedure). Data types are transparent to the user, conversion happens transparently in the background between strings and numbers. There are no classes or data structures in the traditional sense; their place was taken by special string literals, or rather "lists" of "items" delimited by commas (in later versions the "itemDelimiter" property allowed choosing an arbitrary character).

Object-Oriented HyperTalk

HyperTalk was by no means a strictly procedural language. Scripts were associated with objects in HyperCard files (so-called "stacks"), and HyperTalk allowed manipulating these objects in various ways, changing their properties using the "set" command, for example. Objects were addressed using a syntax close to natural language, where objects were specified relative to the current card, or the of operator was used to specify the absolute position of an object: send "mouseUp" to card button "OK" of card "Veracity". Since buttons and fields could also exist on the background layer, but their content would differ between cards, there were card fields, background fields etc. Objects could be addressed by their name, z-ordering number, or by a unique ID number that usually did not change throughout an object's lifetime. To iterate over objects (joinedly referred to as parts in HyperCard 2.2 and later), one simply used their number after querying e.g. the number of card parts.

HyperTalk also provided full-blown script control over the built-in drawing tools, simply by scripting the needed changes in paint tools and simulating mouse movements using the drag from "start" to "end" and the click at "position" commands.

HyperTalk also used messages (i.e. events) sent to objects to handle user interaction. E.g. the mouseDown message was sent to a button when the user clicked it, and mouseUp was sent when the user released the mouse inside it to trigger its action. Similarly, it had the periodic idle message, mouseEnter, mouseLeave, ... and various other messages related to navigation between different cards in a HyperCard stack, as well as user input (keyDown, functionKey, ...), and system events. As far as the scripters were concerned, there were no main event loops like in other procedural programming languages.

Extending HyperTalk

Although the HyperTalk language languished just like HyperCard itself, it received a second lease on life through its plugin protocol, so-called External Commands (XCMDs) and External Functions (XFCNs), which were native code containers attached to stacks (as Macintosh-specific resources) with a single entry point and return value. XCMDs and XFCNs could be called just like regular message and function handlers from HyperTalk scripts, and were also able to send messages back to the HyperCard application. Some enterprising XCMD authors added advanced features like full color support (ColorizeHC, HyperTint, AddColor), multiple special-purpose windows (Prompt, Tabloid, Textoid, Listoid, ShowDialog, MegaWindows), drag and drop support and various hardware interfaces to the language.

Descendants of HyperTalk

Various scripting languages have taken their cues from HyperTalk. They are commonly regrouped in a loosely defined family named xTalk.

* Transcript - The language implemented in the Revolution development environment itself derived from the Unix-originated HyperCard clone MetaCard, that now runs on Classic Mac OS, Mac OS X PPC, Mac OS X Intel, Windows, Linux and Solaris.
* SuperTalk - The language of SuperCard, the first HyperCard clone, by Bill Appleton. Appleton also wrote the popular WorldBuilder adventure construction kit.
* PlusTalk (?) - of Spinnaker Plus (originally by the German Format Verlag), which was used as the basis for OMO.
* MediaTalk - The language of Oracle Media Objects, a descendant of Plus, and the first cross-platform HyperCard clone. Furthermore the only one that was truly modular.
* CompileIt!-Talk - A HyperCard stack and XCMD by [http://www.ittybittycomputers.com Tom Pittman] that allowed compiling native 68000 machine code (e.g. for XCMDs and XFCNs) from HyperTalk code, and calling the native Macintosh toolbox routines. CompileIt was bootstrapped, that is, later versions were compiled using earlier versions of itself.
* Double-XX-Talk (?) - Double-XX was a lightweight HyperCard clone that shipped as an addition to CompileIt! and allowed running XCMDs and XFCNs without HyperCard, and even included a small HyperTalk interpreter.
* The (unnamed) scripting language of Em Software's [http://emsoftware.com/products/xdata Xdata] and [http://emsoftware.com/products/indata InData] , data-publishing plug-ins for QuarkXPress and Adobe InDesign.

* SenseTalk - The language of the NeXT-originated [http://www.thoughtful.com HyperSense] and the VNC-based testing tool [http://www.redstonesoftware.com/usingeggplant.html Eggplant] .

As well as second-level clones like
* Lingo - the programming language of Macromedia Director
* AppleScript - the main scripting language of Apple's Mac OS.

Many method names first popularized by HyperTalk made it into later languages, such as the onmouseUp message in JavaScript. Although Asymetrix ToolBook is often also considered a HyperCard clone, its scripting language apparently bears little resemblance to HyperTalk.

These clones and dialects (commonly referred to under the moniker of xTalk-languages) added various features to the language that are expected from a modern programming language, like exception handling, user-defined object properties, timers, multi-threading and even user-defined objects.

ome sample scripts

on mouseUp put "100,100" into pos repeat with x = 1 to the number of card buttons set the location of card button x to pos add 15 to item 1 of pos end repeat end mouseUp

on mouseDown put "Disk:Folder:MyFile" into filePath -- no need to declare variables if there is a file filePath then open file filePath read from file filePath until return put it into cd fld "some field" close file filePath set the textStyle of character 1 to 10 of card field "some field" to bold end if end mouseDown

function replaceStr pattern,newStr,inStr repeat while pattern is in inStr put offset(pattern,inStr) into pos put newStr into character pos to (pos +the length of pattern)-1 of inStr end repeat return inStr end replaceStr

ee also

* Inform 7 - a programming language with similarly English-like syntax
* [http://pan.uqam.ca/pan/pmwiki.php/HyperCard/HomePage Pantechnicon HyperTalk Wiki pages] - excellent language reference (control structures, events, built-in functions, etc.)


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • HyperTalk — HyperTalk,   Scriptsprache zur Programmierung von Anwendungen des Systems Hypercard. Sie ermöglicht die Manipulation von Hypercard Objekten und die Realisierung einer Kommunikation zwischen diesen Objekten, z. B. zwischen Cards, Stacks,… …   Universal-Lexikon

  • Hypertalk — ▪ computer language       a computer programming language designed in 1985 as “programming for the rest of us” by American computer scientist Bill Atkinson for Apple (Apple Inc.) s Macintosh. Using a simple English like syntax, Hypertalk enabled… …   Universalium

  • HyperTalk — HyperCard HyperCard est un programme et un environnement de programmation simple développé par Apple qui ne fonctionne que sous Mac OS versions 9 et précédentes. Il ressemble un peu à un logiciel de bases de données, car il conserve des… …   Wikipédia en Français

  • HyperTalk — Programmiersprache des HyperCard Systems …   Acronyms

  • HyperTalk — Programmiersprache des HyperCard Systems …   Acronyms von A bis Z

  • HyperCard — Infobox Software name = HyperCard logo = caption = HyperCard Screenshot developer = Apple Inc. (formerly Apple Computer, Inc.) latest release version = 2.4.1 latest release date = 1998 operating system = System Software 6, System 7, Mac OS 8, Mac …   Wikipedia

  • SuperTalk — is the scripting language used in SuperCard. SuperTalk is a descendant of HyperTalk.Extensions to the HyperTalk base languageAdditional syntaxOne of the most powerful features SuperCard adds to the HyperTalk language are user properties . Where… …   Wikipedia

  • HyperCard — Desarrollador Apple Computer n/d Información general Última versión estable 2.4.1 1998 Género …   Wikipedia Español

  • computer programming language — Introduction       any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer specific numerical form known as machine… …   Universalium

  • HyperCard — war eines der ersten kommerziell auf breiter Basis verfügbaren Hypertext Systeme. HyperCard wurde von Bill Atkinson für die Firma Apple entwickelt und erstmals 1987 publiziert. Es wurde dann von 1987 bis 1992 kostenlos zusammen mit Macintosh… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”