The Artima Developer Community
Sponsored Link

Agile Buzz Forum
Don and John - #Smalltalk for .NET

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
Don and John - #Smalltalk for .NET Posted: Jul 17, 2003 9:36 AM
Reply to this message Reply

This post originated from an RSS feed registered with Agile Buzz by James Robertson.
Original Post: Don and John - #Smalltalk for .NET
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
Latest Agile Buzz Posts
Latest Agile Buzz Posts by James Robertson
Latest Posts From Cincom Smalltalk Blog - Smalltalk with Rants

Advertisement
#Smalltalk for .NET - Don Roberts and John Brant


This is a 9 month effort so far (from OOPSLA last year). "Our use of S# would have been better since we really are Smalltalk". Ouch :)


Completely new Smalltalk on top of the CLR. Hey, I can download it from a #Smalltalk based web server here.... It's ANSI compliant. Seamless access to the .NET framework. Open Source, Free as in Beer. .NET classes look like Smalltalk classes. .NET messages are transliterated into same name with keyword syntax. Constructors are done with #new or #new:



x := Regex new.
x := Regex new: '[Ff]oo'.
matches := x Matches: 'hello foo' starting: 5.



Yes, the cap method name is because it's calling a .NET method in a .NET class.


Implemented

  • LargeIntegers

  • #doesNotUnderstand

  • Exceptions



Not Implemented

  • #become:

  • Modifying classes at runtime

  • Changing the class of objects at runtime



Collections
All Smalltalk collections are implemented - they are mostly wrappers on top of the .NET framework, in addition to a full set of Smalltalk collections. Performance - about on par with Dolphin speed. VW and VA are typically faster.


Good

  • Based on MS technology

  • Good for scripting windows

  • Easy for smalltalkers to use .NET

  • Relatively small, standalone exes

  • Available now

  • Free, as in beer

  • Complete source available

  • Self-hosting



The Bad

  • Based on MS technology

  • Edit/compile/run (repeat) cycle

  • No IDE - yet (use EMACS)

  • Very few optimizations




Demo time - they've got Store working for this, and GLORP ported. Hey cool - he's got a demo of a radar weather view. There's a bunch of stuff that comes "free" with the .NET framework. They develop in VW and then export as SIF. The code behind this is pretty simple looking.



open
	| thread |
	files := OrderedCollection new.
	form := Form new.
	form Width: 650 Height: 680.
	form Text: 'Don''s Radar'.
	scrollbar := HScrollBar new.
	scrollbar Minimum: 0 Maximum: 100 Value: 10.
	form Controls Add: scrollbar.
	picture := PictureBox new.
	....



And so on. Other than the naming convention for methods, it looks fairly normal. To run this, install .NET 1.1. About a 100 MB download for runtime, dev, and doc. Integrated with the MS debugger, so you can do things the MS debugger can do - such as attach it to a running Windows process (like the #Smalltalk interpreter). Not as transparent as a Smalltalk debugger, but ok in this world. Primitives to the .NET framework are implemented via compiler calls using blocks. For some of the common Smalltalk optimizations (#ifTrue:, etc) - they have macros built on the rb parser instead of the kinds of compiler hints most Smalltalks use). Allows for 'on the fly, extensible' optimizations. This rewriting is part of the compiling, so the developer's source stays as they expect.


To ship an app - ship the exe, the LargeInteger dll, and ensure that the .NET runtime is down.


Questions
Have you looked at Eclipse, thought about that - Don: "We thought about it, when we looked at it I wasn't that impressed".
No image, right? - Correct
Compiling to the CLR bytecodes? - Yes
What about the VisualStudio? We don't own it
Why do we need the LargeInteger DLL? - because we wrote it in C# instead of paying for the #Smalltalk overhead.
Does it run under Mono? - We have had it running there, but it breaks frequently. Almost runs under Mono.

Read: Don and John - #Smalltalk for .NET

Topic: SCRUM: IEEE Computer Agile Issue - June 2003 Previous Topic   Next Topic Topic: Celebrities Against necho

Sponsored Links



Google
  Web Artima.com   

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