
On 13/12/2012, at 7:12 PM, Rustom Mody wrote:
On Thu, Dec 13, 2012 at 1:29 AM, Brandon Allbery
wrote: On Wed, Dec 12, 2012 at 12:51 PM, Andre Cunha wrote: Janek, did you mean something like Rubygems (http://rubygems.org)? It manages the download, installation and manipulation of Ruby packages, called "gems". A gem can contain executable programs or libraries (just like traditional packages, like .rpm). Rubygems also handles dependencies between gems, and allows you to update them. But doesn't solve the actual problem;
Considering that this question is such a FAQ, I believe it would be worthwhile discussing what we think the 'actual problem' is.
When Algol-60 was being implemented, the challenge was how to compile using only 2000 words of memory (or something as ridiculous as that). The solution was to make a compiler with 20-odd passes. [Sorry if the details are wrong; its from (neurological) memory]
Why rely on memory? The Algol-60 compiler Dijkstra worked on was for the Electrologica X1. "The basic X1 machine, fitting in a large writing desk, consisted of an arithmetic unit and several registers, in particular two 27-bit accumulators A and S, a condition register, an instruction register, and a 16-bit index register. A and S could be used together as a single double-length register for multiply and divide operations. The basic machine had a built-in 'live' (i.e. random-access) memory of 512 words of 28 bits (including 1 sign bit and 1 parity bit); and 700 words of 'dead' (i.e. read-only) memory. More memory could be added in separate storage cabinets, up to 32768 words, including additional read-only memory. Normally there was no magnetic drum, disk or other type of secondary memory (a magnetic drum was an optional extension, however)". [http://www.science.uva.nl/faculteit/museum/X1.php -- edited lightly] Apparently the actual machine the compiler was built on had 4 kilo-words. That compiler read the source paper tape exactly twice. "The greatest shortcoming of the system, however, was the almost complete absence of syntax checks and run–time checks", something that was to be repeated in the development of C. Another front end that did more thorough syntax checking was written a few years later; Lint saw _that_ part of Algol 60 history repeated too. A leaflet in my letterbox yesterday advertised a headless box with 16GB of memory for NZD 700. We've come a long way.