Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
HyperCard
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Overview== ===Design=== [[File:Apple Macintosh SE-30 computer (1989) clear background.png|thumb|The SE/30 was one of Apple's Macintosh computers that were contemporaneous with the HyperCard application.<ref>{{Citation|title= Apple Macintosh SE/30|url= https://commons.wikimedia.org/wiki/File:Apple_Macintosh_SE-30_(1989).jpg|date= 2011-01-07|access-date= 2015-11-16|first= Jeff Keyzer from Austin, TX|last= USA}}</ref>]] [[File:Hypercard_Date_Book_Stack.png|thumb|right|A screenshot from the Datebook stack, included in the original release of HyperCard]] {{quote box | align=right | width=25% | quote=The beauty of HyperCard is that it lets people program without having to learn how to write code β what I call "programming for the rest of us". HyperCard has made it possible for people to do things they wouldn't have ever thought of doing in the past without a lot of heavy-duty programming. It's let a lot of non-programmers, like me, into that loop. | author=David Lingwood, APDA<ref name="APDA Pinpoints"/>}} Described by creator [[Bill Atkinson]] as a "software [[erector set]]",{{r|flynn19870817}} HyperCard is based on the concept of a "stack" of virtual "cards".<ref name=wired/> Cards hold data, just as they would in a [[Rolodex]] card-filing device. Each card contains a set of interactive objects, including text fields, check boxes, buttons, and similar common [[graphical user interface]] (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.<ref name= info>{{cite magazine |url=https://books.google.com/books?id=qjAEAAAAMBAJ&pg=PT60 |title=A Hypercard Primer |magazine=[[InfoWorld]] |date=November 6, 1989| page=S3 (sidebar)| volume=11| issue=45}}</ref> Users build or modify stacks by adding new cards. They place GUI objects on the cards using an interactive layout engine based on a simple drag-and-drop interface.<ref name= info/> Also, HyperCard includes prototype or template cards called 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 "show through" behind 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 (software)|Delphi]], and [[Microsoft]] [[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 does not exist as a separate system within the HyperCard stack; no [[database engine]] or similar construct exists. Instead, the state of any object in the system is considered to be live and editable at any time. From the HyperCard runtime's perspective, there is no difference between moving a text field on the card and typing into it; both operations simply change the state of the target object within the stack. Such changes are immediately saved when complete, so typing into a field causes 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 is the script, a single code-carrying element of every object within the stack. The script is a text field whose contents are interpreted in the HyperTalk language.<ref name=info/> Like any other property, the script of any object can be edited at any time and changes are 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 is the target of the event, like a button, to see if its script object contains the event's code, called a handler. If it does, the HyperTalk engine runs the handler; if it does not, the runtime examines other objects in the visual hierarchy. {{external media| float = right| width = 200px | video1 = [https://archive.org/details/CC501_hypercard "HyperCard Mania!" ''Computer Chronicles'', 1987] archive.org ([[Internet Archive]]) }} 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 combines all of these features, both user-facing and developer-facing, in a single application. This allows rapid turnaround and immediate prototyping, possibly without any coding, 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",<ref>{{Citation |first= Terry |last= Winograd |chapter-url= http://hci.stanford.edu/publications/bds/10p-prototype.html |chapter= HyperCard, Director, and Visual Basic |title= Bringing Design to Software |publisher= Addison-Wesley |year= 1996}}</ref><ref name="APDA Pinpoints"/> that is, anyone, not just professional programmers. It is this combination of features that also makes HyperCard a powerful [[hypermedia]] system. Users can build backgrounds to suit the needs of some 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.<ref name=wired/> Unlike the Web, programming, placement, and browsing are all the same tool. Similar systems have been created for HTML, but traditional Web services are considerably more heavyweight. ===HyperTalk=== {{main|HyperTalk}} HyperCard contains an [[Object-oriented programming|object-oriented]] [[scripting language]] called [[HyperTalk]], which was noted for having a syntax resembling casual [[English language|English]] language. HyperTalk language features were predetermined by the HyperCard environment, although they could be extended by the use of external functions (XFCN) and commands (XCMD), written in a compiled language.{{sfn|Goodman|1988|p=799}} The [[weakly typed]] HyperTalk supports most standard programming structures such as "ifβthen" and "repeat". HyperTalk is verbose, hence its ease of use and readability.<ref>{{cite web |last1=DeVoto |first1=Jeanne |title=Jeanne's House o' HyperCard |url=http://www.jaedworks.com/hypercard/ |website=www.jaedworks.com |access-date=9 May 2019 |quote="Its string handling is the most flexible I've seen - the language contains primitives for directly addressing any character, word, logical line, or chunk delimited by any character you choose. The natural-language syntax - "wait until the mouse is down", "if it is not a number then beep", "get word 3 to 10 of line 8 of theAnswer", and "go to the last card of this stack" are all legal HyperTalk expressions - makes it a joy to read and easy to maintain."}}</ref> HyperTalk code segments are referred to as "scripts", a term that is considered{{by whom|date=June 2023}} less daunting to beginning programmers. ===Externals=== HyperCard can be extended significantly through the use of ''external command'' (XCMD) and ''external function'' (XFCN) modules. These are code libraries packaged in a stack's [[resource fork]] that integrate into either the system generally or the HyperTalk language specifically; this is an early example of the [[Plug-in (computing)|plug-in]] concept. Unlike conventional plug-ins, these do not require separate installation before they are available for use; they can be included in a stack, where they are 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 such as HyperTalk compilers, graphing systems, database access, Internet connectivity, and animation. Oracle offered an XCMD that allows HyperCard to directly query Oracle databases on any platform, superseded by [[Oracle Card]]. BeeHive Technologies offered a hardware interface that allows the computer to control external devices. Connected via the [[Apple Desktop Bus]] (ADB), this instrument can read the state of connected external switches or write digital outputs to a multitude of devices. Externals allow access to the Macintosh Toolbox, which contains many lower-level commands and functions not native to HyperTalk, such as control of the serial and ADB ports.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)