Notes
Slide Show
Outline
1
SmallScript Language System
Native Host Service Integration
Modular Applications, Services and Components

  • David Simmons
    Sean Simmons
    SmallScript LLC
2
Our Plan Today
  • We have roughly 2.5 hours
  • We will take a break from 10:15 to 10:45
  • We have the 4.0.0.1620 Technology Preview
    • CD Form
    • PCMCIA Memory Disk Card
    • And it is available from the www.smallscript.org site
3
Our Plan Today [2]
  • Distribute CD’s at the end of the talk
  • Discuss what the SmallScript Dynamic Language System, and what it is not.
    • Talk about the AOS Platform
    • Talk about the .NET Platform
4
Our Plan Today [3]
  • Technology Preview SDK
    • Deployment Elements [Installer]
    • Installed Elements and Organization
    • Standard Tools
    • What you can expect from us now and in the near term future
      • IDE Facilities; SmallScript.AOS and VBScript.AOS Languages
      • VisualStudio.NET and the AOS.NET.Enabler
      • SmallScript SDK CHM File
        • Language Guide
        • Framework Overview
        • Tutorials
      • SmallScript Web Community Portal
      • What is: free?; commercial?; the business focus?
5
Our Plan Today [4]
  • Technical Foundations
    • What is an object?
    • What is a class?
    • What is a script?
    • What is a module, DLL, assembly, etc
    • What is the process to go from source to executable code?
      • Interactive Script Compilation and Execution
      • Classic Build Processes to Produce Deployment Binaries
6
Our Plan Today [5]
  • Languages and Tools Introduction
    • Source forms and Management
      • File Based, Repository Based
    • Creating a: Application;  DLL
    • Interactive Scripting and Classic Smalltalk Browsing
    • The Language: AML, SmallScript
      • Classes, Methods, Enums, Evals
      • Namespaces, Fields, Imports, Implements
      • Signature, Control Flow, Keywords, Features

7
Our Plan Today [6]
  • Discussion and Overview of the Frameworks
    • Language Infrastructure [MOP], Numerics, Collections, Specifiers, GUI Elements, other
    • .NET Frameworks
8
Our Plan Today [7]
  • The GUI Facilities and Browser Toolkit
    • Simple Window; Menu, Toolbars, Events
    • Graphics; Canvases; Media Objects
    • Browser Toolkit Elements
      • Goals
      • Views and Models
      • Extending Context Nodes; Leaf Entities; Value Presentations
9
Our Plan Today [8]
  • Audience Driven Exploration
    • Language Features
    • Framework Features
    • Solution Examples
    • Suitable Tasks and Best Approaches
    • Cross-dialect Portability
    • Microsoft’s .NET and WebServices
    • SmallScript and You
10
SmallScript Language System
Darwinian Evolution of Smalltalk
  • SmallScript: The Language
    • Superset of classic Smalltalk with rich integration of static, dynamic and scripting language features
    • Based on a decade of commercial Smalltalk Implementation Experience
  • Agents Object System [VM Option #1] Platform
    • 4th Generation Dynamic Language Runtime
    • First generation developed in 1991
    • Focus on Simplification through Unification
    • Pluggable JITTER Architecture, Unified Object Model, Flexible Deployment Based on Mainstream Industry Standards
  • Microsoft’s .NET [VM Option #2] Platform
    • AOS.ON.NET Enabler
    • AOS.TO.NET JIT Compiler for generating standard .NET managed code components
11
SmallScript Language System
  • Support Mainstream Component and Application Deployment Technologies
    • Shared Library Modularization
    • Binary Deployment Standards
    • Emerging Metadata Standards
  • Rebuild Smalltalk from the ground up
    • modularized
    • lightweight
    • scale from scripting to complex systems
  • Extend the language
    • to support scripting
    • to support familiar imperative style and constructs
    • to support optional typing
  • Support Mainstream File Based Development
    • Enable use with popular IDE tools and processes
  • Extend the language
    • to provide transparent FFI
    • to provide intrinsic component facilities
  • Augment the language
    • to provide declarative facilities
    • to provide repository facilities compatible with Binary Deployment Standards such as COFF/ELF
  • Provide a Common Dynamic Language Architecture
    • Support all classic Smalltalk features
    • Support all current Scripting Language Features
    • Support all current Lisp/Scheme Language Features



12
Key Object System Features
  • Lightweight, Modular, Multi-threaded Architecture
  • Rich Dynamic Object Model and MOP services
  • Extensible Binding Predicates
  • Optional Typing for Marshalling and Multi-methods
  • Class and Instance Specific Structure and Behavior
  • Modules distinct from Namespaces
  • Interfaces as First Class Mixin and Aggregation Entities
  • Selector Namespaces to manage change and dynamic privileges
  • Facilities to Manage Contextual Relativity
    • Weaving & Entanglement
    • Sandboxes
13
What is an Object?
14
What is a Class?
  • Unit of Behavior
    • Inheritance of Implementation
      • SI via a single Superclass
      • MI through Aspects
        [Interfaces and Mixins]
    • Methods for The Class
      • A Function
    • Methods for Instances
      • A Member Function
  • Unit of Metadata
    • Mutable Repository
    • Arbitrarily extensible
    • Reflectively queryable
  • Unit of Structure
    • Constructor of Objects
    • Single Inheritance of Layout of Fields
      • Reference Types (Slots)
      • Value Types (Bits/Structs)
    • Intrinsic Aggregation and MI Composition through Interfaces
  • Unit of Privilege/Scope
    • Namespace
      • Container of shared fields (variables)
      • Scope for Message Selectors
    • Inheritance of Scope
      • SI via a single Superscope
      • MI through Importing

15
What is a Module?
  • Units of packaging and deployment
  • Repositories of Code and Media
  • Manifests of Version and Security Data
  • Implemented Using Mainstream Standards
    • COFF, PE, ELF, CodeFragments
    • Shared Libraries, DLL’s, EXE’s, OCX, CPL, etc
16
What is a Script?
  • Independent Unit Executable Source
    • Easily created with basic text editing tools or automatic generation
    • Easily modified with basic text editing tools
  • Text Based Files and Chunks
    • Well suited for providing small ad-hoc operational chunks within some larger application or system context
  • By and for Human Beings
    • Is for humans to communicate structure and commands to software systems
    • Not for software to talk to other software
  • Substitutable for compiled binary executable software formats
    • Acceptable performance for repeated execution and stream based call chaining
    • Well suited for use in stdio streaming and text processing through program piping
17
SmallScript in Action
Hello World: The Script
  • [stdout cr << ‘Hello World’]
18
SmallScript in Action
Hello World: The EXE
19
What is the process to go from source to executable code?
  • Interactive Script Compilation and Execution
  • Classic Build Processes to Produce Deployment Binaries


20
AML and SmallScript
  • AML is XML with flexible syntax
    • AOS Object Model Declarations
  • SmallScript is AML+Smalltalk
    • Principally when we talk about SmallScript we actually mean the body of an AML method token.
  • See Example…
21
Frameworks
  • Language Infrastructure [MOP], Numerics, Collections, Specifiers, GUI Elements, other
  • .NET Frameworks
22
The GUI Facilities and Browser Toolkit
  • Simple Window; Menu, Toolbars, Events
  • Graphics; Canvases; Media Objects
  • Browser Toolkit Elements
    • Goals
    • Views and Models
    • Extending Context Nodes; Leaf Entities; Value Presentations

23
SmallScript in Action
Interfaces: Collection Example
  • Thread Safety
  • Around Behavior
24
SmallScript in Action
Selector Namespaces
25
SmallScript in Action
Typing: Callbacks and FFI
26
SmallScript in Action
Multimethods, Closures
  • Numerics
    • Double Dispatch
  • Multiple Arguments…
  • Type Composition Algebra
    • Binding Predicates
    • Parameterized Types
27
SmallScript in Action
Sandboxes