5 ms·
It's interesting to see the differences - the Interlisp machine is pretty much a "graphical workstation" which is recognizable today, though in monochrome; the
by shrubble 3y ago
It's interesting to see the differences - the Interlisp machine is pretty much a "graphical workstation" which is recognizable today, though in monochrome; the CADR is more spartan on the GUI side.
I am slowly learning Lisp and have the Interlisp VM running on my system, and it executes very quickly on even 10 year old hardware; which of course is 1000 or more times faster than what it originally ran on.
- _19qg 3y agoOne of the differences is that Interlisp-D used smaller windows. For example the structure editor we see in the video edits one function. The MIT CADR uses often full-screen windows and EINE/ZWEI/Zmacs usually edit files with several definitions. The MIT CADR demo showed how to split the screen into several windows, like several editors and listeners (REPLs). Thus splitting the screen into windows or panes was normal, but you don't have to. You can place windows with the mouse (and reposition/resize them) as well. I was a bit surprised to see that they could demo an early MIT CADR at Xerox PARC. These were large, fragile and rare machines at that time. The MIT CADR was about to be commercialized by LMI, Inc. and Symbolics, Inc.. One other thing to note is that a lot of research went into the Interlisp-D IDE (not just the graphical version): interactive help, source code management, programming by example, window manager, programmer's assistants, ... The video for example shows how refactor Lisp programs using the source code management tools.
- gumby 3y ago> I was a bit surprised to see that they could demo an early MIT CADR at Xerox PARC. These were large, fragile and rare machines at that time. They weren't extraordinarily fragile; robot wirewrapping is pretty robust. The next year we shipped a couple of them to Paris and I used them just fine, along with a KL-20 that also made the trip OK.
- DonHopkins 3y agoWhat more can you say about or link to of the wirewrap robot? I remember seeing it in the lab, but never saw it in action, and I haven't been able to dig up anything more about it. I'd love to see a video of it doing its thing! Maybe its corpse appears in this video from 1993, which might be years too late, but it does show off some of its beautiful work. David Siegel: MIT AI Lab: https://www.youtube.com/watch?v=hp9NHNKTV-M https://www.youtube.com/watch?v=hp9NHNKTV-M >An old video of the 9th floor of 545 Tech Square (MIT building number NE43), filmed around 1993. Check out the Puma graveyard, and all the little swarming space robots! I wonder what ever happened to Minsky's tentacle: AI History: Minsky Tentacle Arm https://www.youtube.com/watch?v=JuXQPdd0hjI https://www.youtube.com/watch?v=JuXQPdd0hjI >This film from 1968 shows Marvin Minsky's tentacle arm, developed at the MIT AI Lab (one of CSAIL's forerunner labs). The arm had twelve joints and could be controlled by a PDP-6 computer or via a joystick. This video demonstrates that the arm was strong enough to lift a person, yet gentle enough to embrace a child. The stuff at the end reminds me of Golan Levin's adorable googly-eyed worm robot (which was a menacing BB IRB-2400/16 underneath): Interactive Worm Robot: https://www.youtube.com/watch?v=OjUwH9tOdus https://www.youtube.com/watch?v=OjUwH9tOdus >"Double-Taker (Snout)" (interactive robotic installation, 2008) deals in a whimsical manner with the themes of trans-species eye contact, gestural choreography, subjecthood, and autonomous surveillance. The project consists of an eight-foot (2.5m) long industrial robot arm, costumed to resemble an enormous inchworm or elephant's trunk, which responds in unexpected ways to the presence and movements of people in its vicinity. Sited on a low roof above a museum entrance, and governed by a real-time machine vision algorithm, Double-Taker (Snout) orients itself towards passers-by, tracking their bodies and suggesting an intelligent awareness of their activities. The goal of this kinetic system is to perform convincing "double-takes" at its visitors, in which the sculpture appears to be continually surprised by the presence of its own viewers — communicating, without words, that there is something uniquely surprising about each of us. More information at http://www.flong.com/projects/snout/ http://www.flong.com/projects/snout/. https://web.archive.org/web/20080803011529/https://www.flong.com/projects/snout/ https://web.archive.org/web/20080803011529/https://www.flong... https://library.e.abb.com/public/76ee88849028406b94407ad406dd703c/3HAC042195%20PS%20IRB%202400-en.pdf https://library.e.abb.com/public/76ee88849028406b94407ad406d...
- shrubble 3y agoWould you know if any of them are still around? Is there a good emulator that allows them to run well on new-ish x86 or ARM systems?
- amszmidt 3y agoThis is not an “early” CADR, it is just a CADR. By ‘81 they were heavily used at the AI lab and as gumby mentions, they aren’t fragile little machines. No running (real) CADRs exist, unless you consider the two FPGAs on my desk. For a CADR simulator you can check https://tumbleweed.nu/lm-3 https://tumbleweed.nu/lm-3 — I managed to restore the last system version for it last year or so, and we are continuing hacking adding and fixing things. E.g. you can run the simulator against the Global Chaosnet and talk to other LispMs and ITS machines (simulated or not). And some of us do run it 24/7 as a file server for other LispMs.
- shrubble 3y agoThat is amazing serendipity since I was thinking of buying PDP10 replica, which runs ITS...thank you!
- JonChesterfield 3y ago> No running (real) CADRs exist, unless you consider the two FPGAs on my desk You've instantiated a lisp machine on an FPGA? That's superb. Have you put any information about that online?
- amszmidt 3y agoEverything is on the LM-3 project web site (https://tumbleweed.nu/lm-3 https://tumbleweed.nu/lm-3). :-) The current HDL implementation though only works on a unobtanium FPGA board. We are slowly working on porting it over to something that can actually be bought these days. Help needed if you are keen on HDL hacking.
- anthk 3y agoOn that Lisp, I'll guess adapting something like Macsyma would be a no-no because of the constriained specs, right?
- kragen 3y agothe relative speed might depend somewhat on what you're doing. following a random pointer into ram that isn't in your cache still takes something like 80 nanoseconds, while in 01981 it might have taken 500 nanoseconds. but in 01981 executing an instruction also took 500 nanoseconds, and now in 500 nanoseconds this laptop typically executes over 9000 instructions when it's not idle. lisps tend to involve higher proportions of random pointer following than things like golang or numpy
- JonChesterfield 3y agoThat's an interesting point. When arithmetic and memory accesses cost about the same, pointer chasing through graphs works great. The currently popular struct-of-arrays and cache oblivious datastructure patterns only really make sense when arithmetic is essentially free relative to memory.
- kragen 3y agofortran and proto-fortran programmers were using parallel arrays (aka 'struct-of-arrays') since the 01950s, and if you read sutherland's dissertation, you'll see that that parallel array patterns were just the default way of structuring data in computer memories, to the point that they didn't have a name and sutherland felt he had to justify doing things differently, and neither basic nor fortran supported records (structs). the only arithmetic you need to access attribute aa of object oo in parallel arrays is base + (oo << sizebits), and in the usual case, sizebits was 0, the addition was done implicitly by the index-register hardware, and base was an immediate operand in the instruction and so didn't need a separate fetch operation. this is quite comparable to the arithmetic needed for the record/struct approach: oo + offset, where offset is an immediate operand as i understand it, the reason we switched to conventionally using records was not because of efficiency, nor even to support pointer chasing through graphs (you can totally make linked lists in parallel arrays), but for reasons of memory allocation and dynamic object lifetimes