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 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 |
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:
_______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
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 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 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
_______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
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 |
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 |
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 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 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 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 |
In reply to this post by Stephen Pope
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 Begin forwarded message:
_______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Free forum by Nabble | Edit this page |