[Cuis-dev] Emacs & Smalltalk

Casey Ransberger bahweep at icloud.com
Sat Jan 1 20:19:32 PST 2022


I’m sure I’m late to the conversation. I used Emacs for a long time. Loved it. It’s not Smalltalk. 

Smalltalk, to be fair, is arguably a Lisp. Or maybe it’s a thing that used to be a Lisp and became something of its own. This seems borne out by early versions of the language, before the (somewhat Turkish?) grammar was introduced as a shorthand for sending messages to objects. Array literals still look like Lisp lists with a # at the front. 

There are some major linguistic differences though. Emacs never switched to lexical scope IIRC, but all the major Smalltalks had to for performance reasons. Emacs didn’t, in part because it didn’t have to implement the entire world, just the programming environment. Emacs adapted to the post-Lisp-machine world and accommodated operating systems. This was pragmatic. 

Smalltalk still largely rejects the entire concept of operating systems (“there shouldn’t be one”) and modern versions of it are semantically closer to Scheme than Lisp. Lexical closure semantics is maybe the biggest difference. Someone else can probably better speak to the matter of non-local returns. I don’t know if Scheme has them. 

Anyway, you can do anything you’d want to do in Lisp or Scheme using Smalltalk. In some cases Smalltalk may be a bigger pain in the ass for the same job. S-expressions are terse. This is subjective, but I’ll posit that for most jobs, Smalltalk is less of a pain in the ass, and having to type out the verb phrases makes it a lot more readable. So I guess we front-load the work of expressing ourselves clearly in Smalltalk. I’ve never used a classic Lisp machine, or any of the ones with full-blown GUIs, so I can say that the discovery and debugging tools in Smalltalk are the best that have survived the whirling vortex of poor decision-making that filled the massive vacuum left behind by the legendary JCR Licklider. 

2 cents, I probably got it all wrong. I’d rather use Smalltalk than Emacs, which is why I want built-in support for retro fixed-width fonts. 

—Casey

> On Dec 31, 2021, at 1:54 PM, Mariano Montone via Cuis-dev <cuis-dev at lists.cuis.st> wrote:
> 
> El 31/12/21 a las 18:44, Mariano Montone escribió:
>> Yes, but in the rest of the system you also get "objects" all the time
>> too. For example, consider this:
>> 
>> (eq '(hello world) (hello world))
> 
> I made a typo. It should be:
> 
> (eq '(hello world) '(hello world))
> 
> => nil
> -- 
> Cuis-dev mailing list
> Cuis-dev at lists.cuis.st
> https://lists.cuis.st/mailman/listinfo/cuis-dev


More information about the Cuis-dev mailing list