From Wikipedia, the free encyclopedia - View original article
|Developer(s)||Apple Inc. (formerly Apple Computer, Inc.)|
|Stable release||2.4.1 / 1998|
Apple IIGS: System Software 5, System Software 6Macintosh: System Software 6, System 7, Mac OS 8, Mac OS 9
|Developer(s)||Apple Inc. (formerly Apple Computer, Inc.)|
|Stable release||2.4.1 / 1998|
Apple IIGS: System Software 5, System Software 6Macintosh: System Software 6, System 7, Mac OS 8, Mac OS 9
This combination of features – simple form layout, database capabilities and ease of programming – led to widespread use in many different roles. Some HyperCard users employed it as a programming system for Rapid Application Development of applications and databases, others for building interactive applications with no database requirements, command and control systems, and many examples in the demoscene.
HyperCard was originally released in 1987 for $49.95 and was included for free with all new Macs sold at the time. It was withdrawn from sale in March 2004, although by then it had not been updated for many years. It has not been ported to Mac OS X but ran in the Classic environment.
HyperCard is based on the concept of a "stack" of virtual "cards". Cards hold data, just as they would in a Rolodex card-filing device. Each card contains a number of interactive objects, including text fields, check boxes, buttons, and similar common GUI elements. Users "browse" the stack by navigating from card to card, using built-in navigation features, a powerful search mechanism, or through user-created scripts.
Users build new stacks or modify existing ones by adding new cards. They place GUI objects on the cards using an interactive layout engine based on a simple drag-and-drop interface. Additionally, HyperCard also included prototype or template cards known as "backgrounds"; when new cards are created they can refer to one of these background cards, which causes all of the objects on the background to be copied onto the new card. This way a stack of cards with a common layout and functionality can be created. The layout engine is similar in concept to a "form" as used in most rapid application development (RAD) environments (such as Borland Delphi, Visual Basic and Visual Studio).
The database features of the HyperCard system are based on the storage of the state of all of the objects on the cards in the physical file representing the stack. The database did not exist as a separate system within the HyperCard stack, that is, there was no database engine or similar construct. Instead, the state of any object in the system was considered to be live and editable at any time; from the HyperCard runtime's perspective, there was no difference between moving a text field on the card and typing into it, both operations simply changed the state of the target object within the stack. Such changes are immediately saved when complete, so typing into a field caused that text to be stored to the stack's physical file. The system operates in a largely stateless fashion, with no need to "save" during operation. This is in common with many database-oriented systems, although somewhat different from document-based applications.
The final key element in HyperCard was the "script", a single code-carrying element of every object within the stack. The script was a text field whose contents were interpreted in the HyperTalk language (detailed below). Like any other property, the script of any object could be edited at any time and changes were saved as soon as they were complete. When the user invokes actions in the GUI, like clicking on a button or typing into a field, these actions are translated into "events" by the HyperCard runtime. The runtime then examines the script of the object that was the target of the event, like a button, to see if its script object contains code for that event, code known as a "handler". If it does, the HyperTalk engine runs the handler, if it does not, the runtime examines other objects in the visual hierarchy.
These concepts make up the majority of the HyperCard system; stacks, backgrounds and cards provide a form-like GUI system, the stack file provides object persistence and database-like functionality, and HyperTalk allows handlers to be written for GUI events. Unlike the majority of RAD or database systems of the era, however, HyperCard combined all of these features, both user-facing and developer-facing, in a single application. This allowed rapid turnaround and immediate prototyping, allowing users to author custom solutions to problems with their own personalized interface. "Empowerment" became a catchword as this possibility was embraced by the Macintosh community, as was the phrase "programming for the rest of us", that is, anyone, not just professional programmers.
It was this combination of features that also made HyperCard a powerful hypermedia system. Users could build backgrounds to suit the needs of a particular system, say a rolodex, and use simple HyperTalk commands to provide buttons to move from place to place within the stack, or provide the same navigation system within the data elements of the UI, like text fields. Using these features, it is easy to build linked systems similar to hypertext links on the Web. Unlike the Web, programming, placement and browsing were all the same tool – similar systems have been created for HTML but traditional Web services are considerably more heavyweight.
The programming language within HyperCard is called HyperTalk and is object oriented. Objects exist in a message path hierarchy and respond to messages generated by either the user or the system itself (timers for instance). Objects inherit properties and attributes from those above them in the hierarchy. HyperTalk object classes are predetermined by the HyperCard environment, although others can be added by the use of externals (see below). HyperTalk is verbose, hence its ease of use and readability. HyperTalk code segments are referred to as "scripts", a term that was considered less daunting to beginning programmers.
Each HyperCard object class, contains a number of "properties". For example, buttons are a type of object, and come in standard styles. To determine, say, whether a checkbox style button is in fact checked, a script can simply call the
highlight property, which would return either true or false. In a similar way, objects can be analyzed via functions. For example, the number of lines in text field (another type of object) can be determined by a variant of the
number function, called simply as
the number of lines of field 'fieldName'. This is very useful when performing a particular action on each separate line of the field. The script that implements the action need only call the function to know exactly the number of lines it must deal with. Should the field data change, the already coded function call will still be accurate.
HyperTalk is a weakly typed language. All variables, and in fact all values of any kind, are stored as typeless character strings handled by the interpreter as numbers or text based purely on context. This has a cost in speed but makes it far easier to write (and to read) code. Variables need not be declared, but rather are created on the fly as they are required. For example, the following expression creates a variable named
total, and sets its initial value:
put 15 into total. Then the expression
add 3 to total would result in the string
"18" being stored in that variable. Taking this further, a powerful and intuitive structure known as "chunking" allows precise manipulation of text and number strings. It is possible, for example, to have the second character of the value
"123" (the 2) added to the last character of the value
"12347". For another example, word 3 of
"life is cruel" (cruel) can be appended after the first word of
"Hello world", yielding
"Hello cruel world". It would then be possible to put
"Goodbye" into the first word of that string, replacing the current value of that word to yield
"Goodbye cruel world". The above mentioned terms:
into, among many others, offer English-like control over the ability to crunch numbers and parse text, down to the character level.
HyperTalk supports most standard programming structures such as "if-then" and "repeat". The "if-then" structure is so flexible that it even allows "case" structured code.
HyperTalk scripting allows the system to be easily modified and extended. Unlike many procedural languages, and even many scripting languages, HyperTalk proved to be far more accessible to a wide range of users, partly because scripts were more or less readable as English. For instance,
put the first word of the third line of field "hello" into field "goodbye" did exactly that. Referring to objects and the items on cards or backgrounds was easy. The example above shows how to access data within a field on a particular card, but one could refer to any object in the same fashion — including the stack itself. All objects could be named or renamed, as in the example above. In addition, each object (including the stack itself) had unique numeric IDs that remained unchanged throughout the life of the object.
Adding scripts is also easy. The user simply "command-option-clicked" (or he could click the "Script" button in the item's property dialog) on any element in the stack, and an editor would pop up. The script may then be edited, saved, and used immediately. In addition, HyperCard contains a "Message Box", an interactive command-line in a floating window that can execute single lines of script. This also includes the "find" command, so it doubles as a search dialog. HyperCard 2.0 added a debugger, as well.
HyperTalk was sufficiently popular that one of its main uses was not as a database, but as a programming tool that empowered ordinary computer users. Thousands of "stacks" were written and distributed as "stackware" in the years when HyperCard was widely available. As stated above, programming "for the rest of us", that is, for non-professionals, allowed many thousands of personal applications to be created by individuals with a need for personal software solutions. Some are still in use today.
Many hardware and software vendors provided their tutorials as HyperCard stacks, since the application was bundled with all Macs.
The power of HyperCard could be increased significantly through the use of external command and external function modules, more commonly known as XCMDs and XFCNs. These were code libraries packaged in a resource fork that integrated into either the system generally or the HyperTalk language specifically; this was an early example of the plug-in concept. Unlike conventional plug-ins, these did not require separate installation before they were available for use; they could be included in a stack, where they were directly available to scripts in that stack.
During HyperCard's peak popularity in the late 1980s, a whole ecosystem of vendors offered thousands of these externals for everything from HyperTalk compilers to graphing systems, database access, internet connectivity, and animation. Oracle offered an XCMD that allowed HyperCard to directly query Oracle databases on any platform. This was later superseded by Oracle's Oracle Card product. BeeHive Technologies offered a hardware interface that allowed the computer to control external devices. Connected via the ADB bus, this instrument could "read" the state of connected external switches or "write" digital outputs to a multitude of devices.
Externals allow access to the Macintosh Toolbox, which contained many lower level commands and functions not native to HyperTalk, such as control of the serial and ADB ports.
HyperCard was created by Bill Atkinson. Work for it began in March 1985 under the name of WildCard (hence its creator code of 'WILD'). In 1986 Dan Winkler began work on HyperTalk and the name was changed to HyperCard for trademark reasons. It was initially released in August 1987, with the understanding that Atkinson would give HyperCard to Apple only if they promised to release it for free on all Macs. Apple timed its release to coincide with the MacWorld Conference & Expo in Boston, Massachusetts to guarantee maximum publicity. HyperCard was a huge hit almost instantly. There were forecasts in the computer press that most future Mac software would be developed using HyperCard. Many people who thought they would never be able to program a computer started using HyperCard for all sorts of automation and prototyping tasks, a surprise even to its creator.
Apple itself never seemed to understand what HyperCard's target market for users should be. Project managers found it was being used by a huge number of people, internally and externally. Bug reports and upgrade suggestions continued to flow in, demonstrating it had a wide variety of users. Since it was also free, it was difficult to justify dedicating engineering resources to improvements in the software. It was not lost on Apple or its mainstream developers that the power HyperCard gave to people could cut into the sales of ordinary shrink-wrapped products.
In late 1989, Kevin Calhoun, then a HyperCard engineer at Apple, led an effort to upgrade the program. This resulted in HyperCard 2.0, released in 1990. The new version included an on-the-fly compiler that greatly increased performance of computationally intensive code, a new debugger and a number of improvements to the underlying HyperTalk language.
At the same time HyperCard 2.0 was being developed, a separate group within Apple developed and in 1991 released "HyperCard IIGS", a version of HyperCard for the Apple IIGS system. Aimed mainly at the education market, HyperCard IIGS had roughly the same feature set as the 1.x versions of Macintosh HyperCard, while adding support for the color graphics capabilities of the IIGS. Although "stacks" (HyperCard program documents) were not binary-compatible, a translator program (itself a HyperCard stack) allowed stacks to be moved from one platform to the other.
Then, Apple decided that most of its application software packages, including HyperCard, would be the property of a wholly owned subsidiary called Claris. Many of the HyperCard developers chose to stay at Apple rather than move to Claris, causing the development team to be split. Claris, in the business of selling software for a profit, attempted to create a business model where HyperCard could also generate revenues. They wrote a new "viewer only" version, the HyperCard Player which Apple distributed with the Macintosh operating system, while Claris sold the "full" version commercially. Many users were upset that they had to pay to use software that had traditionally been supplied free and which many considered a basic part of the Mac.
Despite the new revenue stream, Claris did little to market HyperCard. Development continued with minor upgrades, as well as the first failed attempt to create a third generation of HyperCard. During this period, HyperCard began losing market share. Without a number of important, basic features, HyperCard authors began moving to systems such as SuperCard and Macromedia Authorware. Nevertheless HyperCard continued to be popular and used for a widening range of applications, from the game The Manhole, an earlier effort by the creators of Myst, to corporate information services and many thousands in between.
Apple eventually folded Claris back into the parent company, returning HyperCard to Apple's core engineering group. In 1992, Apple released the eagerly anticipated upgrade of HyperCard 2.2 and made many HyperCard enthusiasts happy by including licensed versions of Color Tools and Addmotion II, adding support for color pictures and animations. However, these tools were limited and often cumbersome to use because HyperCard still lacked true, internal color support.
Several attempts were made to restart HyperCard development once it returned to Apple. Because of the product's widespread use as a multimedia-authoring tool it was rolled into the QuickTime group. A new effort to allow HyperCard to create QuickTime interactive (QTi) movies started, once again under the direction of Kevin Calhoun. QTi extended QuickTime's core multimedia playback features to provide true interactive facilities and a low-level programming language based on 68000 assembly language. The resulting HyperCard 3.0 was first presented in 1996 when an alpha-quality version was shown to developers at Apple's annual Apple Worldwide Developers Conference (WWDC). Under the leadership of Dan Crow development continued through the late 1990s, with public demos showing many popular features such as color support, internet connectivity, and the ability to play HyperCard stacks (which were now special QuickTime movies) in a web browser. Development of HyperCard 3.0 stalled when the QuickTime team was focused away from development of QuickTime interactive to the streaming features of QuickTime 4.0. Finally in 2000 the HyperCard engineering team was reassigned to other tasks after Steve Jobs decided to abandon the product. Calhoun and Crow both left Apple shortly after in 2001.
In the years that followed, the program saw no additional support from Apple. Apple finally ceased selling HyperCard in March 2004.
HyperCard runs natively only in Apple Mac OS versions 9 or earlier, but it can still be used in Mac OS X's Classic mode on PowerPC based machines (G5 and earlier). The last functional native HyperCard authoring environment is Classic mode in Mac OS X 10.4 (Tiger) on PowerPC based machines (although it can be run on modern Intel-based machines by using an emulation layer such as SheepShaver).
HyperCard has been used for all sorts of hypertext and artistic purposes. Before the advent of PowerPoint, HyperCard was often used as a general-purpose presentation program. Examples of HyperCard applications include simple databases, "choose your own adventure"–type games, and educational teaching aids.
Due to its rapid application design facilities, HyperCard was also sometimes used for prototyping of applications and sometimes even for version 1.0 implementations. Inside Apple, the QuickTime team was one of HyperCard's biggest customers.
A number of commercial software products were created in HyperCard, most notably the original version of the interactive game narrative Myst, the Voyager Company's Expanded Books, and multimedia CD-ROMs of Beethoven's Ninth Symphony CD-ROM, the Beatles' A Hard Day's Night, and the Voyager MacBeth.
In Quebec, Canada, HyperCard was used to control a robot arm used to insert and retrieve video disks at the National Film Board CinéRobothèque.
HyperCard was also used to prototype a fully functional prototype of SIDOCI (one of the very first experiments in the world to develop an integrated electronic patient record system) and was heavily used by Montréal Consulting firm DMR to demonstrate how "a typical day in the life of a patient about to get surgery" would look like in a paperless age.
Activision, which was until that time primarily a game company, saw HyperCard as an entry point into the business market. Changing their name to Mediagenic, they published several major HyperCard based applications, most notably Danny Goodman's Focal Point, a personal information manager, and Reports For HyperCard, a program by Nine To Five Software that allowed users to treat HyperCard as a full-fledged database system with robust information viewing and printing features.
The HyperCard-inspired SuperCard for a while included the "Roadster" plug-in that allowed stacks to be placed inside Web pages and viewed by browsers with an appropriate browser plug-in. There was even a Windows version of this plug-in allowing computers other than Macintoshes to use the plug-in.
The first HyperCard virus was discovered in Belgium and the Netherlands in April 1991.
Because HyperCard executed scripts in stacks immediately on opening, it was also one of the first applications susceptible to macro viruses. The Merryxmas virus was discovered in early 1993 by Ken Dunham, two years before the "Concept" virus. There were very few viruses based on HyperCard, and their overall impact was minimal.
HyperCard is one of the first products that made use of and popularized the hypertext concept to a large popular base of users.
Jakob Nielsen has pointed out that HyperCard was really only a hypermedia program since its links started from regions on a card, not text objects; actual HTML-style text hyperlinks were possible in later versions, but were awkward to implement and seldom used. Deena Larsen programmed links into HyperCard for Marble Springs. Bill Atkinson later lamented that if he had only realized the power of network-oriented stacks, instead of focusing on local stacks on a single machine, HyperCard could have become the first Web browser.
The Myst computer game franchise, initially released as a HyperCard stack and included bundled with some Macs (for example the Performa 5300), still lives on, making HyperCard a facilitating technology for starting one of the best-selling computer games of all time.
According to Ward Cunningham, the inventor of Wikis, the wiki concept can be traced back to a HyperCard stack he wrote in the late 1980s, making HyperCard one of the grandparents of the Wiki idea.
Other companies offered their own versions. Four products are currently available which offer HyperCard-like functionality:
Past products included:
In addition, many of the basic concepts of the original system were later re-used in other forms. Apple built their system-wide scripting engine AppleScript on a language similar to HyperTalk; it is often used for DTP workflow automation needs. In the 1990s FaceSpan provided a third-party graphical interface, and continues to do so today. AppleScript also has a native graphical programming front-end called Automator, released with Mac OS X 10.4, codenamed Tiger, in April 2005. One of HyperCard's strengths was its handling of multimedia, and many multimedia systems like Macromedia Authorware and Macromedia Director are based on concepts originating in HyperCard.
AppWare, originally known as Serius Developer, is sometimes seen to be similar to HyperCard, as they were both rapid application development systems. AppWare was sold in the early 90s and worked on both MS Windows and Apple Mac systems.