Shorthand for "claims that innovative feature/concept X first appeared in product/language Z". While we're really interested in the evolution (the how, the why and the who), the claim information may be the only real data available from which to construct the former. In this sense, the title bends the meaning of "claim" a little to allow that one person may make a claim on behalf of another. "Oh, by the way, Robert was the first person I saw try that technology, but he's too modest to say that he invented it."
Garbage collection was first designed by JohnMcCarthy
in 1958 as part of the implementation of the LispLanguage
. Since then, it has been a computer science staple that is consistently seen in operating systems and languages. Most people are surprised to hear that even many BASIC compilers use garbage collection for strings and substrings. HenryBaker
really helped to take GC to the next level beyond simple mark-and-sweep to more generational, opportunistic, and scavenging strategies.
- [[I believe that Lotus123 used a smart garbage collector in concert with its novel dependency tree / 'uses'-hierarchy for figuring out which formulae need to be re-calc'ed when values change in the spreadsheet. Wish I could remember the guy's name, the initials were 'R.R.' I think. -- Derek Robinson
''Was this novel? It's only a use of LazyEvaluation
. And I thought Borland (authors of Quattro) attempted to patent this technique]]
Around 1965, researchers at IBM were attempting to measure the effectiveness of some new ideas. They needed a way to shut off these new features so they could measure the performance of their machine with the options both on and off. These researchers were from the IBM Yorktown Research center. They devised a scheme to partition the machine into "smaller pieces". These pieces had to be able to manage their own resources allowing the researchers to test many different conditions in the system at the same time and without altering the other "pieces" of the system. They believed an implementation as a virtual machine could work extremely well for this experiment. After this experiment, IBM eventually went on and developed an implementation of its notion of a virtual machine and began selling it as a real world Operating System for multiple user environments. This resulted in the IBM 360 model 67 and IBM CP67 in 1967. This system is now known as the IBM System 370 (S/370) and IBM System 390 (S/390).
The first to use VirtualMemory? was probably the Atlas computer, operational in 1962. Actually, it is important to note that most of the innovation on this Wiki page, especially Virtual Machines, Virtual Memory, and Garbage Collection, first appeared in Operating Systems. The programming environment and the Operating System were one in the same. Actually, COBOL might have been the first dedicated programming language to have a VirtualMachine. I mean, any language with P-Code would require a Virtual Machine to run the P-Code. -- RobertDiFalco
Runtime or Dynamic Compilation
The very first was Ken Thompson who compiled regular expression search algorithm at runtime in June of 1968. I'm pretty sure the first language was APL operationally in the early 70's and discussed in the 60's. Deutsch and Schiffman pioneered the use of dynamic compilation for an object-oriented language in SmallTalk-80 in 1980. Recently, Chambers and Ungar pushed the envelope even further in the SelfLanguage and Oberon has gone even further. -- RobertDiFalco
[[Here I'd point the finger at ChuckMoore
(c. 1970 'as-such', though he'd been developing his own portable programming system since the mid-60's as a programming hired-gun) as being an early-ish example of both Virtual Machine (a virtual Burroughs B-3600 -- the original stack-based computer c. 1960) and Incremental Compiler. Having written that, I'd add that WilliamBurge?
designed an interpreted programming system, 'GIPSY', which in many respects prefigured FORTH. It included lambda abstraction and was for sure the first appearance of HaskellCurry
in a computer language. You'd be hard pressed to find out anything more about it I'm afraid, though many of the ideas in GIPSY were later treated in Burge's book, "Recursive Programming Techniques" (1975).
Further to the topic of this missing link between combinatory logic / LambdaCalculus
and the FORTH language -- check out (speaking of GarbageCollection
's papers on 'LinearLisp?
', where he looks at FORTH and sees, yup, pure combinatory logic --> http://www.pipeline.com/~hbaker1/home.html
(Used to have some jim-dandy arguments with JimDesRivieres?
(now meta-interpreting CLOS at Xerox PARC) about Lisp as a 'backwards FORTH'. -- Derek Robinson]]