From Philosophy to Practice A Complete Guide to the Language That Invented Object-Oriented Programming
- About This Book
Introduction
- What You Will Learn
- Who This Book Is For
- How to Read This Book
- A Note on Implementations
- Why This Matters Now
Chapter 1: The Birth of a Revolution
- The Xerox PARC Years (1970–1980)
- Alan Kay’s Vision: Objects as Living Things
- Smalltalk-72, -74 and -80: A Brief Evolution
- The Influence on Modern Computing
- Why Learn Smalltalk Today?
Chapter 2: Your First Steps in Smalltalk
- Choosing an Implementation (Pharo, Squeak, GNU Smalltalk)
- Installing and Launching Your Environment
- The Smalltalk Desktop: Overview of Tools
- The Workspace: Your Interactive Playground
- Image-Based Development vs File-Based Development
- Running Your First Code: Hello World and Beyond
Chapter 3: Everything Is an Object
- Objects, Classes and Instances Explained
- Message Passing as Computation
- The Hierarchy: Object at the Root
- Literals Are Objects Too (Numbers, Strings, Characters)
- Nil, True, False: Special Objects with Power
Chapter 4: Syntax and Expressions
- Variables: Temporal, Instance, Class and Global
- Assignment and Binding Semantics
- Expression Evaluation Rules
- Comments and Documentation Conventions
- Whitespace, Line Breaks and Readability
- Common Syntax Mistakes and How to Avoid Them
Chapter 5: Messages The Heart of Smalltalk
- Unary Messages: No Arguments
- Binary Messages: Operators as Messages
- Keyword Messages: Named Arguments
- Message Cascades: Fluent Style
- Precedence and Evaluation Order
- Undeliverable Messages and Error Handling Basics
Chapter 6: Classes, Methods and Encapsulation
- Defining a Class: Syntax and Structure
- Instance Variables and Accessors (Getters/Setters)
- Methods: Defining Behavior
- Self and Super: Identity and Delegation
- Class Methods vs Instance Methods
- Encapsulation Without Access Modifiers
Chapter 7: Inheritance and Polymorphism
- The Inheritance Hierarchy in Detail
- Method Lookup and Dispatch
- Overriding and Extending Behavior
- Polymorphism: Sending Messages Without Knowing Types
- Abstract Classes and Interfaces (Protocols)
- Composition vs Inheritance in Smalltalk
Chapter 8: Blocks and Closures
- Block Syntax and Literals
- Blocks as First-Class Objects
- Lexical Scoping and Closure Semantics
- Return Behavior: Block Return vs Method Return
- Blocks in Control Structures (ifTrue:, whileTrue:)
- Practical Patterns with Blocks
Chapter 9: Collections and Iteration
- The Collection Hierarchy Overview
- OrderedCollections and Arrays
- Sets and Bags
- Dictionaries and IdentityDictionaries
- Iteration with Blocks (do:, select:, reject:, inject:)
Chapter 10: Control Flow, Exceptions and Robustness
- Conditional Execution (ifTrue:, ifFalse:, ifTrue:ifFalse:)
- Loops Without Keywords (whileTrue:, to:do:)
- Exception Handling Framework
- Resuming vs Returning from Exceptions
- Assertions and Invariants
- Defensive Programming Patterns
Chapter 11: The Smalltalk Environment in Depth
- The System Browser: Navigating Code
- The Inspector: Examining Live Objects
- The Debugger: Interactive Error Recovery
- The Workspace and Transcript
- Refactoring Tools and Live Modification
- Why This Matters: The Smalltalk Way of Working
Chapter 12: Reflection, Metaprogramming and the Object Model
- The Object Model: Classes Are Objects Too
- Metaclasses Explained
- Method Dictionaries and Lookup Chains
- Runtime Introspection (species, class, respondsTo:)
- Dynamic Code Modification (compile:, removeSelector:)
- Build Your Own Domain-Specific Languages
Chapter 13: Testing and Quality Assurance
- The Built-In Testing Framework (TestCase, assert:)
- Writing Your First Tests
- Test Organization and Naming Conventions
- Mocking and Stubbing Techniques
- Continuous Integration with Smalltalk
- Refactoring Safely with Tests
Chapter 14: Persistence and Storage
- Image-Based Persistence: The Default Approach
- Object Serialization (FileStream, BinaryOrTextStream)
- Database Integration with SQL
- Glorp: An ORM for Smalltalk
- Designing for Persistence from the Start
Chapter 15: Concurrency and Parallelism
- Processes and Scheduling
- Creating and Managing Threads
- Synchronization: Semaphores, Mutexes, CriticalSections
- Shared State and Thread Safety
- Message Passing for Concurrency
- Performance Considerations in Concurrent Code
Chapter 16: Performance, Optimization and the Virtual Machine
- The Smalltalk Virtual Machine Architecture
- Compilation Model: Source to Bytecode
- Garbage Collection Strategies
- Primitives and Native Code Interfacing
- Foreign Function Interface (FFI)
- Profiling and Performance Tuning
Chapter 17: Application Architecture and Design Patterns
- Packages and Code Organization
- Model-View-Controller in Smalltalk
- Dependency Management and Monticello
- Design Patterns in Smalltalk Style
- Building Reusable Frameworks
- Large-Scale Application Architecture
Chapter 18: Deployment, Ecosystem and the Future
- Deploying Smalltalk Applications
- Web Development (Seaside, Zinc)
- Headless and Server-Side Smalltalk
- The Modern Ecosystem Landscape
- Learning Resources and Community
- Smalltalk’s Enduring Legacy

