From ProgrammersRefuseToUseStateOfTheArt Smalltalk is not state of the art. It was once state of the art, and it still has some very beautiful ideas. Many other language are significantly more usable than Smalltalk these days. Like any language, it will have its fans. Like good languages, learning it is a valuable experience. Given its environment requirments, the fact that the only good development collaboration tool (EnvyDeveloper) for it is dead, and it's image based making it hard to put into code control, it's not a great choice for actual products. ''It's not like I want Smalltalk to be state of the art either, but there isn't anything better. FP languages are FP even if they allow OO. And don't even mention Java.'' Self comes to mind. Cocoa comes to mind as a good platform (although you need to use ObjectiveCee correctly, or use NuLanguage or RubyCocoa or PyCocoa). Cocoa also offers transparent persistance. ''The reality is that Self only works for Macs and I'm not sure how much it works for them. Self over Linux is just incredibly buggy. Maybe that will change with future implementations but for now that's the way it is. And for that matter, isn't Cocoa strictly a Mac thing as well? I'd have no problem switching to a Mac since it seems to be a superior platform in every way. Every way except one, which is very dear to me, that of supplier independence. I'm not interested in locking myself into an architecture controlled by a single company. (And I greatly respected SUN for freeing its architecture.)'' * Self works fine for Linux and Windows, I've used it. Your linux install might be subtly borked. It happens. Anyways, Cocoa is only for macs. But know what? It's the only place where we're seeing significant progress in the world of rapid programming and XP these days. Check out CoreData, CoreImage, and the entire Cocoa library. They were ahead of their time 13 years ago, and they've been modernized. Developers everywhere are flocking to macs, because it's a better machine for developers (and damn fast to boot, so long as you code taking the PPC architecture into account). If you're concerned about being locked in, ''congratulations'', you can build a PPC machine from scratch and buy aftermarket parts to replace nearly every piece of your mac if you so choose. If you refuse to go where the action is for ethical reasons, that's your call, but remember that when you're eating the proverbial dust of progress that's passed you by. * ''Self runs the Demo fine. Until you came along, nobody ever suggested that the Linux version of Self was anything but crap, nevermind that you could write commercial code in it. And since its state hasn't changed in years, I'd really like to see you back that up.'' * ''As near as I understand, VisualWorks works for both Macs and PCs. The only thing missing from it is 3D. And these are all part of my requirements. My requirements at this point are: highly-reflective highly-modifiable pure OO language, non-C syntax, 3D support, excellent tool support (RefactoringBrowser), bytecode compatible on both Macs and PCs.'' Although you've previously dissed Python and Ruby for not offering anything new; both provide programming models very similar to that of Smalltalk. * Ruby and Python take many concepts that are good from Smalltalk and Lisp and modernize them and mesh them with OO. I am more a fan of Ruby than of Python, but I recognize that both are good choices. Ruby brings meta-programming to the masses, and I like that a lot. And then there's things like Dylan and Cecil. ''What's the point of something so very similar to Smalltalk that's not Smalltalk? I'm not interested in joining the herd for the sake of saying Mooo. From what I can tell, Dylan is FP with possibly better OO features than other FP languages and C syntax. Again, what's to recommend it? What's to recommend it that would make me crawl over broken glass ^W^W^W^W adopt C syntax?'' Widespread availability, mainly. Why does anyone else choose Python over Smalltalk? Because Python will run on anything, plays nice with the rest of the world, etc. Of course, another OO choice is ObjectiveCaml (which despite its ML heritage is a proper OO language, with a very powerful type system). [Smalltalk's image-based metality is a huge pain in the ass when you have more than one developer. It is also very difficult to integrate into non-squeak windowing environments.] ''Those aren't concerns. I only ''have'' one developer anyways. I '''love''' the image, especially compared to source files. In fact, dealing with source files would be another instance of crawling over broken glass. And while DolphinSmalltalk works ''very'' well with Windows, I'm writing a 3D UI so I can't even use the default context menus.'' Of course, nobody is saying that you ''shouldn't'' use Smalltalk. If it works for your and makes you productive in your designs, go ahead and use it! Smalltalk is a fine language. Just understand that there are legitimate reasons that others prefer not to use it which have nothing to do with refusal to use state of the art.