The Artima Developer Community
Sponsored Link

Agile Buzz Forum
First Impressions

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
James Robertson

Posts: 29924
Nickname: jarober61
Registered: Jun, 2003

David Buck, Smalltalker at large
First Impressions Posted: Feb 22, 2005 3:44 AM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by James Robertson.
Original Post: First Impressions
Feed Title: Travis Griggs - Blog
Feed URL: http://www.cincomsmalltalk.com/rssBlog/travis-rss.xml
Feed Description: This TAG Line is Extra
Latest Agile Buzz Posts
Latest Agile Buzz Posts by James Robertson
Latest Posts From Travis Griggs - Blog

Advertisement
I downloaded and played with Ambrai Smalltalk this evening. I missed their talk the year they presented in Toronto and wasn't really aware that they were still charging on. I was mistaken.

I followed their demo. A beginner might be a bit puzzled as to what he was supposed to do with the downloaded .st file or how to evaluate code, but it was otherwise pretty straightforward. A basic demonstration of "look we made a difference amongst your other pretty windows."

That didn't take long, so I wandered around the system some. The browser's navigability is pretty primitive, if you're coming from a power tool like VisualWorks, it can feel a little cumbersome. But it's a second beta, so it's pretty impressive. I'd suspect some strong VSE/Dolphin influence or at least similarities. Smalltalks with tight OS integration seem to have a similar feel. Browsing around, I noticed that it seems to be pretty well flushed. But economically spartan at the same time.

Classical <primitive #####> 's are used for the normal Smalltalk primitives (i.e. adding numbers, at:put, etc). But for things like the OS interface (file streams for example), it's written in something more like DLLCC. This I like. I wish more of VisualWorks was implemented in transparent Smalltalk-to-native-library objects, rather than wondering just what the primitive that does a directoryContents really does.

There are no Processes, instead there are Tasks. It would be interesting to learn just what these can do. The number hierarchy is light; it uses double dispatching right off the bat (doesn't even bother to fail the primitive first). IndexedCollection didn't understand at:ifAbsent:, but that was readily fixed, and it worked fine. Even better, getting Symbol to understand value: so that #(1 2 3 4 5 6 7 8) collect: #odd works fine was a snap. Growsing around, it seems that it is not the case that a bunch of behavior is hidden behind the scenes (such as the parser/compiler). The debugger is functional enough. It's all there in Smalltalk as it should be.

Just one more thing. One thing I'm pretty fanatical about is code formatting. It's not that I have a style I care about, it's that I'm lazy. I just want to type code and then hit the format button and have it clean it all up for me. I like the uniformity. Whether to terminate or separate with periods is academic past that. So I thought I'd see how hard it would be to add a formatter in. It took about 15 minutes wall time. Which is pretty impressive, considering I'm a stranger in a strange land here. The first mod was to add a line like:

addCommandItem: #onFormat text: 'Format' shortcut: 'Command F';
to the BrowserWindow's editMenu method. When I saw this method, I felt very much like I was back in WBPro again. It's a style I'm only beginerishly familiar with. Anway, restarting the browser, my menu item was there. After that, I added the onFormat method to the same class and begin putting braver and braver Transcript show: methods to. I was lucky to discover that there was already SmalltalkColorPrinter, which is a ParseNodeVisitor... you know the pattern. Even luckier after considering copying this to make a Formatter, to see that there was a SmalltalkPrettyPrinter class already. I just needed a convenience method to work off a string and then my onFormat method could be written as:
self textPane text: (SmalltalkColorPrinter printMethodSource: (SmalltalkPrettyPrinter printMethodSource: self textPane text))
And then of course, I promptly tested in on itself. And it worked. Pretty nifty. It doesn't preserve comments, and it needs to be smart enough to do the right thing when a class is selected, but it was cinche. I'd gamble those two items would be less than another 30 minutes yet.

Read: First Impressions

Topic: Firefox succeeded Previous Topic   Next Topic Topic: Generalized collection access and Smalltalk evolution

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use