3 ms·
And the implementation of garbage collection was, on at least two occasions, postponed. Once in the first implementation [1] and a second time in the early MIT
by pg314 10y ago
And the implementation of garbage collection was, on at least two occasions, postponed. Once in the first implementation [1] and a second time in the early MIT Lisp Machines [2] (you just ran the machine until you ran out of memory which could take days or weeks, after which you saved the world to disk and rebooted).
[1] http://www-formal.stanford.edu/jmc/history/lisp/node3.html http://www-formal.stanford.edu/jmc/history/lisp/node3.html
[2] https://www.csee.umbc.edu/courses/331/resources/papers/Evolution-of-Lisp.pdf https://www.csee.umbc.edu/courses/331/resources/papers/Evolu...
- rntz 10y ago"saving the world to disk and rebooting" sounds like a primitive form of garbage collection to me :)
- pg314 10y agoIt is. From that second link: "Such copying back and forth to disk was equivalent to a slow, manually triggered copying garbage collector."
- qwertyuiop924 10y agoMcCarthy's writing style is highly entertaining. Although I still have no idea what "Pornographic Programming" is...
- __jal 10y agoI'm only guessing, but it seems like he means "impure functions", e.g., side effects.
- DonHopkins 10y agoI suspect it has something to do with bondage and discipline. "... decisions ... later proved unfortunate. These included ... the use of the number zero to denote the empty list NIL and the truth value false. Besides encouraging pornographic programming, giving a special interpretation to the address 0 has caused difficulties in all subsequent implementations." -John McCarthy Maybe he considered NIL to be his own billion dollar mistake. Tony Hoare / Historically Bad Ideas: "Null References: The Billion Dollar Mistake" [1] "Abstract: I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years. In recent years, a number of program analysers like PREfix and PREfast in Microsoft have been used to check references, and give warnings if there is a risk they may be non-null. More recent programming languages like Spec# have introduced declarations for non-null references. This is the solution, which I rejected in 1965." -Tony Hoare [1] http://lambda-the-ultimate.org/node/3186 http://lambda-the-ultimate.org/node/3186
- eschaton 10y agoI suspect it was more that ()-is-nil-is-false-is-0 is entirely visible to the programmer ("see through") rather than an implementation detail hidden by the language. I still need the occasional reminder myself that nil is () is nil when writing Common Lisp code, lest I do un-idiomatic things like set a slot's initial value to '().