A few days ago, I posted this, in response to this post. It was actually a general frustration on my part, and not a rock hurled at the poster. It has now received this response, and I do have some issues with that:
The weakness of both Lisp and Smalltalk (and many other cool researchy languages), is that neither have ever been that good at talking to the machine, which makes them pretty much useless for real work. Today, we have lots of "managed" languages that can talk to system pretty well. Java can do that, and the various languages atop the .NET CLR can do that. And from an industrial perspective that's important. I'm oversimplifying a bit here, but that's been the reality / perception at various points in history over the last 20 years.
From where I sit, it looks like the best we can hope to do is to get an advanced language which can use the CLR's ability to talk to the machine. And the CLR that it talks to ought to be the ECMA / Mono one, not the Microsoft one. That would get you a decent language, portability across hardware / os at a binary level, and the ability to talk to the hardware in a rich fashion.
huh? Useless for real work? Where in the heck does that come from? Most applications, in simplified form, look like this:
- Grab Data from Database
- Present Data for user to view/modify/create
- Push any modified data back into the database
Boil it down, and that's what most apps are. Not number crunching, not games in need of the fastest hardware/software (although, Lisp and Smalltalk have been and are being used in games). To me, this sounds an awful lot like the general industry problem of premature optimization - developers the world over are obsessed with making things faster - never stopping to ask if it's the real problem. In most cases, it's not
And managed code is a good thing
- having access to pointers is a necessary evil for some levels of work, but for the vast majority of applications, they are a useless distraction - in reality, little more than an error generator. I've done just fine without pointers for a decade, and will do just fine for another decade without them.
I wasn't the only one to have this thought; Chris Double weighs in
Maybe I'm misunderstanding Ted but I don't agree with this statement. Perhaps it was true in the past but modern Lisps and Smalltalks seem to have no problems talking to the machine.
Dolphin Smalltalk applications look and feel exactly like normal Windows applications. And that's because they are. It's also very easy to call API functions.
Corman Lisp, a Common Lisp system for Win32, also has very good methods of talking to the machine. You can practically paste in a C header file definition for the API and Corman Lisp will generate the necessary Lisp code. You can create DLL's in lisp that are callable by C programs. You can even code in-line assembler if you really want to get down and dirty.
Now, VisualWorks doesn't (yet) have the capabilities that the Chris mentions above. But it does pretty well, and the VW VM will be available as a DLL for 7.1 - which means that you'll be able to deploy VisualWorks apps as DLL's at that point. This blog is Smalltalk powered, and the BottomFeeder
application I spotted these posts with is a client application that integrates pretty nicely with Windows via the registry.
I don't get it....