Skip to content

Threads

Juan Vuletich edited this page Aug 19, 2020 · 21 revisions

Several threads: Smalltalk Concepts, Environment, Class Library, Tools, Language, Spacewar! Not sure about book sections. Maybe this structure is for the whole book, or maybe just for Part I, with a selection of topics, and maybe leave more advanced topics for a mor conventional Part II and Part III.

Threads to be developed along the book

Preface

Should not tell too much about philosophy or history! Tell about general objectives of Cuis, and this book. Structure of the book. Introduce Spacewar!

Smalltalk Design and Ideas.

  • Philosophy (abridged) What do we mean by 'programming'? What is code? What does it mean to reuse knowledge built by others? Make paralells with the sciences, engineering and arts.
  • History (abridged) The Dynabook as a new medium. Is Smalltalk-80 a Dynabook? Smalltalk-80 today.
  • Objectives and general attitude of Smalltalk.
  • Fundamental Concepts: instances, messages, methods, messages send, expression evaluation.
  • Smalltalk-80 specifics. classes. sends wait for return values. async processes, separate images.
  • Smalltalk-80 specifics. Pseudovariables. Symbols Immutable and regular objects. Variable name scoping.
  • Smalltalk-80 specifics. References. Garbage collection.
  • Smalltalk-80 specifics. Closures. Trivial, clean closures. Closures with (hidden) state.
  • Smalltalk-80 specifics. References. Garbage collection. Weak references. Ephemerons.
  • Morphic. What is a user interface? How should a UI be built if it is to follow the Smalltalk strategies?
  • The VM. Boundary of the Smalltalk world, and connection with the hardware and OS.
  • History. More detailed. Smalltalk @ Xerox. Commercial Smalltalks. Squeak and Open Source Smalltalks.
  • Future. What Smalltalk wants to be and hasn't reached yet. Current challenges: technical, short term; philosophycal, long term.

Environment.

Morphic. (HowTo for beginners. Guide the user through the navigation of the system)

  • Installing and starting Cuis
  • World Menu. Text editor Menus.
  • Keyboard shortcuts
  • Preferences. Font sizes. TrueType fonts.
  • SystemWindows
  • Taskbar
  • Basic Morphs. Halos. Clipboard. Morphs in clipboard. Morphs in text. References to morphs in Workspaces.
  • Focus. Events. Event handling.
  • More advanced topics. VM. Portability. Image and code files.

Class library

(kernel image, optional packages). Include interesting, instructive, fun examples. Point to the code!)

  • String basics (Examples. No classes!)
  • Number basics
  • Transcript basics. (basic protocol, informal)
  • String
  • Boolean
  • Collection basics
  • Numerics (bases, representations)
  • Collection advanced topics
  • Morphic
  • MorphicWindows. Models and Views.
  • Events
  • Process. Processor. Priorities.
  • Sound
  • Additional packages in the main repo (in detail!)
  • Additional packages in the organization (in detail!)
  • Additional packages and projects.

Tools

  • Workspace and Transcript. Evaluation of expressions.
  • Browsers. Class and method categories. Exploring a class: definition, comment, instance methods, class methods, protocol, hierarchy. Writing code: class, method. Searching: class, users, implementers, senders.
  • Inspector
  • Debugger. Restart. Step: into, over, through.
  • Object Explorer
  • Message List
  • Reference Explorer
  • Change Sorter
  • File List. Changeset files. Changes List. File Browser.
  • Installed Packages. Package files.
  • Save the image or don't save the image? Managing source code.
  • Process List. CPUWatcher.
  • Emergency Evaluator

Language elements

  • Numeric literals
  • Syntax examples: unary, binary, keyword messages.
  • Syntax. Basic control flow.
  • Variables
  • Binary messages
  • Unary messages
  • Keyword messages. Control flow is messages!
  • Precedence
  • Pseudo variables (maybe move upwards)
  • Class categories. Method Cagegories. (Does it belong to this thread? For me this is the tools (browser) thread. Hilaire . I believe it belongs in both. Class and method categories are specified in code files. If we say code files hold code, then they are part of the code, and the language. Juan )
  • Code Packages.
  • ChangeSets.
  • Serialization
  • Multithreading. Access protection.
  • Model - View decoupling in Morphic
  • Primitives. Numbered and Named. VM plugins. FFI.

Spacewar! Development of a game

  • Description and significance
  • Elements of a game
  • Models
  • Graphics
  • Simulation
  • Interaction
  • Control