Ponder
GavinWraith (26) 1563 posts |
In 1982 computer science researchers at Cambridge were using Acorn Archimedes. One such was Jon Fairbairn who, as part of his thesis, devised and implemented a non-strict polymorphic functional programming language called Ponder. Ponder became quite famous in the functional programming community, as having the most advanced type-system ever devised. Sadly, Jon Fairbairn later became ill, and his brainchild was never developed. But he did send me four ADFS floppy disks containing the Ponder system, which I have just dug out of an old box. I have moved their contents to a memory stick. The contents are in compressed form, and each disk has an application uncmp to decompress them. To make the Ponder system I need a system on which uncmp runs and also, as far as I can see, an Algol 68c compiler. Is there anybody out there who can help with reviving Ponder? Just from the historical point of view, this seems to me to be an interesting project. The history of computing should not just be about hardware; the ideas and software projects should be valued too. |
Rick Murray (539) 13806 posts |
Forget Ponder, I want some of that time travel action! ☺ |
GavinWraith (26) 1563 posts |
Sorry, that should have been 1985. I have managed to decompress the files using VRPC (RO 4.02). There is quite a bit of Algol68c stuff I do not understand. There are no instructions about how to run any demos. However some of the source files contain interesting, and in places colourful, comments. The TIM (Three Instruction Machine)virtual machine is particularly fascinating. |
David Boddie (1934) 222 posts |
The name sounds familiar, so maybe I saw it in an archive somewhere. Perhaps it was available from one of the FTP sites in the 1990s. Is the TIM the same as the one mentioned in this ROUGOL talk by Paul Fellows, do you think? |
GavinWraith (26) 1563 posts |
No. Arthur Norman was talking of the three combinators S, K and I – actually I is formally redundant because it does the same as SKK. They are defined by Every combinator can be expressed in terms of these and the proof of this is in effect an algorithm for compilation. There was a fashion at one point for implementing functional languages with combinators. Lennart Augustsson had a sweet little language called SMALL using this technique. See Antoni Diller’s book Compiling Functional Languages (ISBN 0-471-92027-4). TIM came later. See TIM: A Simple, Lazy Abstract Machine to Execute Supercombinators by Jon Fairbairn and Stuart Wray, in Springer Lecture Notes in Computer Science No.274, Proceedings of the Functional Programming and Computer Architecture meeting in Portland, Oregon September 1987, page 34. I quote from this:
The timings given at the end of this paper were taken on an Acorn RISC Machine generously lent by Acorn Computer Limited, Cambridge, UK . Thanks for pointing me at Paul Fellow’s talk. Very interesting. |
James Woodcock (307) 32 posts |
There’s an Algol to C translator here. The source for the Debian port may work under GCC under RISC OS. And there’s Algol 68 Genie kicking about the net. I’m not sure how much massaging the ponder sources would need to be able to run on either of those. |
James Woodcock (307) 32 posts |
Some experimentation has shown that the Algol to C translator does not work on ARM (or PPC) machines. Algol 68 Genie looks like a better bet. How is Ponder licensed? Can the source code be distributed? |
James Woodcock (307) 32 posts |
I managed to compile Algol 68 Genie for RISC OS, and have run some sample code from rosettacode. I can send you a copy if you like, or it is simple enough to build from source. |
GavinWraith (26) 1563 posts |
Thanks. It may be that I am biting off more than I can chew. The sources contain files of type ccc, evidently no longer an officially allocated filetype, containing what appear to be commands for some Arthur system programming language. Some precursor of Obey files, maybe? Like this Does this ring any bells with anyone.There are object files and applications compiled from Algol, but I guess they will need recompiling to be usable on a Raspberry Pi. |
James Woodcock (307) 32 posts |
The “.key” line doesn’t strike me as recognisable, but the other 2 lines should be able to be converted to Obey files simply enough. I assume that one of the ponder programs turns ponder source into assembler (called tim. The current executables might run with aemulator, or even under RISC OS 2 or 3 on arcem. It’s probably worth a try. |
David Gee (1833) 268 posts |
Looks to me as if the “.key” line is a way of defining a parameter. Could this be some form of make file (presumably not a current type)? |