Live data from Hacker News

Symbolics Lisp Machine Museum

smbx.org

121–130 of 136 posts

Re: Symbolics Lisp Machine Museum

#121
post #116

Earlier quoted context omitted.

> But that's just me. No, it's not just you. Most Lisper thought that way. But the target weren't Lisp developers, it were C++/Apple Pascal developers. Basically similar purposes which Java was designed for: general 'mainstream' application/OS developers from mobile systems upwards. Management did not think that an s-expression-based syntax would be a success with developers used to use Pascal, C and C++. > The IDE w…

I guess that makes sense. Kind of like how Infocom was compiling their software on a VAX, and distributing it to the micros. But it's weird to think about how much Lisp/Smalltalk related stuff came out of Apple in the 80s and 90s. I can't imagine them doing that stuff now.

Apple is doing Swift now. Goes into a similar direction: a "better" language than Objective-C / C++ for application development.

At that time there were key Lisp (and Smalltalk) people in Apple's management, especially Larry Tesler: https://en.wikipedia.org/wiki/Larry_Tesler

He described why they were working on Dylan:

http://lispm.de/docs/prefix-dylan/book.annotated/foreword.ht...

Re: Symbolics Lisp Machine Museum

#122
post #117

Earlier quoted context omitted.

One of their great failings. I'm a Scheme user, so I feel a bit weird without TCO.

The designers argued that a million-line software (the OS + basic applications) was easier to debug/develop without having TCO everywhere. It makes stack traces useless, unless one thinks of clever ways to keep tail calls recorded, which makes it complex/tricky. The basic machine architecture is a stack machine with compact and nice instructions. Stack traces were useful then. The compiler also was not very sophistic…

It's an entirely reasonable tradeoff, which I understand. But not having TCO is a strong negative from the language perspective, IMHO. Not an impossibly bad one, but it's really nice.

Re: Symbolics Lisp Machine Museum

#123
post #121

Earlier quoted context omitted.

I guess that makes sense. Kind of like how Infocom was compiling their software on a VAX, and distributing it to the micros. But it's weird to think about how much Lisp/Smalltalk related stuff came out of Apple in the 80s and 90s. I can't imagine them doing that stuff now.

Apple is doing Swift now. Goes into a similar direction: a "better" language than Objective-C / C++ for application development. At that time there were key Lisp (and Smalltalk) people in Apple's management, especially Larry Tesler: https://en.wikipedia.org/wiki/Larry_Tesler He described why they were working on Dylan: http://lispm.de/docs/prefix-dylan/book.annotated/foreword.ht...

I should probably look into Swift at some point, but I've never found the time, and I find languages like Rust, Go, Python, Ruby, JS, Haskell, CL, and Scheme far more compelling.

Re: Symbolics Lisp Machine Museum

#124
post #117

Earlier quoted context omitted.

One of their great failings. I'm a Scheme user, so I feel a bit weird without TCO.

The designers argued that a million-line software (the OS + basic applications) was easier to debug/develop without having TCO everywhere. It makes stack traces useless, unless one thinks of clever ways to keep tail calls recorded, which makes it complex/tricky. The basic machine architecture is a stack machine with compact and nice instructions. Stack traces were useful then. The compiler also was not very sophistic…

I've long thought the right thing for Common Lisp would be to provide a way to declare sets of functions such that any tail call from one member of the set to another would be TCO'd; all other calls would push stack. This lets you write sets of mutually tail-recursive routines without forcing TCO on the entire system.

Re: Symbolics Lisp Machine Museum

#125
post #47

Earlier quoted context omitted.

Though it kind of sucks that Tail Call Elimination is such a difficult task on the JVM. Scheme kind of gets you thinking in a way that works iteratively, but gets expressed recursively. Its easy to read, and can make for some great optimisation without being premature. The JVM does not really support this style of programming - despite LISP's syntax leading towards it.

Ironically, the Lisp Machines didn't have TCO either.

I wouldn't say that it was appropriate there, either.

I really wish I could get my hands on a LISP Machine.

I love the idea of LISP being so close to the metal, but that power means some design tradeoffs.

Scheme makes sense with TCE.

I'm not sure InterLISP and the like need it - memory is limited and you work without so many of the system overheads I'm used to with modern systems. Iteration is less costly here, and that makes it easier to not need recursive design. (Which is more expensive).

In simple terms:

Why worry about blowing up a stack you don't need, when you've thought long and hard before you allocated it?

Re: Symbolics Lisp Machine Museum

#126
post #87

Earlier quoted context omitted.

The early versions of that were used for the Lisp OS - actually more than one. As usual, the IDE was implemented in Common Lisp.

Honestly, from the look of it, I'd like earlier versions of Dylan better than the language we ended up with. I never really liked the non-sexpr syntax. But that's just me. The IDE was really written in CL? Huh. I'd have thought that they would have gone the self-hosting route.

The s-expression version of Dylan was my all-time favorite programming language. I've tried to be interested in the present version of Dylan, but it hasn't worked.

The first version of the OS for Newton was written in a language called Ralph (named for Ralph Ellison, the author of Invisible Man). Someone persuaded John Sculley that writing an OS in Lisp was a crazy idea, so he ordered Larry Tesler to redo it in C++. Larry asked a small group of us to see if we could find a role for Ralph on Newton. We probably took that mandate more broadly than Larry intended; we wrote another whole OS (except for the microkernel and the graphics kernel; we reused the the same ones that the C++ effort was using). It was probably the most intense and rewarding 18 months of my programming career. There were some really cool things that happened, and some really tragic ones.

Later it was decided that "Ralph" was not a good name for the language, and we chose "Dylan" in a process that yielded a few mildly funny stories.

Ralph was basically a subset of Scheme with a few special forms renamed, plus a subset of CLOS, plus a few additional extensions. All built-in Ralph datatypes were CLOS-style classes.

The native-code compiler was written in Macintosh Common Lisp. The development environment was an extended version of MCL called "Leibniz". Besides the usual MCL features, it additionally had a parallel set of tools--for example, in addition to the Lisp Listener, there was a Ralph Listener. Common Lisp code was compiled to native code and ran on the Mac's CPU. Ralph code was compiled to native code and ran on the Newton's CPU. At first the Newton motherboard was a big honking PC board jammed into a Nubus slot, so big that I had to leave the top off my Macintosh IIfx when it was installed. Later a ribbon cable connected the Nubus to a prototype Newton tablet-type device.

Making Ralph self-hosting on Newton would have been a lot more work, we would have had to live without a host of useful development features for a long time, and it would have required special target hardware with much more storage than Newton was intended to have. Using a cross-compiler written in Common Lisp neatly solved all those problems, plus it also gave us all of MCL's rather nice tools plus whatever extensions we chose to add.

Apple did do a bunch of stuff in Lisp around that time. For example, it did GATE, a knowledge-based automated testing system invented by Matt Maclaurin (I worked on that for a while), and SK8, the fabled "HyperCard on Steroids" invented by Ruben Kleiman (I worked on that for a while, too).

However, Lisp was never really a mainstream tool at Apple, except in certain groups in ATG (the Advanced Technology Group, which no longer exists). In fact, the only mainstream languages at Apple were, in rough chronological order, 6502 assembler, 68000 assembler, Pascal, C, C++, Objective-C, and now, of course, Swift. All kinds of languages were used here and there, but only the ones on the mainstream list had any great general acceptance.

Re: Symbolics Lisp Machine Museum

#127

Earlier quoted context omitted.

Honestly, from the look of it, I'd like earlier versions of Dylan better than the language we ended up with. I never really liked the non-sexpr syntax. But that's just me. The IDE was really written in CL? Huh. I'd have thought that they would have gone the self-hosting route.

The s-expression version of Dylan was my all-time favorite programming language. I've tried to be interested in the present version of Dylan, but it hasn't worked. The first version of the OS for Newton was written in a language called Ralph (named for Ralph Ellison, the author of Invisible Man ). Someone persuaded John Sculley that writing an OS in Lisp was a crazy idea, so he ordered Larry Tesler to redo it in C++.…

BASIC in the old times, maybe?

Re: Symbolics Lisp Machine Museum

#128

Earlier quoted context omitted.

Honestly, from the look of it, I'd like earlier versions of Dylan better than the language we ended up with. I never really liked the non-sexpr syntax. But that's just me. The IDE was really written in CL? Huh. I'd have thought that they would have gone the self-hosting route.

The s-expression version of Dylan was my all-time favorite programming language. I've tried to be interested in the present version of Dylan, but it hasn't worked. The first version of the OS for Newton was written in a language called Ralph (named for Ralph Ellison, the author of Invisible Man ). Someone persuaded John Sculley that writing an OS in Lisp was a crazy idea, so he ordered Larry Tesler to redo it in C++.…

Thanks for the tremendous amount of info. Now I get the lack of self-hosting.

Yeah, I'm a pretty big fan of Scheme, so I would have probably liked Ralph. We do actually have CLOS-type classes over in schemeland (although not everything is an object by default, of course) now, and by "subset of scheme," most people mean "no call/cc," which I likely wouldn't miss too much.

Re: Symbolics Lisp Machine Museum

#129
post #127

Earlier quoted context omitted.

The s-expression version of Dylan was my all-time favorite programming language. I've tried to be interested in the present version of Dylan, but it hasn't worked. The first version of the OS for Newton was written in a language called Ralph (named for Ralph Ellison, the author of Invisible Man ). Someone persuaded John Sculley that writing an OS in Lisp was a crazy idea, so he ordered Larry Tesler to redo it in C++.…

BASIC in the old times, maybe?

BASIC was a product for Apple customers; as far as I know it was never a mainstream choice for writing system or application software at Apple. The first 6502 assembler I ever used was written in BASIC, but that was on a Commodore machine, not an Apple machine.

Re: Symbolics Lisp Machine Museum

#130

Earlier quoted context omitted.

The s-expression version of Dylan was my all-time favorite programming language. I've tried to be interested in the present version of Dylan, but it hasn't worked. The first version of the OS for Newton was written in a language called Ralph (named for Ralph Ellison, the author of Invisible Man ). Someone persuaded John Sculley that writing an OS in Lisp was a crazy idea, so he ordered Larry Tesler to redo it in C++.…

Thanks for the tremendous amount of info. Now I get the lack of self-hosting. Yeah, I'm a pretty big fan of Scheme, so I would have probably liked Ralph. We do actually have CLOS-type classes over in schemeland (although not everything is an object by default, of course) now, and by "subset of scheme," most people mean "no call/cc," which I likely wouldn't miss too much.

Ralph lacked call/cc, as you suggest. It did support upward continuations, or "exits", using a special form called bind-exit.

Scheme implementations of CLOS are much more common now than they were in 1992. The only ones I remember from around then are RScheme, Oaklisp, and of course Gregor Kiczales' tinyclos.

As far as language features, I still like Ralph the best of any language I've used, though there are things from newer languages I would want it to incorporate if it still existed today. But the actual usable language I like best today is Common Lisp.

There are a handful of other languages I like a lot--Scheme, Haskell, and ML are at the top of the list--but when I use them seriously, I miss Common Lisp. I don't miss any of them when I use Common Lisp.

I didn't miss Common Lisp or any other language when I was using Ralph.

Post reply on HN