Outline of a talk on "Why I Still Use Smalltalk" for comments

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Outline of a talk on "Why I Still Use Smalltalk" for comments

Stephen Pope

Hello all,

I'm planning to give a colloquium called "Why I Still Use Smalltalk" for the graduate students at UCSB, and wanted to solicit your comments on the outline.

stp

--------------------

Why I Still Use Smalltalk

Graduate Colloquium
UCSB Graduate Program in Media Arts and Technology
November, 2012
Stephen Travis Pope, [hidden email]

--------------------

Proposal

Title: Why I Still Use Smalltalk

Abstract

The Smalltalk-80 programming system is celebrating its 30th birthday this year (Smalltalk-80 version 2 was released and documented in a series of books in 1982). The system was the first popular software development tool that incorporated a number of features we take for granted today, including an object-oriented programming language, a comprehensive open-source class library, an integrated window-based development environment, and a cross-platform virtual-machine-based delivery system. Nevertheless, Smalltalk has nowhere near the installed base or the mindshare of lesser peers such as C++ or Java, or more modern descendants such as Python or Ruby. This talk will introduce the Smalltalk system's language, libraries and tools, outline its history, and discuss the reasons why it is not more widely used. Several aspects of the Smalltalk system make it especially good for developing multimedia applications, and these will be introduced with examples from the last 30 years. The presenter was among the very first to use Smalltalk for real-world applications, and worked on the Smalltalk team at Xerox PARC and their spin-off ParcPlace Systems from 1986-94. He still uses Smalltalk (now available in both commercial and free versions) for his day-to-day work.

Presenter

Stephen Travis Pope is a software engineer and composer based in Santa Barbara. He taught at UCSB (in the departments of Music and Computer Science, and the Graduate Program in Media Arts and Technology) from 1996-2010, and is now known as FASTLabInc.com (for multimedia software) and HeavenEverywhere.com (for music and film).

----------------------------

Outline
Introduction
Demo
What Is Smalltalk?
The Language
The Libraries
The Environment
A Brief History
Smalltalk Leaves PARC
C++, ObjectiveC and Java
Smalltalk Today
Why I Still Use Smalltalk

Introduction
Overview
My background in 1981

Demo
Counter Example with GUI

What Is Smalltalk?
Language
Libraries
Tools, IDE
Methodology
Note: "OO is not Enough!"

The Language
Terse, expressive, readable
Everything is an Object (really, everything)
All activity is message-passing
Trivial syntax, no reserved words
true, false, nil, self, super, thisContext
Control structures written in Smalltalk
Messages to Booleans, Blocks, etc.
Means they're extensible (!)
aCollection do: [ :item | Transcript show: item printString]
Keyword syntax - messages with > 1 argument alternate keyword/argument…
anArray at: 1  (getter)
anArray at: 1 put: 'hello'  (setter)
r := Rectangle top: 1 left: 1 width: 10 height: 10
Fully Reflective
(isKindOf:, understands:, …)
Compiles to a virtual machine language (normally)

The Libraries
Everything is an Object
Polymorphism (heavily used)
E.g., many implementations of at:put: or +
OO Design Patterns
Composite, Adaptor, Singleton, MVC, Visitor, …
Magnitudes, Collections and Streams
Graphics and Windows
All classes are extensible (!)
Example: aString asPath: sepChar
Try this in C++ or ObjC...

The Methodology
OO A/D Methods (OBA)
OO Design Patterns
Domain-specific Languages

The Tools
Window-based GUI and Tools
Multi-desktop (Projects)
Browsers, Inspectors and Editors
Rules of Reuse (Programmer as Reader project)
Pluggable look-and-feel
Code-sharing tools: change-lists, Envy
Open-source Tools (!!)

Tool Demo
Browsers
Code in DB package, class, category, method
Compile 1 method at a time
"Programmer as Reader" facilities
Senders, implementors, class/variable references
Flavors of browsers: protocol, hierarchy, namespace, etc.
Debugger
Just like the browser(!!!)
Fix and continue
CASE Tools
Change lists, packages, projects

The Environment
VI/VM Architecture
VI like APL workspaces, LISP core files
Snapshot/restart (relation to BOSS files)
VM - "cheat but don't get caught"
Thinks it's an operating system
"The OS is only there for all the things you forgot to put in the language"
Scheduler, file system, network drivers, etc. in Smalltalk
Light-weight processes and scheduler in Smalltalk
Simple VM: Byte-code interpreter
High-performance VM: JIT Optimizing
Native code caches
Polymorphic inline caches

Other Novel Aspects
Other languages in Smalltalk (Lisp, Prolog, etc.)
Compiler frameworks
Smalltalk-as-OS (running on naked hardware)
OOP and AI 
Frames/objects, rules, logic, etc.
Early "block diagram compilers"

Smalltalk and Multimedia
Early Computer Graphics
BitBLT pixel graphics
SPIM and graphics contexts
Music with Smalltalk
Real-time FM on the Alto
Real-time scheduling for MIDI
Music notations in Smalltalk

Early (1980s) Applications
ThingLab
ThinkerToy
Graphical programming
Analyst
AI, Multimedia, Graphical Programming
Chinese Temple Design ToolKit
Models of process
MOBY, DoubleTalk
Petri Nets
ObjectWorks/C++
ST-like IDE for C++

Early (1980s) Music Applications
HyperScore ToolKit/MODE
Music composition and notations
SoundKit
Music signal processing
Kyma
Cross-compilation for a DSP
Harmonic Analysis Tool
Chord/Harmony analysis expert system
Smoke
Flexible music representation language

The Risks
Breaking the system (really easy)
Also easy to recover
VI Bloat
Strippers, Whittlers
Incompatible changes
Tools for merging packages

A Brief History
Flex and Smalltalk-72
Simula, Sketchpad, Augment and other precursors
PARC Learning Research Group
Smalltalk-76 and the Xerox Alto
Mostly ASCII
Personal Dynamic Media Paper in "Computer" 3/1977
Smalltalk-78
Browser, NoteTaker project
Smalltalk-80 V1
3rd complete rewrite before they had an installed user base
LRG now Systems Concepts Lab
1981 Byte Magazine Special Issue
Context: Xerox Alto, MIT LISP Machines
Smalltalk-80 V2
Incorporated feedback from first-round users
MVC used for all GUIs
Late-80s changes
Exceptions and I/O
Host window system interface
DLLCC
Compiler Framework
Namespaces, Packages
ANSI Smalltalk (1993-98)

Smalltalk Leaves PARC
Getting Smalltalk to Users
(Porting to non-Xerox hardware)
Early licensees: Apple, H-P, Tektronix
Berkeley SOAR and SPARC design
XSIS and the Analyst
ParcPlace Systems (spun off in 1988)
Digitalk's Smalltalk/V on early PCs (1984)
These merge in 1995
GNU Smalltalk (free)

C++, ObjectiveC and Java
C with Classes - hybrid language; class is like a struct
ObjectiveC - C + Smalltalk in 1 program
Java ("what a shame they didn't copy everything.")

Why it failed (in the 1990s)
Price (relative to what?)
Perception of compute demands (requires graphics and mouse, lots of RAM, …)
Performance Issues
VM performance and optimization
GC overhead and generation scavenging
Performance much better on Xerox machines
VM in microcode
Tagged architecture
Not upward compatible with anything
"Everything you know is wrong"
C hybrids appeared to get you most of the way there…

Smalltalk Implementations
Cincom Smalltalk (commercial)
ObjectStudio (commercial)
Squeak (free, based on Apple V1)
Pharo (stripped Squeak)

Coral (for scripting)
Amber (runs on JavaScript VM)
Bistro (runs on JavaScript VM)
S# (runs with .NET)

Smalltalk/X
VisualAge
Dolphin

Smalltalk Today
DLLCC and Slang
Seaside (for web apps)
Gemstone (scalable OODB)

STIC/ESUG
Squeak community

Relatives/Derivatives
ObjectiveC
Self (no classes, VM advances)
Lively (JavaScript libraries and tools)
F-Script
Strongtalk
SuperCollider

Reasons Why I Still Use Smalltalk
3 top reasons: Productivity, productivity and productivity
Language features
Simplicity, scalability, stability
Keyword syntax (!!)
Library features
Comprehensive, consistent, stable, extensible (!!)
All source close at hand
Pluggable L&F
Development Environment
Open tools (!!!)
Integrated, cross-platform
Fix/restart in debugger (!!!)
VI/VM architecture
Code lives in DB, easy change management, publication, crash recovery, etc. (!)

Why I complain about other languages
"Object-Oriented is not Enough" (Goldberg & Pope 1989 article)
“The Computer Revolution Hasn’t Happened Yet“ (A Kay quote)
Issues center on libraries and tools rather than the languages themselves
Lively for JavaScript
?? for Python

What I do use (other than Smalltalk)
C++
Standard, fast
XCode
Python
Hybrid language
Good libraries (inconsistent, non-OO)
Poor tools
Good integration with C/C++ via ctypes
Curse of version 3
Octave/MATLAB
Terse, good matrix support
Extensive code base


--

  Stephen Travis Pope   Santa Barbara, California, USA    http://HeavenEverywhere.com
 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Outline of a talk on "Why I Still Use Smalltalk" for comments

Mircea Filip Lungu-2
Small observation: there is also GNU Smalltalk out there :)

Cheers,
M.

On Fri, Oct 26, 2012 at 9:47 PM, Stephen Travis Pope <[hidden email]> wrote:

Hello all,

I'm planning to give a colloquium called "Why I Still Use Smalltalk" for the graduate students at UCSB, and wanted to solicit your comments on the outline.

stp

--------------------

Why I Still Use Smalltalk

Graduate Colloquium
UCSB Graduate Program in Media Arts and Technology
November, 2012
Stephen Travis Pope, [hidden email]

--------------------

Proposal

Title: Why I Still Use Smalltalk

Abstract

The Smalltalk-80 programming system is celebrating its 30th birthday this year (Smalltalk-80 version 2 was released and documented in a series of books in 1982). The system was the first popular software development tool that incorporated a number of features we take for granted today, including an object-oriented programming language, a comprehensive open-source class library, an integrated window-based development environment, and a cross-platform virtual-machine-based delivery system. Nevertheless, Smalltalk has nowhere near the installed base or the mindshare of lesser peers such as C++ or Java, or more modern descendants such as Python or Ruby. This talk will introduce the Smalltalk system's language, libraries and tools, outline its history, and discuss the reasons why it is not more widely used. Several aspects of the Smalltalk system make it especially good for developing multimedia applications, and these will be introduced with examples from the last 30 years. The presenter was among the very first to use Smalltalk for real-world applications, and worked on the Smalltalk team at Xerox PARC and their spin-off ParcPlace Systems from 1986-94. He still uses Smalltalk (now available in both commercial and free versions) for his day-to-day work.

Presenter

Stephen Travis Pope is a software engineer and composer based in Santa Barbara. He taught at UCSB (in the departments of Music and Computer Science, and the Graduate Program in Media Arts and Technology) from 1996-2010, and is now known as FASTLabInc.com (for multimedia software) and HeavenEverywhere.com (for music and film).

----------------------------

Outline
Introduction
Demo
What Is Smalltalk?
The Language
The Libraries
The Environment
A Brief History
Smalltalk Leaves PARC
C++, ObjectiveC and Java
Smalltalk Today
Why I Still Use Smalltalk

Introduction
Overview
My background in 1981

Demo
Counter Example with GUI

What Is Smalltalk?
Language
Libraries
Tools, IDE
Methodology
Note: "OO is not Enough!"

The Language
Terse, expressive, readable
Everything is an Object (really, everything)
All activity is message-passing
Trivial syntax, no reserved words
true, false, nil, self, super, thisContext
Control structures written in Smalltalk
Messages to Booleans, Blocks, etc.
Means they're extensible (!)
aCollection do: [ :item | Transcript show: item printString]
Keyword syntax - messages with > 1 argument alternate keyword/argument…
anArray at: 1  (getter)
anArray at: 1 put: 'hello'  (setter)
r := Rectangle top: 1 left: 1 width: 10 height: 10
Fully Reflective
(isKindOf:, understands:, …)
Compiles to a virtual machine language (normally)

The Libraries
Everything is an Object
Polymorphism (heavily used)
E.g., many implementations of at:put: or +
OO Design Patterns
Composite, Adaptor, Singleton, MVC, Visitor, …
Magnitudes, Collections and Streams
Graphics and Windows
All classes are extensible (!)
Example: aString asPath: sepChar
Try this in C++ or ObjC...

The Methodology
OO A/D Methods (OBA)
OO Design Patterns
Domain-specific Languages

The Tools
Window-based GUI and Tools
Multi-desktop (Projects)
Browsers, Inspectors and Editors
Rules of Reuse (Programmer as Reader project)
Pluggable look-and-feel
Code-sharing tools: change-lists, Envy
Open-source Tools (!!)

Tool Demo
Browsers
Code in DB package, class, category, method
Compile 1 method at a time
"Programmer as Reader" facilities
Senders, implementors, class/variable references
Flavors of browsers: protocol, hierarchy, namespace, etc.
Debugger
Just like the browser(!!!)
Fix and continue
CASE Tools
Change lists, packages, projects

The Environment
VI/VM Architecture
VI like APL workspaces, LISP core files
Snapshot/restart (relation to BOSS files)
VM - "cheat but don't get caught"
Thinks it's an operating system
"The OS is only there for all the things you forgot to put in the language"
Scheduler, file system, network drivers, etc. in Smalltalk
Light-weight processes and scheduler in Smalltalk
Simple VM: Byte-code interpreter
High-performance VM: JIT Optimizing
Native code caches
Polymorphic inline caches

Other Novel Aspects
Other languages in Smalltalk (Lisp, Prolog, etc.)
Compiler frameworks
Smalltalk-as-OS (running on naked hardware)
OOP and AI 
Frames/objects, rules, logic, etc.
Early "block diagram compilers"

Smalltalk and Multimedia
Early Computer Graphics
BitBLT pixel graphics
SPIM and graphics contexts
Music with Smalltalk
Real-time FM on the Alto
Real-time scheduling for MIDI
Music notations in Smalltalk

Early (1980s) Applications
ThingLab
ThinkerToy
Graphical programming
Analyst
AI, Multimedia, Graphical Programming
Chinese Temple Design ToolKit
Models of process
MOBY, DoubleTalk
Petri Nets
ObjectWorks/C++
ST-like IDE for C++

Early (1980s) Music Applications
HyperScore ToolKit/MODE
Music composition and notations
SoundKit
Music signal processing
Kyma
Cross-compilation for a DSP
Harmonic Analysis Tool
Chord/Harmony analysis expert system
Smoke
Flexible music representation language

The Risks
Breaking the system (really easy)
Also easy to recover
VI Bloat
Strippers, Whittlers
Incompatible changes
Tools for merging packages

A Brief History
Flex and Smalltalk-72
Simula, Sketchpad, Augment and other precursors
PARC Learning Research Group
Smalltalk-76 and the Xerox Alto
Mostly ASCII
Personal Dynamic Media Paper in "Computer" 3/1977
Smalltalk-78
Browser, NoteTaker project
Smalltalk-80 V1
3rd complete rewrite before they had an installed user base
LRG now Systems Concepts Lab
1981 Byte Magazine Special Issue
Context: Xerox Alto, MIT LISP Machines
Smalltalk-80 V2
Incorporated feedback from first-round users
MVC used for all GUIs
Late-80s changes
Exceptions and I/O
Host window system interface
DLLCC
Compiler Framework
Namespaces, Packages
ANSI Smalltalk (1993-98)

Smalltalk Leaves PARC
Getting Smalltalk to Users
(Porting to non-Xerox hardware)
Early licensees: Apple, H-P, Tektronix
Berkeley SOAR and SPARC design
XSIS and the Analyst
ParcPlace Systems (spun off in 1988)
Digitalk's Smalltalk/V on early PCs (1984)
These merge in 1995
GNU Smalltalk (free)

C++, ObjectiveC and Java
C with Classes - hybrid language; class is like a struct
ObjectiveC - C + Smalltalk in 1 program
Java ("what a shame they didn't copy everything.")

Why it failed (in the 1990s)
Price (relative to what?)
Perception of compute demands (requires graphics and mouse, lots of RAM, …)
Performance Issues
VM performance and optimization
GC overhead and generation scavenging
Performance much better on Xerox machines
VM in microcode
Tagged architecture
Not upward compatible with anything
"Everything you know is wrong"
C hybrids appeared to get you most of the way there…

Smalltalk Implementations
Cincom Smalltalk (commercial)
ObjectStudio (commercial)
Squeak (free, based on Apple V1)
Pharo (stripped Squeak)

Coral (for scripting)
Amber (runs on JavaScript VM)
Bistro (runs on JavaScript VM)
S# (runs with .NET)

Smalltalk/X
VisualAge
Dolphin

Smalltalk Today
DLLCC and Slang
Seaside (for web apps)
Gemstone (scalable OODB)

STIC/ESUG
Squeak community

Relatives/Derivatives
ObjectiveC
Self (no classes, VM advances)
Lively (JavaScript libraries and tools)
F-Script
Strongtalk
SuperCollider

Reasons Why I Still Use Smalltalk
3 top reasons: Productivity, productivity and productivity
Language features
Simplicity, scalability, stability
Keyword syntax (!!)
Library features
Comprehensive, consistent, stable, extensible (!!)
All source close at hand
Pluggable L&F
Development Environment
Open tools (!!!)
Integrated, cross-platform
Fix/restart in debugger (!!!)
VI/VM architecture
Code lives in DB, easy change management, publication, crash recovery, etc. (!)

Why I complain about other languages
"Object-Oriented is not Enough" (Goldberg & Pope 1989 article)
“The Computer Revolution Hasn’t Happened Yet“ (A Kay quote)
Issues center on libraries and tools rather than the languages themselves
Lively for JavaScript
?? for Python

What I do use (other than Smalltalk)
C++
Standard, fast
XCode
Python
Hybrid language
Good libraries (inconsistent, non-OO)
Poor tools
Good integration with C/C++ via ctypes
Curse of version 3
Octave/MATLAB
Terse, good matrix support
Extensive code base


--

  Stephen Travis Pope   Santa Barbara, California, USA    http://HeavenEverywhere.com
 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc



_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Outline of a talk on "Why I Still Use Smalltalk" forcomments

Steven Kelly

Mircea: GNU Smalltalk is mentioned :)

 

Stephen: Very nice! I like the focus on “why I use Smalltalk” as opposed to “the rest of the world is stupid for not accepting Smalltalk”. In other languages the three things I find most annoying are not on that slide (although some are mentioned earlier as Smalltalk benefits):

- debugging and correcting on the fly is slow or impossible

- can’t extend system or library classes, override in-place or in subclass

- massive resource use makes for slow development environment

 

All the best with the talk,

Steve

 

Mircea Filip Lungu wrote Monday, October 29, 2012 11:01 AM:

Small observation: there is also GNU Smalltalk out there :)

 

Cheers,

M.

On Fri, Oct 26, 2012 at 9:47 PM, Stephen Travis Pope <[hidden email]> wrote:

 

Hello all,

 

I'm planning to give a colloquium called "Why I Still Use Smalltalk" for the graduate students at UCSB, and wanted to solicit your comments on the outline.

 

stp

 

--------------------

 

Why I Still Use Smalltalk

 

Graduate Colloquium

UCSB Graduate Program in Media Arts and Technology

November, 2012

Stephen Travis Pope, [hidden email]

 

--------------------

 

Proposal

 

Title: Why I Still Use Smalltalk

 

Abstract

 

The Smalltalk-80 programming system is celebrating its 30th birthday this year (Smalltalk-80 version 2 was released and documented in a series of books in 1982). The system was the first popular software development tool that incorporated a number of features we take for granted today, including an object-oriented programming language, a comprehensive open-source class library, an integrated window-based development environment, and a cross-platform virtual-machine-based delivery system. Nevertheless, Smalltalk has nowhere near the installed base or the mindshare of lesser peers such as C++ or Java, or more modern descendants such as Python or Ruby. This talk will introduce the Smalltalk system's language, libraries and tools, outline its history, and discuss the reasons why it is not more widely used. Several aspects of the Smalltalk system make it especially good for developing multimedia applications, and these will be introduced with examples from the last 30 years. The presenter was among the very first to use Smalltalk for real-world applications, and worked on the Smalltalk team at Xerox PARC and their spin-off ParcPlace Systems from 1986-94. He still uses Smalltalk (now available in both commercial and free versions) for his day-to-day work.

 

Presenter

 

Stephen Travis Pope is a software engineer and composer based in Santa Barbara. He taught at UCSB (in the departments of Music and Computer Science, and the Graduate Program in Media Arts and Technology) from 1996-2010, and is now known as FASTLabInc.com (for multimedia software) and HeavenEverywhere.com (for music and film).

 

----------------------------

 

Outline

Introduction

Demo

What Is Smalltalk?

The Language

The Libraries

The Environment

A Brief History

Smalltalk Leaves PARC

C++, ObjectiveC and Java

Smalltalk Today

Why I Still Use Smalltalk

 

Introduction

Overview

My background in 1981

 

Demo

Counter Example with GUI

 

What Is Smalltalk?

Language

Libraries

Tools, IDE

Methodology

Note: "OO is not Enough!"

 

The Language

Terse, expressive, readable

Everything is an Object (really, everything)

All activity is message-passing

Trivial syntax, no reserved words

true, false, nil, self, super, thisContext

Control structures written in Smalltalk

Messages to Booleans, Blocks, etc.

Means they're extensible (!)

aCollection do: [ :item | Transcript show: item printString]

Keyword syntax - messages with > 1 argument alternate keyword/argument…

anArray at: 1  (getter)

anArray at: 1 put: 'hello'  (setter)

r := Rectangle top: 1 left: 1 width: 10 height: 10

Fully Reflective

(isKindOf:, understands:, …)

Compiles to a virtual machine language (normally)

 

The Libraries

Everything is an Object

Polymorphism (heavily used)

E.g., many implementations of at:put: or +

OO Design Patterns

Composite, Adaptor, Singleton, MVC, Visitor, …

Magnitudes, Collections and Streams

Graphics and Windows

All classes are extensible (!)

Example: aString asPath: sepChar

Try this in C++ or ObjC...

 

The Methodology

OO A/D Methods (OBA)

OO Design Patterns

Domain-specific Languages

 

The Tools

Window-based GUI and Tools

Multi-desktop (Projects)

Browsers, Inspectors and Editors

Rules of Reuse (Programmer as Reader project)

Pluggable look-and-feel

Code-sharing tools: change-lists, Envy

Open-source Tools (!!)

 

Tool Demo

Browsers

Code in DB package, class, category, method

Compile 1 method at a time

"Programmer as Reader" facilities

Senders, implementors, class/variable references

Flavors of browsers: protocol, hierarchy, namespace, etc.

Debugger

Just like the browser(!!!)

Fix and continue

CASE Tools

Change lists, packages, projects

 

The Environment

VI/VM Architecture

VI like APL workspaces, LISP core files

Snapshot/restart (relation to BOSS files)

VM - "cheat but don't get caught"

Thinks it's an operating system

"The OS is only there for all the things you forgot to put in the language"

Scheduler, file system, network drivers, etc. in Smalltalk

Light-weight processes and scheduler in Smalltalk

Simple VM: Byte-code interpreter

High-performance VM: JIT Optimizing

Native code caches

Polymorphic inline caches

 

Other Novel Aspects

Other languages in Smalltalk (Lisp, Prolog, etc.)

Compiler frameworks

Smalltalk-as-OS (running on naked hardware)

OOP and AI 

Frames/objects, rules, logic, etc.

Early "block diagram compilers"

 

Smalltalk and Multimedia

Early Computer Graphics

BitBLT pixel graphics

SPIM and graphics contexts

Music with Smalltalk

Real-time FM on the Alto

Real-time scheduling for MIDI

Music notations in Smalltalk

 

Early (1980s) Applications

ThingLab

ThinkerToy

Graphical programming

Analyst

AI, Multimedia, Graphical Programming

Chinese Temple Design ToolKit

Models of process

MOBY, DoubleTalk

Petri Nets

ObjectWorks/C++

ST-like IDE for C++

 

Early (1980s) Music Applications

HyperScore ToolKit/MODE

Music composition and notations

SoundKit

Music signal processing

Kyma

Cross-compilation for a DSP

Harmonic Analysis Tool

Chord/Harmony analysis expert system

Smoke

Flexible music representation language

 

The Risks

Breaking the system (really easy)

Also easy to recover

VI Bloat

Strippers, Whittlers

Incompatible changes

Tools for merging packages

 

A Brief History

Flex and Smalltalk-72

Simula, Sketchpad, Augment and other precursors

PARC Learning Research Group

Smalltalk-76 and the Xerox Alto

Mostly ASCII

Personal Dynamic Media Paper in "Computer" 3/1977

Smalltalk-78

Browser, NoteTaker project

Smalltalk-80 V1

3rd complete rewrite before they had an installed user base

LRG now Systems Concepts Lab

1981 Byte Magazine Special Issue

Context: Xerox Alto, MIT LISP Machines

Smalltalk-80 V2

Incorporated feedback from first-round users

MVC used for all GUIs

Late-80s changes

Exceptions and I/O

Host window system interface

DLLCC

Compiler Framework

Namespaces, Packages

ANSI Smalltalk (1993-98)

 

Smalltalk Leaves PARC

Getting Smalltalk to Users

(Porting to non-Xerox hardware)

Early licensees: Apple, H-P, Tektronix

Berkeley SOAR and SPARC design

XSIS and the Analyst

ParcPlace Systems (spun off in 1988)

Digitalk's Smalltalk/V on early PCs (1984)

These merge in 1995

GNU Smalltalk (free)

 

C++, ObjectiveC and Java

C with Classes - hybrid language; class is like a struct

ObjectiveC - C + Smalltalk in 1 program

Java ("what a shame they didn't copy everything.")

 

Why it failed (in the 1990s)

Price (relative to what?)

Perception of compute demands (requires graphics and mouse, lots of RAM, …)

Performance Issues

VM performance and optimization

GC overhead and generation scavenging

Performance much better on Xerox machines

VM in microcode

Tagged architecture

Not upward compatible with anything

"Everything you know is wrong"

C hybrids appeared to get you most of the way there…

 

Smalltalk Implementations

Cincom Smalltalk (commercial)

ObjectStudio (commercial)

Squeak (free, based on Apple V1)

Pharo (stripped Squeak)

 

Coral (for scripting)

Amber (runs on JavaScript VM)

Bistro (runs on JavaScript VM)

S# (runs with .NET)

 

Smalltalk/X

VisualAge

Dolphin

 

Smalltalk Today

DLLCC and Slang

Seaside (for web apps)

Gemstone (scalable OODB)

 

STIC/ESUG

Squeak community

 

Relatives/Derivatives

ObjectiveC

Self (no classes, VM advances)

Lively (JavaScript libraries and tools)

F-Script

Strongtalk

SuperCollider

 

Reasons Why I Still Use Smalltalk

3 top reasons: Productivity, productivity and productivity

Language features

Simplicity, scalability, stability

Keyword syntax (!!)

Library features

Comprehensive, consistent, stable, extensible (!!)

All source close at hand

Pluggable L&F

Development Environment

Open tools (!!!)

Integrated, cross-platform

Fix/restart in debugger (!!!)

VI/VM architecture

Code lives in DB, easy change management, publication, crash recovery, etc. (!)

 

Why I complain about other languages

"Object-Oriented is not Enough" (Goldberg & Pope 1989 article)

“The Computer Revolution Hasn’t Happened Yet“ (A Kay quote)

Issues center on libraries and tools rather than the languages themselves

Lively for JavaScript

?? for Python

 

What I do use (other than Smalltalk)

C++

Standard, fast

XCode

Python

Hybrid language

Good libraries (inconsistent, non-OO)

Poor tools

Good integration with C/C++ via ctypes

Curse of version 3

Octave/MATLAB

Terse, good matrix support

Extensive code base

 


--

 

  Stephen Travis Pope   Santa Barbara, California, USA    http://HeavenEverywhere.com

 

 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Outline of a talk on "Why I Still Use Smalltalk" forcomments

Mircea Filip Lungu-2
On Mon, Oct 29, 2012 at 10:35 AM, Steven Kelly <[hidden email]> wrote:
> Mircea: GNU Smalltalk is mentioned :)

Ooops! I was looking under Implementations. Now I see that it was
mentioned before :)

Cheers,
M.
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Outline of a talk on "Why I Still Use Smalltalk" for comments

Janko Mivšek
In reply to this post by Stephen Pope
Hi Stephen,

I think this is also worth mentioned somewhere in your colloquium:

- current MVC revival in JavaScript world. MVC is an architectural style
from Smalltalk world from 80's. See curently popular JS frameworks like
Backbone, Ember, Knockout, Angular, etc.
- a potential of more 'ancient' Smalltalk features and approaches to
influence web technologies in the future (like Dart, already mentioned
MVC, ..)

Some questions, observations:
- is 'multimedia' still term in use? Isn't a bit old nowadays?
- we failed to maintain leading with innovations on GUI anymore with
Smalltalk, same on multimedia, so I rather won't mention much those two
fields except in history section,
- we have a chance on the web app field if we will be more active. Many
aspects from Smalltalk GUI field are directly applicable on forthcoming
HTML5 web apps, specially so called real-time ones. If we will hurry of
course!

So, history and the future of nowadays web frameworks are certainly to
be included, because here we are quite actual for a current world and
here we have a potential to be innovative and even to lead again.

Hope this helps a bit

Best regards
Janko








Dne 26. 10. 2012 21:47, piše Stephen Travis Pope:

>
> Hello all,
>
> I'm planning to give a colloquium called "Why I Still Use Smalltalk" for
> the graduate students at UCSB, and wanted to solicit your comments on
> the outline.
>
> stp
>
> --------------------
>
> Why I Still Use Smalltalk
>
> Graduate Colloquium
> UCSB Graduate Program in Media Arts and Technology
> November, 2012
> Stephen Travis Pope, [hidden email] <mailto:[hidden email]>
>
> --------------------
>
> Proposal
>
> Title: Why I Still Use Smalltalk
>
> Abstract
>
> The Smalltalk-80 programming system is celebrating its 30th birthday
> this year (Smalltalk-80 version 2 was released and documented in a
> series of books in 1982). The system was the first popular software
> development tool that incorporated a number of features we take for
> granted today, including an object-oriented programming language, a
> comprehensive open-source class library, an integrated window-based
> development environment, and a cross-platform virtual-machine-based
> delivery system. Nevertheless, Smalltalk has nowhere near the installed
> base or the mindshare of lesser peers such as C++ or Java, or more
> modern descendants such as Python or Ruby. This talk will introduce the
> Smalltalk system's language, libraries and tools, outline its history,
> and discuss the reasons why it is not more widely used. Several aspects
> of the Smalltalk system make it especially good for developing
> multimedia applications, and these will be introduced with examples from
> the last 30 years. The presenter was among the very first to use
> Smalltalk for real-world applications, and worked on the Smalltalk team
> at Xerox PARC and their spin-off ParcPlace Systems from 1986-94. He
> still uses Smalltalk (now available in both commercial and free
> versions) for his day-to-day work.
>
> Presenter
>
> Stephen Travis Pope is a software engineer and composer based in Santa
> Barbara. He taught at UCSB (in the departments of Music and Computer
> Science, and the Graduate Program in Media Arts and Technology) from
> 1996-2010, and is now known as FASTLabInc.com <http://FASTLabInc.com>
> (for multimedia software) and HeavenEverywhere.com
> <http://HeavenEverywhere.com> (for music and film).
>
> ----------------------------
>
> Outline
> Introduction
> Demo
> What Is Smalltalk?
> The Language
> The Libraries
> The Environment
> A Brief History
> Smalltalk Leaves PARC
> C++, ObjectiveC and Java
> Smalltalk Today
> Why I Still Use Smalltalk
>
> Introduction
> Overview
> My background in 1981
>
> Demo
> Counter Example with GUI
>
> What Is Smalltalk?
> Language
> Libraries
> Tools, IDE
> Methodology
> Note: "OO is not Enough!"
>
> The Language
> Terse, expressive, readable
> Everything is an Object (really, everything)
> All activity is message-passing
> Trivial syntax, no reserved words
> true, false, nil, self, super, thisContext
> Control structures written in Smalltalk
> Messages to Booleans, Blocks, etc.
> Means they're extensible (!)
> aCollection do: [ :item | Transcript show: item printString]
> Keyword syntax - messages with > 1 argument alternate keyword/argument…
> anArray at: 1  (getter)
> anArray at: 1 put: 'hello'  (setter)
> r := Rectangle top: 1 left: 1 width: 10 height: 10
> Fully Reflective
> (isKindOf:, understands:, …)
> Compiles to a virtual machine language (normally)
>
> The Libraries
> Everything is an Object
> Polymorphism (heavily used)
> E.g., many implementations of at:put: or +
> OO Design Patterns
> Composite, Adaptor, Singleton, MVC, Visitor, …
> Magnitudes, Collections and Streams
> Graphics and Windows
> All classes are extensible (!)
> Example: aString asPath: sepChar
> Try this in C++ or ObjC...
>
> The Methodology
> OO A/D Methods (OBA)
> OO Design Patterns
> Domain-specific Languages
>
> The Tools
> Window-based GUI and Tools
> Multi-desktop (Projects)
> Browsers, Inspectors and Editors
> Rules of Reuse (Programmer as Reader project)
> Pluggable look-and-feel
> Code-sharing tools: change-lists, Envy
> Open-source Tools (!!)
>
> Tool Demo
> Browsers
> Code in DB package, class, category, method
> Compile 1 method at a time
> "Programmer as Reader" facilities
> Senders, implementors, class/variable references
> Flavors of browsers: protocol, hierarchy, namespace, etc.
> Debugger
> Just like the browser(!!!)
> Fix and continue
> CASE Tools
> Change lists, packages, projects
>
> The Environment
> VI/VM Architecture
> VI like APL workspaces, LISP core files
> Snapshot/restart (relation to BOSS files)
> VM - "cheat but don't get caught"
> Thinks it's an operating system
> "The OS is only there for all the things you forgot to put in the language"
> Scheduler, file system, network drivers, etc. in Smalltalk
> Light-weight processes and scheduler in Smalltalk
> Simple VM: Byte-code interpreter
> High-performance VM: JIT Optimizing
> Native code caches
> Polymorphic inline caches
>
> Other Novel Aspects
> Other languages in Smalltalk (Lisp, Prolog, etc.)
> Compiler frameworks
> Smalltalk-as-OS (running on naked hardware)
> OOP and AI
> Frames/objects, rules, logic, etc.
> Early "block diagram compilers"
>
> Smalltalk and Multimedia
> Early Computer Graphics
> BitBLT pixel graphics
> SPIM and graphics contexts
> Music with Smalltalk
> Real-time FM on the Alto
> Real-time scheduling for MIDI
> Music notations in Smalltalk
>
> Early (1980s) Applications
> ThingLab
> ThinkerToy
> Graphical programming
> Analyst
> AI, Multimedia, Graphical Programming
> Chinese Temple Design ToolKit
> Models of process
> MOBY, DoubleTalk
> Petri Nets
> ObjectWorks/C++
> ST-like IDE for C++
>
> Early (1980s) Music Applications
> HyperScore ToolKit/MODE
> Music composition and notations
> SoundKit
> Music signal processing
> Kyma
> Cross-compilation for a DSP
> Harmonic Analysis Tool
> Chord/Harmony analysis expert system
> Smoke
> Flexible music representation language
>
> The Risks
> Breaking the system (really easy)
> Also easy to recover
> VI Bloat
> Strippers, Whittlers
> Incompatible changes
> Tools for merging packages
>
> A Brief History
> Flex and Smalltalk-72
> Simula, Sketchpad, Augment and other precursors
> PARC Learning Research Group
> Smalltalk-76 and the Xerox Alto
> Mostly ASCII
> Personal Dynamic Media Paper in "Computer" 3/1977
> Smalltalk-78
> Browser, NoteTaker project
> Smalltalk-80 V1
> 3rd complete rewrite before they had an installed user base
> LRG now Systems Concepts Lab
> 1981 Byte Magazine Special Issue
> Context: Xerox Alto, MIT LISP Machines
> Smalltalk-80 V2
> Incorporated feedback from first-round users
> MVC used for all GUIs
> Late-80s changes
> Exceptions and I/O
> Host window system interface
> DLLCC
> Compiler Framework
> Namespaces, Packages
> ANSI Smalltalk (1993-98)
>
> Smalltalk Leaves PARC
> Getting Smalltalk to Users
> (Porting to non-Xerox hardware)
> Early licensees: Apple, H-P, Tektronix
> Tex 44404 demo - http://www.youtube.com/watch?v=8yxCJfayW-8
> Berkeley SOAR and SPARC design
> XSIS and the Analyst
> ParcPlace Systems (spun off in 1988)
> Digitalk's Smalltalk/V on early PCs (1984)
> These merge in 1995
> GNU Smalltalk (free)
>
> C++, ObjectiveC and Java
> C with Classes - hybrid language; class is like a struct
> ObjectiveC - C + Smalltalk in 1 program
> Java ("what a shame they didn't copy everything.")
>
> Why it failed (in the 1990s)
> Price (relative to what?)
> Perception of compute demands (requires graphics and mouse, lots of RAM, …)
> Performance Issues
> VM performance and optimization
> GC overhead and generation scavenging
> Performance much better on Xerox machines
> VM in microcode
> Tagged architecture
> Not upward compatible with anything
> "Everything you know is wrong"
> C hybrids appeared to get you most of the way there…
>
> Smalltalk Implementations
> Cincom Smalltalk (commercial)
> ObjectStudio (commercial)
> Squeak (free, based on Apple V1)
> Pharo (stripped Squeak)
>
> Coral (for scripting)
> Amber (runs on JavaScript VM)
> Bistro (runs on JavaScript VM)
> S# (runs with .NET)
>
> Smalltalk/X
> VisualAge
> Dolphin
>
> Smalltalk Today
> DLLCC and Slang
> Seaside (for web apps)
> Gemstone (scalable OODB)
>
> STIC/ESUG
> Smalltalk.org <http://Smalltalk.org>
> Squeak community
>
> Relatives/Derivatives
> ObjectiveC
> Self (no classes, VM advances)
> Lively (JavaScript libraries and tools)
> F-Script
> Strongtalk
> SuperCollider
>
> Reasons Why I Still Use Smalltalk
> 3 top reasons: Productivity, productivity and productivity
> Language features
> Simplicity, scalability, stability
> Keyword syntax (!!)
> Library features
> Comprehensive, consistent, stable, extensible (!!)
> All source close at hand
> Pluggable L&F
> Development Environment
> Open tools (!!!)
> Integrated, cross-platform
> Fix/restart in debugger (!!!)
> VI/VM architecture
> Code lives in DB, easy change management, publication, crash recovery,
> etc. (!)
>
> Why I complain about other languages
> "Object-Oriented is not Enough" (Goldberg & Pope 1989 article)
> “The Computer Revolution Hasn’t Happened Yet“ (A Kay quote)
> Issues center on libraries and tools rather than the languages themselves
> Lively for JavaScript
> ?? for Python
>
> What I do use (other than Smalltalk)
> C++
> Standard, fast
> XCode
> Python
> Hybrid language
> Good libraries (inconsistent, non-OO)
> Poor tools
> Good integration with C/C++ via ctypes
> Curse of version 3
> Octave/MATLAB
> Terse, good matrix support
> Extensive code base
>
>
> --
>
>   Stephen Travis Pope   Santa Barbara, California, USA
>    http://HeavenEverywhere.com <http://HeavenEverywhere.com/>
>  
>
>
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>

--
Janko Mivšek
Aida/Web
Smalltalk Web Application Server
http://www.aidaweb.si
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Outline of a talk on "Why I Still Use Smalltalk" for comments

Paul Baumann
In reply to this post by Stephen Pope

Hi Stephen,

 

Your outline looks fine. This mentions the cultural reasons for why Smalltalk struggled...

 

Smalltalk had several years of mindshare in which major companies were happy developing with Smalltalk. The Smalltalk momentum slowed as the price of C-compilers dropped and as Oracle became dominant. The development culture favored C syntax, free compilers, and relational databases. Smalltalk vendors refused to compete and would milk $300/hr consulting rates for all they could. Then came all the process gurus promising to lower costs (typical of less dynamic languages than Smalltalk) with an emphasis on design separate from coding. Agile development was what Smalltalk programmer did naturally but that increasingly came into conflict with company policies requiring waterfall development using long cycles and experiencing late discovery of problems. The true development of each release was in the mad month of agile development near a deadline when the misguided design documents were finally set to the side.

 

Relational databases tended to set the direction of development. Smalltalk shops were spending too much on O-R mapping frameworks and their object models were either unappreciated or tended to look more like data structures that you'd see in any other language. C can throw data structures around faster than a VM can direct compiled C to throw them around. Smalltalk can blend C where performance is most critical but that approach was often less interesting than starting over. Many only measure raw I/O while ignoring the process efficiencies and potential that can come from a design that is easily evolved.

 

One "problem" of Smalltalk code is that it continues to work without constant attention. Inefficient code can run fine for decades without anyone realizing the opportunities exist with only a few changes. Languages with typed arguments and variables tend to get looked at when code is changed to maintain type constraints. Such refinement happens in Smalltalk but many development shops had discouraged the fixing of any "working" code until after it broke in a way that would be obvious to a customer. Code needs to be allowed to be refined. C programmers were able to refine more code as part of anticipated development without attracting scorn.

 

For the large corporations with rigid requirements, the promise of how Smalltalk lowers maintenance costs went unrealized. Smalltalk was increasingly viewed by management as an expensive boutique language that was hard to staff and that was increasingly different from where the rest of the industry was headed. Managers at the time were expected to micro-manage every aspect of development even though many didn't understand the technology. Managers that can't guarantee success are more fearful about standing out as different. Many lacked technical experience and did well by selling the latest buzzword up the management chain while never staying in place long enough to produce results.

 

And then came Java.

 

O-R mapping was simpler without people arguing about elusive benefits of a good object design. It was easy to find inexpensive Java developers. Some Smalltalk developers would switch just to go with the shift in momentum. Java started with an emphasis on web development that Smalltalk was slow to catch up with. Smalltalk vendors didn't wake up until most of their customer base had evaporated. Smalltalk vendors could not compete in a Java world in which they had no influence over direction. They received more suspicion than interest. They'd never get a chance even with good technology. I believe Smalltalk survived this period due to a small number of passionate programmers that were determined to quietly push for improvements despite resistance and long odds. The names change every few years but the passion endures. The passion endures by programmers both employed by vendors and working as their customers.

 

Vendor implementations are battle hardened and capable of any challenge. Smalltalk is still the most productive syntax and class library. It works when there is a culture of development that rewards the evolution and refinement of code. It works when GemStone/S is the primary database. It works best with short integration and release cycles. It works best when Smalltalk vendors are willing to compete and where management uses the technology within their organization. Put all this together with talent (that you either start with or grow from values of quality) and you have a system that evolves with your company and is capable of quickly adapting to any needs. Smalltalk can be found where the nimble survive. Smalltalk has grown past most of the obstacles. The mass interest is gone but opportunity remains and quality has been refined. For those that understand, Smalltalk is an opportunity for a competitive advantage.

 

My daughter has an intense interest in computer animation. I will teach her what I can using Squeak because Smalltalk is both easy to use and adaptable. She is going to be amazed with what she can do. All is discoverable and configurable by simple rules. Smalltalk still has firm roots as a teaching tool. Imagine doing that with Java, she'd be reaching for her familiar tools before the IDE is installed.

 

I hope this gives some ideas.

 

Regards,

 

Paul Baumann

 

 

 

From: [hidden email] [mailto:[hidden email]] On Behalf Of Stephen Travis Pope
Sent: Friday, October 26, 2012 15:48
To: vwnc
Subject: [vwnc] Outline of a talk on "Why I Still Use Smalltalk" for comments

 

 

Hello all,

 

I'm planning to give a colloquium called "Why I Still Use Smalltalk" for the graduate students at UCSB, and wanted to solicit your comments on the outline.

 

stp

 

--------------------

 

Why I Still Use Smalltalk

 

            Graduate Colloquium

            UCSB Graduate Program in Media Arts and Technology

            November, 2012

            Stephen Travis Pope, [hidden email]

 

--------------------

 

Proposal

 

Title: Why I Still Use Smalltalk

 

Abstract

 

The Smalltalk-80 programming system is celebrating its 30th birthday this year (Smalltalk-80 version 2 was released and documented in a series of books in 1982). The system was the first popular software development tool that incorporated a number of features we take for granted today, including an object-oriented programming language, a comprehensive open-source class library, an integrated window-based development environment, and a cross-platform virtual-machine-based delivery system. Nevertheless, Smalltalk has nowhere near the installed base or the mindshare of lesser peers such as C++ or Java, or more modern descendants such as Python or Ruby. This talk will introduce the Smalltalk system's language, libraries and tools, outline its history, and discuss the reasons why it is not more widely used. Several aspects of the Smalltalk system make it especially good for developing multimedia applications, and these will be introduced with examples from the last 30 years. The presenter was among the very first to use Smalltalk for real-world applications, and worked on the Smalltalk team at Xerox PARC and their spin-off ParcPlace Systems from 1986-94. He still uses Smalltalk (now available in both commercial and free versions) for his day-to-day work.

 

Presenter

 

Stephen Travis Pope is a software engineer and composer based in Santa Barbara. He taught at UCSB (in the departments of Music and Computer Science, and the Graduate Program in Media Arts and Technology) from 1996-2010, and is now known as FASTLabInc.com (for multimedia software) and HeavenEverywhere.com (for music and film).

 

----------------------------

 

Outline

            Introduction

            Demo

            What Is Smalltalk?

            The Language

            The Libraries

            The Environment

            A Brief History

            Smalltalk Leaves PARC

            C++, ObjectiveC and Java

            Smalltalk Today

            Why I Still Use Smalltalk

 

Introduction

            Overview

            My background in 1981

 

Demo

            Counter Example with GUI

 

What Is Smalltalk?

            Language

            Libraries

            Tools, IDE

            Methodology

            Note: "OO is not Enough!"

 

The Language

            Terse, expressive, readable

            Everything is an Object (really, everything)

            All activity is message-passing

            Trivial syntax, no reserved words

                        true, false, nil, self, super, thisContext

                        Control structures written in Smalltalk

                                    Messages to Booleans, Blocks, etc.

                                    Means they're extensible (!)

                                    aCollection do: [ :item | Transcript show: item printString]

                        Keyword syntax - messages with > 1 argument alternate keyword/argument…

                                    anArray at: 1  (getter)

                                    anArray at: 1 put: 'hello'  (setter)

                                    r := Rectangle top: 1 left: 1 width: 10 height: 10

            Fully Reflective

                        (isKindOf:, understands:, …)

            Compiles to a virtual machine language (normally)

 

The Libraries

            Everything is an Object

            Polymorphism (heavily used)

                        E.g., many implementations of at:put: or +

            OO Design Patterns

                        Composite, Adaptor, Singleton, MVC, Visitor, …

            Magnitudes, Collections and Streams

            Graphics and Windows

            All classes are extensible (!)

                        Example: aString asPath: sepChar

                        Try this in C++ or ObjC...

 

The Methodology

            OO A/D Methods (OBA)

            OO Design Patterns

            Domain-specific Languages

 

The Tools

            Window-based GUI and Tools

                        Multi-desktop (Projects)

            Browsers, Inspectors and Editors

            Rules of Reuse (Programmer as Reader project)

            Pluggable look-and-feel

            Code-sharing tools: change-lists, Envy

            Open-source Tools (!!)

 

Tool Demo

            Browsers

                        Code in DB package, class, category, method

                        Compile 1 method at a time

                        "Programmer as Reader" facilities

                                    Senders, implementors, class/variable references

                        Flavors of browsers: protocol, hierarchy, namespace, etc.

            Debugger

                        Just like the browser(!!!)

                        Fix and continue

            CASE Tools

                        Change lists, packages, projects

 

The Environment

            VI/VM Architecture

                        VI like APL workspaces, LISP core files

                        Snapshot/restart (relation to BOSS files)

                        VM - "cheat but don't get caught"

            Thinks it's an operating system

                        "The OS is only there for all the things you forgot to put in the language"

                        Scheduler, file system, network drivers, etc. in Smalltalk

                        Light-weight processes and scheduler in Smalltalk

            Simple VM: Byte-code interpreter

            High-performance VM: JIT Optimizing

                        Native code caches

                        Polymorphic inline caches

 

Other Novel Aspects

            Other languages in Smalltalk (Lisp, Prolog, etc.)

                        Compiler frameworks

            Smalltalk-as-OS (running on naked hardware)

            OOP and AI 

                        Frames/objects, rules, logic, etc.

            Early "block diagram compilers"

 

Smalltalk and Multimedia

            Early Computer Graphics

                        BitBLT pixel graphics

                        SPIM and graphics contexts

            Music with Smalltalk

                        Real-time FM on the Alto

                        Real-time scheduling for MIDI

                        Music notations in Smalltalk

 

Early (1980s) Applications

            ThingLab

            ThinkerToy

                        Graphical programming

            Analyst

                        AI, Multimedia, Graphical Programming

            Chinese Temple Design ToolKit

                        Models of process

            MOBY, DoubleTalk

                        Petri Nets

            ObjectWorks/C++

                        ST-like IDE for C++

 

Early (1980s) Music Applications

            HyperScore ToolKit/MODE

                        Music composition and notations

            SoundKit

                        Music signal processing

            Kyma

                        Cross-compilation for a DSP

            Harmonic Analysis Tool

                        Chord/Harmony analysis expert system

            Smoke

                        Flexible music representation language

 

The Risks

            Breaking the system (really easy)

                        Also easy to recover

            VI Bloat

                        Strippers, Whittlers

            Incompatible changes

                        Tools for merging packages

 

A Brief History

            Flex and Smalltalk-72

                        Simula, Sketchpad, Augment and other precursors

                        PARC Learning Research Group

            Smalltalk-76 and the Xerox Alto

                        Mostly ASCII

            Personal Dynamic Media Paper in "Computer" 3/1977

            Smalltalk-78

                        Browser, NoteTaker project

            Smalltalk-80 V1

                        3rd complete rewrite before they had an installed user base

                        LRG now Systems Concepts Lab

            1981 Byte Magazine Special Issue

                        Context: Xerox Alto, MIT LISP Machines

            Smalltalk-80 V2

                        Incorporated feedback from first-round users

                        MVC used for all GUIs

            Late-80s changes

                        Exceptions and I/O

                        Host window system interface

                        DLLCC

                        Compiler Framework

                        Namespaces, Packages

            ANSI Smalltalk (1993-98)

 

Smalltalk Leaves PARC

            Getting Smalltalk to Users

                        (Porting to non-Xerox hardware)

                        Early licensees: Apple, H-P, Tektronix

                        Tex 44404 demo - http://www.youtube.com/watch?v=8yxCJfayW-8

                        Berkeley SOAR and SPARC design

                        XSIS and the Analyst

            ParcPlace Systems (spun off in 1988)

            Digitalk's Smalltalk/V on early PCs (1984)

                        These merge in 1995

            GNU Smalltalk (free)

 

C++, ObjectiveC and Java

            C with Classes - hybrid language; class is like a struct

            ObjectiveC - C + Smalltalk in 1 program

            Java ("what a shame they didn't copy everything.")

 

Why it failed (in the 1990s)

            Price (relative to what?)

            Perception of compute demands (requires graphics and mouse, lots of RAM, …)

            Performance Issues

                        VM performance and optimization

                        GC overhead and generation scavenging

                        Performance much better on Xerox machines

                                    VM in microcode

                                    Tagged architecture

            Not upward compatible with anything

                        "Everything you know is wrong"

                        C hybrids appeared to get you most of the way there…

 

Smalltalk Implementations

            Cincom Smalltalk (commercial)

            ObjectStudio (commercial)

            Squeak (free, based on Apple V1)

            Pharo (stripped Squeak)

 

            Coral (for scripting)

            Amber (runs on JavaScript VM)

            Bistro (runs on JavaScript VM)

            S# (runs with .NET)

 

            Smalltalk/X

            VisualAge

            Dolphin

 

Smalltalk Today

            DLLCC and Slang

            Seaside (for web apps)

            Gemstone (scalable OODB)

 

            STIC/ESUG

            Smalltalk.org

            Squeak community

 

Relatives/Derivatives

            ObjectiveC

            Self (no classes, VM advances)

            Lively (JavaScript libraries and tools)

            F-Script

            Strongtalk

            SuperCollider

 

Reasons Why I Still Use Smalltalk

            3 top reasons: Productivity, productivity and productivity

            Language features

                        Simplicity, scalability, stability

                        Keyword syntax (!!)

            Library features

                        Comprehensive, consistent, stable, extensible (!!)

                        All source close at hand

                        Pluggable L&F

            Development Environment

                        Open tools (!!!)

                        Integrated, cross-platform

                        Fix/restart in debugger (!!!)

                        VI/VM architecture

                        Code lives in DB, easy change management, publication, crash recovery, etc. (!)

 

Why I complain about other languages

            "Object-Oriented is not Enough" (Goldberg & Pope 1989 article)

            “The Computer Revolution Hasn’t Happened Yet“ (A Kay quote)

            Issues center on libraries and tools rather than the languages themselves

                        Lively for JavaScript

                        ?? for Python

 

What I do use (other than Smalltalk)

            C++

                        Standard, fast

                        XCode

            Python

                        Hybrid language

                        Good libraries (inconsistent, non-OO)

                        Poor tools

                        Good integration with C/C++ via ctypes

                        Curse of version 3

            Octave/MATLAB

                        Terse, good matrix support

                        Extensive code base

 


--

 

  Stephen Travis Pope   Santa Barbara, California, USA    http://HeavenEverywhere.com

 

 



This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of IntercontinentalExchange, Inc. (ICE), its subsidiaries or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Slides for a talk on "Why I Still Use Smalltalk" for comments

Stephen Pope
In reply to this post by Stephen Pope

Hello all,

I've put together a set of slides for a 90-minute lecture/demo on "Why I Still Use Smalltalk" to be given to a colloquium of graduate media arts and technology students at UCSB (where I taught from 1996-2010). I up-loaded the slides for your comments; there's a 19-page PDF file (6 slides per page) at,

http://HeavenEverywhere.com/STP_ST80_Talk_Slides.pdf

Your comments/questions are welcome...

(The demo at the start will be using VisualWorks to build the canonical up/down counter.)

(Slide 12 is me and the head of the composition department at UCSB, both in 1984, for context.)

stp


--

  Stephen Travis Pope   Santa Barbara, California, USA    http://HeavenEverywhere.com
  


Begin forwarded message:

From: Stephen Travis Pope <[hidden email]>

Date: October 26, 2012 12:47:55 PM PDT

To: vwnc <[hidden email]>

Cc: Stephen Travis Pope <[hidden email]>

Subject: Outline of a talk on "Why I Still Use Smalltalk" for comments



Hello all,

I'm planning to give a colloquium called "Why I Still Use Smalltalk" for the graduate students at UCSB, and wanted to solicit your comments on the outline.

stp

--------------------

Why I Still Use Smalltalk

Graduate Colloquium
UCSB Graduate Program in Media Arts and Technology
November, 2012
Stephen Travis Pope, [hidden email]

--------------------

Proposal

Title: Why I Still Use Smalltalk

Abstract

The Smalltalk-80 programming system is celebrating its 30th birthday this year (Smalltalk-80 version 2 was released and documented in a series of books in 1982). The system was the first popular software development tool that incorporated a number of features we take for granted today, including an object-oriented programming language, a comprehensive open-source class library, an integrated window-based development environment, and a cross-platform virtual-machine-based delivery system. Nevertheless, Smalltalk has nowhere near the installed base or the mindshare of lesser peers such as C++ or Java, or more modern descendants such as Python or Ruby. This talk will introduce the Smalltalk system's language, libraries and tools, outline its history, and discuss the reasons why it is not more widely used. Several aspects of the Smalltalk system make it especially good for developing multimedia applications, and these will be introduced with examples from the last 30 years. The presenter was among the very first to use Smalltalk for real-world applications, and worked on the Smalltalk team at Xerox PARC and their spin-off ParcPlace Systems from 1986-94. He still uses Smalltalk (now available in both commercial and free versions) for his day-to-day work.

Presenter

Stephen Travis Pope is a software engineer and composer based in Santa Barbara. He taught at UCSB (in the departments of Music and Computer Science, and the Graduate Program in Media Arts and Technology) from 1996-2010, and is now known as FASTLabInc.com (for multimedia software) and HeavenEverywhere.com (for music and film).

----------------------------

Outline
Introduction
Demo
What Is Smalltalk?
The Language
The Libraries
The Environment
A Brief History
Smalltalk Leaves PARC
C++, ObjectiveC and Java
Smalltalk Today
Why I Still Use Smalltalk

Introduction
Overview
My background in 1981

Demo
Counter Example with GUI

What Is Smalltalk?
Language
Libraries
Tools, IDE
Methodology
Note: "OO is not Enough!"

The Language
Terse, expressive, readable
Everything is an Object (really, everything)
All activity is message-passing
Trivial syntax, no reserved words
true, false, nil, self, super, thisContext
Control structures written in Smalltalk
Messages to Booleans, Blocks, etc.
Means they're extensible (!)
aCollection do: [ :item | Transcript show: item printString]
Keyword syntax - messages with > 1 argument alternate keyword/argument…
anArray at: 1  (getter)
anArray at: 1 put: 'hello'  (setter)
r := Rectangle top: 1 left: 1 width: 10 height: 10
Fully Reflective
(isKindOf:, understands:, …)
Compiles to a virtual machine language (normally)

The Libraries
Everything is an Object
Polymorphism (heavily used)
E.g., many implementations of at:put: or +
OO Design Patterns
Composite, Adaptor, Singleton, MVC, Visitor, …
Magnitudes, Collections and Streams
Graphics and Windows
All classes are extensible (!)
Example: aString asPath: sepChar
Try this in C++ or ObjC...

The Methodology
OO A/D Methods (OBA)
OO Design Patterns
Domain-specific Languages

The Tools
Window-based GUI and Tools
Multi-desktop (Projects)
Browsers, Inspectors and Editors
Rules of Reuse (Programmer as Reader project)
Pluggable look-and-feel
Code-sharing tools: change-lists, Envy
Open-source Tools (!!)

Tool Demo
Browsers
Code in DB package, class, category, method
Compile 1 method at a time
"Programmer as Reader" facilities
Senders, implementors, class/variable references
Flavors of browsers: protocol, hierarchy, namespace, etc.
Debugger
Just like the browser(!!!)
Fix and continue
CASE Tools
Change lists, packages, projects

The Environment
VI/VM Architecture
VI like APL workspaces, LISP core files
Snapshot/restart (relation to BOSS files)
VM - "cheat but don't get caught"
Thinks it's an operating system
"The OS is only there for all the things you forgot to put in the language"
Scheduler, file system, network drivers, etc. in Smalltalk
Light-weight processes and scheduler in Smalltalk
Simple VM: Byte-code interpreter
High-performance VM: JIT Optimizing
Native code caches
Polymorphic inline caches

Other Novel Aspects
Other languages in Smalltalk (Lisp, Prolog, etc.)
Compiler frameworks
Smalltalk-as-OS (running on naked hardware)
OOP and AI 
Frames/objects, rules, logic, etc.
Early "block diagram compilers"

Smalltalk and Multimedia
Early Computer Graphics
BitBLT pixel graphics
SPIM and graphics contexts
Music with Smalltalk
Real-time FM on the Alto
Real-time scheduling for MIDI
Music notations in Smalltalk

Early (1980s) Applications
ThingLab
ThinkerToy
Graphical programming
Analyst
AI, Multimedia, Graphical Programming
Chinese Temple Design ToolKit
Models of process
MOBY, DoubleTalk
Petri Nets
ObjectWorks/C++
ST-like IDE for C++

Early (1980s) Music Applications
HyperScore ToolKit/MODE
Music composition and notations
SoundKit
Music signal processing
Kyma
Cross-compilation for a DSP
Harmonic Analysis Tool
Chord/Harmony analysis expert system
Smoke
Flexible music representation language

The Risks
Breaking the system (really easy)
Also easy to recover
VI Bloat
Strippers, Whittlers
Incompatible changes
Tools for merging packages

A Brief History
Flex and Smalltalk-72
Simula, Sketchpad, Augment and other precursors
PARC Learning Research Group
Smalltalk-76 and the Xerox Alto
Mostly ASCII
Personal Dynamic Media Paper in "Computer" 3/1977
Smalltalk-78
Browser, NoteTaker project
Smalltalk-80 V1
3rd complete rewrite before they had an installed user base
LRG now Systems Concepts Lab
1981 Byte Magazine Special Issue
Context: Xerox Alto, MIT LISP Machines
Smalltalk-80 V2
Incorporated feedback from first-round users
MVC used for all GUIs
Late-80s changes
Exceptions and I/O
Host window system interface
DLLCC
Compiler Framework
Namespaces, Packages
ANSI Smalltalk (1993-98)

Smalltalk Leaves PARC
Getting Smalltalk to Users
(Porting to non-Xerox hardware)
Early licensees: Apple, H-P, Tektronix
Berkeley SOAR and SPARC design
XSIS and the Analyst
ParcPlace Systems (spun off in 1988)
Digitalk's Smalltalk/V on early PCs (1984)
These merge in 1995
GNU Smalltalk (free)

C++, ObjectiveC and Java
C with Classes - hybrid language; class is like a struct
ObjectiveC - C + Smalltalk in 1 program
Java ("what a shame they didn't copy everything.")

Why it failed (in the 1990s)
Price (relative to what?)
Perception of compute demands (requires graphics and mouse, lots of RAM, …)
Performance Issues
VM performance and optimization
GC overhead and generation scavenging
Performance much better on Xerox machines
VM in microcode
Tagged architecture
Not upward compatible with anything
"Everything you know is wrong"
C hybrids appeared to get you most of the way there…

Smalltalk Implementations
Cincom Smalltalk (commercial)
ObjectStudio (commercial)
Squeak (free, based on Apple V1)
Pharo (stripped Squeak)

Coral (for scripting)
Amber (runs on JavaScript VM)
Bistro (runs on JavaScript VM)
S# (runs with .NET)

Smalltalk/X
VisualAge
Dolphin

Smalltalk Today
DLLCC and Slang
Seaside (for web apps)
Gemstone (scalable OODB)

STIC/ESUG
Squeak community

Relatives/Derivatives
ObjectiveC
Self (no classes, VM advances)
Lively (JavaScript libraries and tools)
F-Script
Strongtalk
SuperCollider

Reasons Why I Still Use Smalltalk
3 top reasons: Productivity, productivity and productivity
Language features
Simplicity, scalability, stability
Keyword syntax (!!)
Library features
Comprehensive, consistent, stable, extensible (!!)
All source close at hand
Pluggable L&F
Development Environment
Open tools (!!!)
Integrated, cross-platform
Fix/restart in debugger (!!!)
VI/VM architecture
Code lives in DB, easy change management, publication, crash recovery, etc. (!)

Why I complain about other languages
"Object-Oriented is not Enough" (Goldberg & Pope 1989 article)
“The Computer Revolution Hasn’t Happened Yet“ (A Kay quote)
Issues center on libraries and tools rather than the languages themselves
Lively for JavaScript
?? for Python

What I do use (other than Smalltalk)
C++
Standard, fast
XCode
Python
Hybrid language
Good libraries (inconsistent, non-OO)
Poor tools
Good integration with C/C++ via ctypes
Curse of version 3
Octave/MATLAB
Terse, good matrix support
Extensive code base

--

  Stephen Travis Pope   Santa Barbara, California, USA    http://HeavenEverywhere.com
 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc