SK8 (programming Language)
   HOME

TheInfoList



OR:

SK8 (pronounced "skate") was a
multimedia Multimedia is a form of communication that uses a combination of different content forms such as text, audio, images, animations, or video into a single interactive presentation, in contrast to tradition ...
authoring environment developed in
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple fruit tree, trees are agriculture, cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, wh ...
's Advanced Technology Group from 1988 until 1997. It was described as "HyperCard on steroids", combining a version of HyperCard's
HyperTalk HyperTalk is a discontinued high-level, procedural programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer's HyperCard hypermedia program by Bill Atkinson. Because the main target audience of HyperTalk ...
programming language with a modern
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
application platform. The project's goal was to allow creative designers to create complex, stand-alone applications. The main components of SK8 included the object system, the
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
, the graphics and components libraries, and the Project Builder, an
integrated development environment An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
. For much of its history, SK8 remained a research project, and inspired a number of other Apple projects like
AppleScript AppleScript is a scripting language created by Apple Inc. that facilitates automated control over scriptable Mac applications. First introduced in System 7, it is currently included in all versions of macOS as part of a package of system automa ...
, as well as seeing use as a prototyping platform. Although around 1993 a team was assigned by the Apple Product Division to release a SK8 runtime, the limitation of the Mac's capabilities as well as the shift to the
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
chip made such a large project intractable. With the bulk of the original vision completed and no easy path to release as part of MacOS, active development ended in 1996–1997, and the
Macintosh Common Lisp Macintosh Common Lisp (MCL) is an implementation and IDE for the Common Lisp programming language. Various versions of MCL run under the classic Mac OS (m68k and PPC) and Mac OS X. Versions of MCL up to and including 5.1 are proprietary. Vers ...
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
for the entire project was released to the public in 1997.


History

The SK8 project was created by Ruben Kleiman when he joined Apple in 1987. He had come to Apple to develop a flexible, object-oriented user interface and multimedia development environment. The name of the project derived from his interest in
skateboard A skateboard is a type of sports equipment used for skateboarding. They are usually made of a specially designed 7-8 ply maple plywood deck and polyurethane wheels attached to the underside by a pair of skateboarding trucks. The skateboarde ...
ing.The application splash screen prominently features a skateboard. Coincidentally, at this time the
HyperCard HyperCard is a software application and development kit for Apple Macintosh and Apple IIGS computers. It is among the first successful hypermedia systems predating the World Wide Web. HyperCard combines a flat-file database with a graphical, fl ...
, with its
direct manipulation interface In computer science, human–computer interaction, and interaction design, direct manipulation is an approach to interfaces which involves continuous representation of objects of interest together with rapid, reversible, and incremental actions a ...
and scripting language, was about to ship. While HyperCard was great for simple applications it used a limited interaction model – the "stacks" of cards" – that limited its potential applicability. SK8 attempted to extend these benefits to a wider programming role. Early work on what would become SK8 focused on infrastructure rather than visual programming. Kleiman's first effort was a dynamic, prototype-based object system, MacFrames, a
frame A frame is often a structural system that supports other components of a physical construction and/or steel frame that limits the construction's extent. Frame and FRAME may also refer to: Physical objects In building construction *Framing (con ...
/object system with plug-ins for inference engines. Through preferences settings, MacFrames was used to emulate a large variety of object systems, including IntelliCorp's KEE. This research, in concert with users developing actual applications and prototypes at Apple, yielded the object model used in SK8. MacFrames was developed in Coral Lisp, which was acquired by Apple and became
Macintosh Common Lisp Macintosh Common Lisp (MCL) is an implementation and IDE for the Common Lisp programming language. Various versions of MCL run under the classic Mac OS (m68k and PPC) and Mac OS X. Versions of MCL up to and including 5.1 are proprietary. Vers ...
. The Macintosh at that time had no generalized
inter-process communication In computer science, inter-process communication or interprocess communication (IPC) refers specifically to the mechanisms an operating system provides to allow the processes to manage shared data. Typically, applications can use IPC, categori ...
(IPC) system. Kleiman created an IPC
init In Unix-based computer operating systems, init (short for ''initialization'') is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct ...
for the Mac to allow MacFrames to communicate with other processes, in particular, HyperCard. This allowed HyperCard to be used as a visual programming front-end for MacFrames. Another goal of MacFrames was to build distributed processing right into the object system. Instead of using an RPC API, one simply set the object's property with the desired value and callback for the results. MacFrames was used by Apple's QA group to create an automated black-box testing system. The SK8 Project Builder was created to provide a rich set of direct manipulation tools, including tools for building interactive controls and general but non-invasive glueing. The builder's objective was to provide a visual/direct manipulation interface for building visual development environments. That is, the system could be used to develop completely different development environments tailored to different tasks. The first version of the SK8 graphics system was designed to extend HyperCard, allowing cards to have multiple layers rather than a single "background" template. The SK8 system was initially programmed in Lisp. This was considered too arcane for general use. Additionally, there was growing concern about the number of different languages in use at Apple. As part of a wider effort to modernize the MacOS, a new unified scripting language was desired. In 1989 Kleiman joined
David Canfield Smith David Canfield Smith is an American computer scientist best known for inventing computer icons and the programming technique known as programming by demonstration. His primary emphasis has been in the area of human–computer interaction (CHI) de ...
and
Larry Tesler Lawrence Gordon Tesler (April 24, 1945 – February 16, 2020) was an American computer scientist who worked in the field of human–computer interaction. Tesler worked at Xerox PARC, Apple, Amazon, and Yahoo! While at PARC, Tesler's work include ...
to design and implement the first version of
AppleScript AppleScript is a scripting language created by Apple Inc. that facilitates automated control over scriptable Mac applications. First introduced in System 7, it is currently included in all versions of macOS as part of a package of system automa ...
. This version of AppleScript used SK8 objects, and two later the Apple Product Division re-implemented AppleScript using
AppleEvents Apple events are the message-based interprocess communication mechanism in Mac OS, first making an appearance in System 7 and supported by every version of the classic Mac OS since then and by macOS. Apple events describe "high-level" events suc ...
as the glue for communicating with AppleScript objects. The original prototype was then renamed SK8Script, and was itself re-implemented in assembler in 1992. A number of researchers in the Advanced Technology Group began to use SK8 for their projects. Certain universities and corporations also began to participate. The system was used to develop prototypes for
Newton Newton most commonly refers to: * Isaac Newton (1642–1726/1727), English scientist * Newton (unit), SI unit of force named after Isaac Newton Newton may also refer to: Arts and entertainment * ''Newton'' (film), a 2017 Indian film * Newton ( ...
, QuickTime interfaces, interprocess communication, and was used to prototype many titles, including Stagecraft, a learning tool for children. For performance reasons, in 1992 and 1993 SK8 was re-implemented from the ground up. Working at Apple's Cambridge Research Center, the Macintosh Common Lisp object store was isolated and directly hooked into SK8's store. The SK8Script debugger was re-implemented at the assembler language level (previously in Lisp) and the compiler and runtime performance improved.


Description

The SK8 system includes the object system, the graphics and component objects, the SK8Script language, and the Project Builder environment.


Object System

The SK8 object system was, like
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
, prototype-based, but unlike JavaScript, object properties were themselves objects. Hence, properties were not simply names that acted as keys to set or retrieve values, but in addition possessed arbitrary behavior. This allowed properties to have intelligent behavior (e.g., trigger an inference engine or serve as endpoints in RPC networking); one could think of them as "smart properties". The idea was to allow application programmers to focus on the manipulating objects rather than having to learn APIs—which would be built into the objects. Not implemented was a hierarchical namespace managing property names.


SK8Script

Until 1989, SK8's scripting language was Lisp. This changed to SK8Script, which was heavily influenced by
HyperTalk HyperTalk is a discontinued high-level, procedural programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computer's HyperCard hypermedia program by Bill Atkinson. Because the main target audience of HyperTalk ...
(HT). Many of the differences between SK8Script and HyperTalk can be considered to be generalization of HT concepts, removing tight integration with particular objects in the HyperCard universe and replacing them with generalized syntax that could interact with any object. Like HT, a core concept of the SK8Script system are the "containers", which roughly equate to objects in conventional systems, and the "chunking" system that allowed those containers to be identified and enumerated. HT had introduced the idea of offering multiple ways to address objects and collections, allowing the programmer to select whatever syntax seemed most natural in context, and then use an entirely different syntax somewhere else. SK8Script offered a similar system.


Graphics and Component Objects

SK8's universe was made up of a multimedia-oriented system using Actors on a Stage. Actors were any objects that were based on the prototype Actor object, which contained the basic framework needed to provide 2D graphics support - the location and size of the object for instance. Actors became visible when they were placed upon the Stage, an invisible background object that captured user events to provide interactivity. In SK8, a traditional window was an object like any other graphics object. When an Actor was on the Stage, it could behave as a window-like object. It was easy to design complex objects that behaved like windows (e.g., a donut-shaped window; its hole's opacity 0%, with content being a text object scrolling around or perhaps a movie playing within its frame). An object known as the "halo" provided resize handles and other widgets for manipulation in a visual development environment. All SK8 Actors could contain other actors. The hierarchy could be navigated using the chunking expressions, so one could set the visible of the first Rectangle in CoolOval to true. The objects could then be made visible in the UI by moving them onto the Stage using the insert command, like insert CoolOval into the stage, which would make both the oval and rectangle appear. GUIs were constructed solely from Actors. A window-like object could be built out of an opaque rectangle containing other objects (e.g., close buttons, widgets). Every Actor's drawing style was controlled by a Renderer, which aided the GUI building process. For instance, the BevelRenderer could be used to bevel the edges around an Actor, producing an effect like Windows 3.x controls or the title bar in
NeXTSTEP NeXTSTEP is a discontinued object-oriented, multitasking operating system based on the Mach kernel and the UNIX-derived BSD. It was developed by NeXT Computer in the late 1980s and early 1990s and was initially used for its range of proprieta ...
. Other renderers included color and image fills, gradients, tiles and blends. Although there was no difference in programming terms, basic objects like rectangles were classified as "geometry actors" while more traditional GUI elements like buttons were known as "interface actors". The Stage captured user-generated events like mouse-down clicks and key presses and sent them to the Actors. The visual hierarchy determined which object would receive the message first - the Stage was
Z-order Z-order is an ordering of overlapping two-dimensional objects, such as Window (computing), windows in a stacking window manager, shapes in a vector graphics editor, or objects in a 3D application.Foley, James, Andries van Dam, Steven Feiner, and ...
ed and objects closer to the front got the messages first. Messages could be passed up the class/prototype hierarchy with the do inherited command.


Project Builder

Project Builder was an environment for building visual development environments. It provided code editing, debugging, graphics and smart component library, runtime targeting support and a direct manipulation graphical interface builder system. A key element of the Builder system was the "Overviewer" panel, which held a categorized list of all of the objects in the currently opened project. These include libraries, user-created functions and methods, variables, and so forth. These could be examined and edited by double-clicking on them, or by clicking in an associated pop-up menu that appeared on the object when it was selected in the GUI builder. The Object Editor that appeared listed the object's "properties" ( instance and
class variable In class-based, object-oriented programming, a class variable is a variable defined in a class of which a single copy exists, regardless of how many instances of the class exist. A class variable is not an instance variable. It is a special typ ...
s) in one pane, and it's "handlers" (
methods Method ( grc, μέθοδος, methodos) literally means a pursuit of knowledge, investigation, mode of prosecuting such inquiry, or system. In recent centuries it more often means a prescribed process for completing a task. It may refer to: *Scien ...
) in another. The GUI builder included a drag-and-drop based system for constructing visual objects. SK8 did not have traditional "screens"; it used an invisible "Stage" object that served as the background for managing events and visual objects. One interesting aspect was that no windows, in the traditional sense, were needed or expected to display anything. In fact, any visual object could have window-like behavior (through its drag-and-drop and other smart properties). SK8 did, however, include a system for editing and programming complete
menu bar A menu bar is a graphical control element which contains drop-down menus. The menu bar's purpose is to supply a common housing for window- or application-specific menus which provide access to such functions as opening files, interacting wi ...
s, a feature that HyperCard lacked. Another oft-requested feature from HyperCard was a media editor, which allowed Macintosh resources to be moved in and out of the project. SK8 built this functionality into the IDE. Other components of the system included an online documentation system, lists of systemwide objects and commands, and the code editor and debugger windows.


Interacting with the System

SK8Script offered a system for calling in and out of
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
functions, allowing it to more directly interact with the
Macintosh Toolbox The Macintosh Toolbox implements many of the high-level features of the Classic Mac OS, including a set of application programming interfaces for software development on the platform. The Toolbox consists of a number of "managers," software compone ...
. In HyperCard, interacting with arbitrary Toolbox code was handled through custom code resources known as XCMDs and XFCNs which encapsulated the functionality in a
black box In science, computing, and engineering, a black box is a system which can be viewed in terms of its inputs and outputs (or transfer characteristics), without any knowledge of its internal workings. Its implementation is "opaque" (black). The te ...
. These were called and returned in a single operation, with the internal operations invisible. Under SK8, SK8Script could interact directly with the encapsulated code, setting variables, calling functions and returning results. External code could also call into SK8Script, examining and setting variables, or calling functions.


References


Citations


Bibliography

* * *


Related patents


''System and method of using object sensitivity for selecting computer-generated objects''
United States Patent 5737554

United States Patent 5450540


Further reading


''How to make complex software customizable''
Systems, Man, and Cybernetics, 1994. ''Humans, Information and Technology'', 1994 IEEE International Conference, October 1994

Journal of Interactive Media in Education, 98(10), October 1998


External links


SK8 Source Code (zip format)SK8 Source Code (StuffIt format)
mirror of Apple's research FTP server {{DEFAULTSORT:Sk8 Apple Inc. software Common Lisp (programming language) software HyperCard products