|
|
|
|
|
by MBlume
4566 days ago
|
|
Maybe I'm overstating, and maybe there are other languages in between I don't know about. If you look at what's in memory at a given moment, how objects are connected to one another, and how they're connected to code, I don't think Java looks that different to Scheme; apart from continuations, macros, and TCO, you can write Scheme in Java if you're bloody-minded enough and don't mind your lambdas disappearing into masses of curly braces. Actually, looking at http://en.wikipedia.org/wiki/History_of_programming_language... it turns out a lot of languages with the properties I'm describing came before Java, so while Java clearly descends from Lisp in a lot of ways, the connection isn't as direct as I was imagining. |
|
1) Garbage collection
2) Dynamic typing
3) No distinction between primitive values and general values - a value can be used everywhere
4) Lexical closures and higher-order functions
5) A hygienic macro system
6) First-class continuations
7) Space safety guarantees for tail calls ('tail call optimization')
8) A numeric tower
9) S-expression syntax
10) A focus on cons cells and lists as primitive data structures
There's probably something I'm missing, but the only feature that Java shares is the first.