- Author: Apple Inc
- Format: online html, PDF
- Price: free
The Objective-C language is a simple computer language designed to enable sophisticated object-oriented programming. Objective-C is defined as a small but powerful set of extensions to the standard ANSI C language. Its additions to C are mostly based on Smalltalk, one of the first object-oriented programming languages. Objective-C is designed to give C full object-oriented programming capabilities, and to do so in a simple and straightforward way.
This document both introduces the object-oriented model that Objective-C is based upon and fully documents the language. It concentrates on the Objective-C extensions to C, not on the C language itself.
Because this isn’t a document about C, it assumes some prior acquaintance with that language. However, it doesn’t have to be an extensive acquaintance. Object-oriented programming in Objective-C is sufficiently different from procedural programming in ANSI C that you won’t be hampered if you’re not an experienced C programmer.
Important Note: This document describes the version of the Objective-C language released in Mac OS X v10.6, which introduces the associative references feature.
- Objects, Classes, and Messaging
- Defining a Class
- Allocating and Initializing Objects
- Declared Properties
- Categories and Extensions
- Associative References
- Fast Enumeration
- Enabling Static Behavior
- Exception Handling
- Remote Messaging
- Using C++ With Objective-C
Online HTML: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html
- Editor: Allen Cypher
- Format: online HTML
- Price: free
This book grew out of a workshop on Programming by Demonstration that was held at Apple Computer in March, 1992. The workshop was an opportunity for current researchers to discuss their work with the pioneers in the field. David Smith demonstrated a HyperCard simulation of his Pygmalion system, which was the first system for programming by demonstration and the inspiration for the work that has followed. Henry Lieberman ported his classic Tinker system to the Macintosh so that he could give a live demonstration at the workshop. This was followed by classic videos of the early systems, live demonstrations of the newer systems, and open discussion on topics in the field.
This book is not only intended for individuals who are actively working in the field of programming by demonstration. We have aimed to make this material accessible and interesting to a larger audience: students and researchers with an interest in end user programming, and individuals interested in user interface design and agent-based systems. It is not a book about machine learning or artificial intelligence. Rather, the focus is on ways to create the appropriate human-computer interaction so that end users can gain more control of their personal computers.
The motivation behind Programming by Demonstration is simple and compelling: if a user knows how to perform a task on the computer, that should be sufficient to create a program to perform the task. It should not be necessary to learn a programming language like C or BASIC. Instead, the user should be able to instruct the computer to “Watch what I do”, and the computer should create the program that corresponds to the user’s actions. This book investigates the various issues that arise in trying to make this idea practical. The first section of the book describes 18 computer implementations of Programming by Demonstration, and the second section discusses the problems and opportunities for Programming by Demonstration (PBD) in more general terms.
- Pygmalion: An Executable Electronic Blackboard
- Tinker: A Programming by Demonstration System for Beginning Programmers
- A Predictive Calculator
- Rehearsal World: Programming by Rehearsal
- SmallStar: Programming by Demonstration in the Desktop Metaphor
- Peridot: Creating User Interfaces by Demonstration
- Metamouse: An Instructible Agent for Programming by Demonstration
- TELS: Learning Text Editing Tasks from Examples
- Eager: Programming Repetitive Tasks by Demonstration
- Garnet: Uses of Demonstrational Techniques
- The Turvy Experience: Simulating an Instructible Interface
- Chimera: Example-Based Graphical Editing
- The Geometer’s Sketchpad: Programming by Geometry
- Tourmaline: Text Formatting by Demonstration
- A History-Based Macro by Example System
- Mondrian: A Teachable Graphical Editor
- Triggers: Guiding Automation with Pixels to Achieve Data Access
- The AIDE Project: An Application-Independent Demonstrational Environment
- A History of Editable Graphical Histories
- Graphical Representation and Feedback in a PBD System
- PBD Invocation Techniques: A Review and Proposal
- A System-Wide Macro Facility Based on Aggregate Events: A Proposal
- Making Programming Accessible to Visual Problem Solvers
- Using Voice Input to Disambiguate Intent
- Characterizing PBD Systems
- Demonstrational Interfaces: A Step Beyond Direct Manipulation
- Just-in-time Programming