All Topics  
HyperTalk

 

   Email Print
   Bookmark   Link






 

HyperTalk



 
 
HyperTalk is a high-level, procedural
Procedural programming

Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm based upon the concept of the procedure call....
 programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 created in 1987 by Dan Winkler and used in conjunction with Apple Computer
Apple Computer

Apple Inc., formerly Apple Computer Inc., is an United States multinational corporation which designs and manufactures consumer electronics and software products....
's HyperCard
HyperCard

HyperCard was an application program created by Bill Atkinson for Apple Inc. that was among the first successful hypermedia systems before the World Wide Web....
 hypermedia program by Bill Atkinson
Bill Atkinson

Bill Atkinson is an American computer engineer and photographer. Atkinson worked at Apple Computer from 1978 to 1990. He received his undergraduate degree from the University of California, San Diego, where Apple Macintosh developer Jef Raskin was one of his professors....
. 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
Scripting language

A scripting language, script language or extension language, is a programming language that allows some control of a single or many Application software....
". HyperTalk scripts are fairly similar to written English
English language

English is a West Germanic language that originated in Anglo-Saxon England and has lingua franca status in many parts of the world as a result of the military, economic, scientific, political and cultural influence of the British Empire in the 18th, 19th and early 20th centuries and that of the United States from the mid 20th century onwa...
, and use a logic structure similar to the Pascal programming language.

The case-insensitive language was at first interpreted, but since HyperCard 2.x is 'virtually compiled
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
'.






Discussion
Ask a question about 'HyperTalk'
Start a new discussion about 'HyperTalk'
Answer questions from other users
Full Discussion Forum



Encyclopedia


HyperTalk is a high-level, procedural
Procedural programming

Procedural programming can sometimes be used as a synonym for imperative programming , but can also refer to a programming paradigm based upon the concept of the procedure call....
 programming language
Programming language

A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
 created in 1987 by Dan Winkler and used in conjunction with Apple Computer
Apple Computer

Apple Inc., formerly Apple Computer Inc., is an United States multinational corporation which designs and manufactures consumer electronics and software products....
's HyperCard
HyperCard

HyperCard was an application program created by Bill Atkinson for Apple Inc. that was among the first successful hypermedia systems before the World Wide Web....
 hypermedia program by Bill Atkinson
Bill Atkinson

Bill Atkinson is an American computer engineer and photographer. Atkinson worked at Apple Computer from 1978 to 1990. He received his undergraduate degree from the University of California, San Diego, where Apple Macintosh developer Jef Raskin was one of his professors....
. 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
Scripting language

A scripting language, script language or extension language, is a programming language that allows some control of a single or many Application software....
". HyperTalk scripts are fairly similar to written English
English language

English is a West Germanic language that originated in Anglo-Saxon England and has lingua franca status in many parts of the world as a result of the military, economic, scientific, political and cultural influence of the British Empire in the 18th, 19th and early 20th centuries and that of the United States from the mid 20th century onwa...
, and use a logic structure similar to the Pascal programming language.

The case-insensitive language was at first interpreted, but since HyperCard 2.x is 'virtually compiled
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
'. 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
String (computer science)

In computer programming and some branches of mathematics, a string is an ordered sequence of symbols. These symbols are chosen from a predetermined set or alphabet....
 and numbers. There are no class
Class (computer science)

In object-oriented programming, a class is a programming language construct that is used as a blueprint to create Object s. This blueprint includes Attribute s and Method s that the created objects all share....
es or data structure
Data structure

A data structure in computer science is a way of storing data in a computer so that it can be used efficiently. It is an organization of mathematical and logical concepts of data....
s in the traditional sense; their place was taken by special string literal
String literal

A string literal is the representation of a String value within the source code of a computer program. There are numerous alternate notations for specifying string literals, and the exact notation depends on the individual programming language in question....
s, or rather "lists" of "items" delimited by commas (in later versions the "itemDelimiter" property allowed choosing an arbitrary character).

Object-Oriented HyperTalk


HyperTalk was not strictly procedural language. Scripts were associated with objects in HyperCard
HyperCard

HyperCard was an application program created by Bill Atkinson for Apple Inc. that was among the first successful hypermedia systems before the World Wide Web....
 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-order
Z-order

Z-order is an ordering of overlapping two-dimensional objects, such as Window in a graphical user interface or shapes in a vector graphics editor....
ing 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
Resource fork

The resource fork is a construct of the Mac OS operating system used to store structured data in a file, alongside unstructured data stored within the data fork....
) 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
XTalk

xTalk is a loosely defined family of scripting languages. The father of all xTalk languages is HyperTalk, the language used by Apple's HyperCard environment....
.

  • Transcript - The language implemented in the Revolution development environment itself derived from the Unix-originated HyperCard clone MetaCard
    MetaCard

    MetaCard is a cross-platform, commercial GUI toolkit. MetaCard includes an Integrated development environment and has its own language, MetaTalk....
    , that now runs on Classic Mac OS, Mac OS X PPC, Mac OS X Intel, Windows, Linux and Solaris.
  • SuperTalk
    SuperTalk

    SuperTalk is the scripting language used in SuperCard. SuperTalk is a descendant of HyperTalk....
     - The language of SuperCard
    SuperCard

    SuperCard is a high-level development environment that runs on Apple Macintosh computers, under Mac OS 8 and Mac OS 9, and Mac OS X. It is inspired by HyperCard, but includes a richer language, a full Graphical user interface toolkit, and native color....
    , 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
    Oracle Media Objects

    Oracle Media Objects, formerly Oracle Card, was a multi-media software development tool for developing multi-media applications, with similar functionality and appearance to Apple Computer' HyperCard....
    , 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 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
    Bootstrapping (compilers)

    Bootstrapping is a term used in computer science to describe the techniques involved in writing a compiler in the target programming language which it is intended to compile....
    , 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 and , data-publishing plug-ins for QuarkXPress and Adobe InDesign.


  • SenseTalk
    SenseTalk

    SenseTalk is possibly the most English-like scripting language available in the world today. Derived from the HyperTalk language used in HyperCard, SenseTalk was originally developed as the scripting language within the HyperSense multimedia authoring application on the NeXTStep and OpenStep platforms....
     - The language of the NeXT-originated and the VNC-based testing tool .


As well as second-level clones like
  • Lingo - the programming language of Macromedia Director
  • AppleScript
    AppleScript

    AppleScript is a scripting language devised by Apple Inc., and built into Mac OS. More generally, "AppleScript" is the word used to designate the Mac OS scripting interface, which is meant to operate in parallel with the graphical user interface....
     - 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
ToolBook

ToolBook is an e-learning content development application developed and published by SumTotal Systems.ToolBook is the name of the product line which includes ToolBook Instructor and ToolBook Assistant....
 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
XTalk

xTalk is a loosely defined family of scripting languages. The father of all xTalk languages is HyperTalk, the language used by Apple's HyperCard environment....
-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.

Some 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

See also

  • Inform 7
    Inform

    Inform is a programming language and design system for interactive fiction originally created in 1993 by Graham Nelson. Inform can generate programs designed for the Z-machine or Glulx virtual machines....
     - a programming language with similarly English-like syntax
  • - excellent language reference (control structures, events, built-in functions, etc.)