Noticed this interesting reminiscence about HyperCard in the conclusion of a paper by Chris DiGiano and others:
Apple’s introduction of HyperCard in the 1980s ushered in a wave of inventive and useful educational applications, all created by teachers, students, and other nonprogrammers. Until now, technology-enhanced classroom collaboration and coordination activities have been, like educational applications in pre-HyperCard days, the sole domain of dedicated programming teams, greatly limiting the scope of experimentation and creative effort. Extending the analogy, it may be useful to consider what could be learned from the HyperCard experience that might be applicable to the programmer cognition issue around distributed control: were similar issues neatly sidestepped by HyperCard through appealing directly to end users as programmers? We argue that HyperCard not only provided programming tools to teachers but sidestepped a programmer cognition issue relevant at the time: the conceptual shift to user-event-driven programming.
Though the graphical user interface, and, indeed, hypertext were introduced by SRI researchers in 1968 (Engelbart, 1968), until the time of the introduction of HyperCard, the dominant conception of programming was highly shaped by the terminal interface (DOS command line, telnet, etc.) and an interaction style dominated by computer control in both outputs and inputs (“input statements” are a dead giveaway of this mind-set). In that style, the computer program determines what information is demanded (word used advisedly) of the user and when input is allowed. Programs were normally structured as a branching tree of requests for specific inputs and displays of resulting outputs. The very notion seemed ridiculous that one could create novel and useful applications with only
- buttons to push;
- text fields to type into or click on;
- screens (“cards”) containing buttons, graphics, and text fields; and
- the capacity to set up automatic “links” from one card to another.
But the aspect uniting these elements, and perhaps the most significant payload, was a programming paradigm that situated control primarily in the hands of the user.