Lambda the Ultimate

inactiveTopic Strongtalk
started 10/31/2002; 5:11:17 AM - last post 11/3/2002; 1:06:05 PM
Ehud Lamm - Strongtalk  blueArrow
10/31/2002; 5:11:17 AM (reads: 2718, responses: 15)
Strongtalk

Strongtalk is a major re-thinking of the Smalltalk-80 language and system. While retaining the basic Smalltalk syntax and semantics, it contains a number of significant advances, including:

  • Performance: It executes Smalltalk much faster than any other Smalltalk implementation, using an advanced inlining compiler based on type-feedback technology.

  • Type System: It contains the first fully developed strong, static type system for Smalltalk (hence the name Strongtalk). The type system is both optional and incremental, and operates completely independently of the compiler technology (which means that normal untyped Smalltalk code runs just as fast as typed code). It also contains a re-designed, strongly-typed "Blue Book" class library.

Marcus Denker was kind enough to alert my attention to this interesting work, when I asked about advances in JIT technology.

If I understand correctly some of the implementation techniques from Strongtalk made their way to Sun's Hotspot VM.


Posted to OOP by Ehud Lamm on 10/31/02; 5:15:52 AM

Isaac Gouy - Re: Strongtalk  blueArrow
10/31/2002; 8:54:17 AM (reads: 1538, responses: 0)
comp.lang.smalltalk had some Strongtalk discussions back in July, when Strongtalk re-emerged.

In amongst the wrangling about inappropriate benchmarking you can get some idea of the Strongtalk implementation techniques that have been incorporated into commercial Smalltalks:

Re: Will StrongTalk revitalize Smalltalk? Eliot Miranda

Java Hot Spot VM

Michael Vanier - Re: Strongtalk  blueArrow
10/31/2002; 8:52:05 PM (reads: 1494, responses: 0)
I am really pleased to see this. I recently got hooked on Smalltalk through Squeak (http://www.squeak.org). My conversion happened when I realized that some software that I'd been struggling to write using any of C++, java, or ocaml would be trivial to write using Smalltalk. In addition, the IDE is so convenient you can map out a design almost effortlessly. Smalltalk is one of the most beautiful computer languages ever invented, up there with lisp (which it resembles in many ways).

Chris Double - Re: Strongtalk  blueArrow
11/1/2002; 3:40:03 AM (reads: 1448, responses: 0)
Would you find the joy of smalltalk to be the result of the language or the development system? I enjoy programming in Smalltalk but I find the biggest productivity enhancement to be the development system - particularly being able to 'program in the debugger'.

When programming in Smalltalk (Dolphin or Squeak) I pretty much live in the debugger, fleshing out my classes as I go along. In the past this has been enough to sway my decision towards using a Smalltalk system rather than another language I prefer like Lisp, Dylan or Goo.

It'll be interesting to follow the uptake of Smallscript which is a superset of Smalltalk (adding Multimethods amongst other things) but with a scripting focus. Less emphasis on the powerful development environment (that's my take anyway).

Michael Vanier - Re: Strongtalk  blueArrow
11/1/2002; 4:03:19 AM (reads: 1444, responses: 0)
First off, I didn't know about "programming in the debugger". Thanks for the link!

I think that the benefits of smalltalk are a combination of the language's extremely simple but powerful approach to objects and the development system. It took me a long time to realize that the development system could make system design a lot simpler, simply because I can make dozens of stub classes and flesh them out bit by bit. Of course, I can do that in any language, but I'd have to maintain dozens of files, which would quickly become a pain. I'm sure I have a lot more discoveries along this line still awaiting me.

One thing I find fascinating about smalltalk is the fact that it feels like I've entered an alternate programming universe. For a long time I thought this universe was just bizarre, but now I'm starting to think that maybe it's better than what I'm used to. It's kind of an "everything I know is wrong" epiphany.

As for SmallScript, it loses big from my perspective on two counts:

1) It loses the simple smalltalk syntax, which IMO is one of the things the smalltalk designers really got right.

2) It's proprietary and closed-source. I'm sorry, but I will not use a closed-source language if decent alternatives exist.

As for smalltalk vs. lisp, I find them both enjoyable. I think that some applications map more readily to object-oriented paradigms while others map more readily to functional ones. You use the right tool for the job.

Chris Double - Re: Strongtalk  blueArrow
11/1/2002; 4:13:38 AM (reads: 1448, responses: 0)
When I did mainly C++ programming I remember there were a number of tools that came onto the market to 'simplify' programming. Most of these involved typing methods names, arguments and source into GUI 'edit boxes', list boxes and other forms and adding them to a database. I loathed them as they slowed me down so much. At the time I thought Smalltalk was like that with its class browser.

Dolphin Smalltalk was my first use of a Smalltalk system for serious programming years later and I was pleasantly surprised at how easy it was. Not having to deal with header files, implementation files, compilation dependancies, etc was great! And being able to browse 'implementors of', 'senders of', etc. To my C++ programmer mind that seemed near impossible.

The (thankfully few) times I forgot to save my image, or had a crash, were a bit of a problem though. Dolphin and Squeak both (And I'm sure other Smalltalks do too) have the means of recovering code though.

With all these fun programming languages around to play with, how the heck does anyone manage to get anything actually done? I spend most of my time either fooling around with a new language or wrestling with the decision on what language to use! :-)

Isaac Gouy - Re: Strongtalk  blueArrow
11/1/2002; 10:56:22 AM (reads: 1447, responses: 1)
programming in the debugger
You used to be able to do this in IBM VisualAge for Java (VisualAge was originally a Smalltalk IDE, and the initial Java IDE was implemented in Smalltalk). Once you have deployed a system you can use this kind of functionality to update the code in a running system, without stopping the system. Like hot swapping code in Erlang.

Not having to deal with header files, implementation files, compilation dependancies, etc was great!

I mean, source code in files. How quaint. How 70's

Kent Beck, Smalltalk Solutions'99 speaking about Java.

(And I'm sure other Smalltalks do too) have the means of recovering code though
OTI's ENVY/Developer is a fine-grained (method level), and extremely rich, code repository. It takes Smalltalk productivity to another level - fearless-programming. Hopefully the Eclipse Stellation project will provide the next step.

it feels like I've entered an alternate programming universe
A universe in which you can spend your time thinking about the problems you're trying to solve - play-doh for building software.
There is a downside - the interactivity and power can be addictive, and sometimes folk start doing cool powerful stuff instead of simple needed stuff (ooops project failure).

The latest VisualWorks Smalltalk release is free for non-commercial use. Naturally it's portable across wins, unices, macs. I recommend that you check it out.

Apologies Ehud, it's always been difficult to separate Smalltalk the programming language from Smalltalk the software platform.

Ehud Lamm - Re: Strongtalk  blueArrow
11/1/2002; 12:58:43 PM (reads: 1487, responses: 0)
it's always been difficult to separate Smalltalk the programming language from Smalltalk the software platform.

That's part of the charm of Smalltalk isn't it?

Isaac Gouy - Re: Strongtalk  blueArrow
11/1/2002; 3:04:58 PM (reads: 1392, responses: 1)
it's always been difficult to separate Smalltalk the programming language from Smalltalk the software platform. That's part of the charm of Smalltalk isn't it?

Yes. The unity of language and platform is delightful.

For me, the charm of Smalltalk the language is mostly due to it's extreme uniformity - very few special cases to trip you up.

Other aspects of the language - for example dynamic typing - are only workable because the tools let you check method implementors, senders, references quickly while writing code. So many of the productivity benefits come from the interplay between language and refined tools.

Ehud Lamm - Re: Strongtalk  blueArrow
11/1/2002; 3:10:07 PM (reads: 1438, responses: 0)
So many of the productivity benefits come from the interplay between language and refined tools.

Is that a yes?

Isaac Gouy - Re: Strongtalk  blueArrow
11/1/2002; 5:27:15 PM (reads: 1374, responses: 0)

Chris - Re: Strongtalk  blueArrow
11/2/2002; 11:13:36 AM (reads: 1354, responses: 0)
I started to play with Squeak, but I was turned off by how the IDE was completely non-native. I know that is part of its power, that the language, libraries, and IDE meld together, but why can't they make the GUI look and behave like the native GUI (in this case Windows).

Isaac Gouy - Re: Strongtalk  blueArrow
11/2/2002; 2:15:07 PM (reads: 1350, responses: 0)
why can't they make the GUI look and behave like the native GUI (in this case Windows)

They can, they chose not to.

Try one of these instead:

  • VisualWorks is a cross-platform Smalltalk with emulated GUI on all platforms (same as Java Swing, but arguably done better)

  • IBM Visual Age Smalltalk is cross-platform but uses native widgets when it can (same as Eclipse SWT)

  • Dolphin Smalltalk is Windows only, native GUI.

  • Smalltalk MT takes you down to the Windows API calls.

For further Information about Smalltalk.

Michael Vanier - Re: Strongtalk  blueArrow
11/2/2002; 5:45:49 PM (reads: 1332, responses: 1)
The philosophy of squeak is that the environment looks *exactly* the same no matter where you run it from. Now, there's nothing that prevents you from implementing (say) a Windows look and feel, a Mac look and feel, a Gnome look and feel, etc. but the environment has to be able to implement all of them on all platforms. In other words, there are no platform dependencies at all.

Isaac Gouy - Re: Strongtalk  blueArrow
11/3/2002; 1:06:05 PM (reads: 1351, responses: 0)
The philosophy of squeak is that the environment looks *exactly* the same no matter where you run it from.
This is part of the Smalltalk-80 heritage it shares with VisualWorks Smalltalk. Even though VisualWorks uses native windows, it still provides a default look and feel like that in all the old Smalltalk-80 books.

And to prove your point, VisualWorks ships with cross-platform emulated look and feel for MacOS 8, Motif, Win95, Win98. I never came across end-users who prefered the Smalltalk-80 laf to the platform laf they were familiar with.