[Cuis] Fwd: [Pharo-project] Slides for a talk on "Why I Still Use Smalltalk" for comments

H. Hirzel hannes.hirzel at gmail.com
Thu Jan 17 04:21:51 CST 2013


Hello

FYI,


The following presentation was sent to the Pharo list this month and I
think it is interesting for Cuis as well as it is a distribution
linked to Squeak. The presentation  has a lot of screen shots taken
from Squeak and Pharo.

Stephen, I'd like to know more about what you are using Smalltalk
these days, any links?

Regards

Hannes

P.S.
Please include
   stephen at heaveneverywhere.com
in your replies as he is probably not on this list and he invited comments.


---------- Forwarded message ----------
From: Stephen Travis Pope <stephen at heaveneverywhere.com>
Date: Sat, 5 Jan 2013 17:21:44 -0800
Subject: [Pharo-project] Slides for a talk on "Why I Still Use
Smalltalk" for comments
To: vwnc <vwnc at cs.uiuc.edu>, pharo-project at lists.gforge.inria.fr


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 <stephen at heaveneverywhere.com>
> Date: October 26, 2012 12:47:55 PM PDT
> To: vwnc <vwnc at cs.uiuc.edu>
> Cc: Stephen Travis Pope <stephen at heaveneverywhere.com>
> 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, stephen at FASTLabInc.com
>
> --------------------
>
> 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
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedGraphic.tiff
Type: image/tiff
Size: 2442 bytes
Desc: not available
URL: <http://jvuletich.org/pipermail/cuis_jvuletich.org/attachments/20130117/d6ec71b2/attachment-0003.tiff>


More information about the Cuis mailing list