Next Lisps
axisofeval.blogspot.com
axisofeval.blogspot.com
1) Why do I need post-1980's scoping rules? I don't seem to recall any huge advances in variable scoping being made since then.
2) Comparing Python and Java's scoping is like comparing apples and oranges. Python is a dynamically typed language where everything is built at run time while Java is a statically typed language where everything is built at compile time.
I can't help but think of these kinds of blog posters of being a kind of anti-Guido van Rossum: smart, knows a lot about their domain (but with functional programming instead of object-oriented programming), but makes absolutely stupid assertions about other schools of thought they know nothing about (but with object-oriented programming instead of functional programming). Do we really need to destroy other peoples' way of doing things to feel good about our way of doing things?
WRT to 2, your scoping discipline is pretty orthogonal to your typing discipline. E.g. dynamically typed mainline LISP was dynamically scoped before Common Lisp adopted Scheme static scoping. And I'm sure there are dynamically scoped statically typed languages out there (if I ever learned about one, I would have tried to forget it as soon as possible (worst of both worlds)).
Whether perl is part of the lisp community is another matter :-)
Tail calls need to be in object-oriented languages too.
(Just to provide your claim with some supporting arguments.)
I was trying to be funny by making a ridiculous claim without "knowing anything." I guess it didn't come off as funny. :)
>> Thank you, Guy, for emphasizing the importance of proper tail-call implementation (let's call it PITCH here) for software design and refactoring. When I delivered my | ECOOP keynote in 2004, I made the PITCH point slightly differently using the | Design Patterns book. I developed some code using the patterns from the book in Java. I requested and received confirmation that the code was truly OO oriented and truly according to Their Book. Then I tested it and it worked fine. Then I stress-tested it (on a not so large input), and it failed with stack overflow.
>> The next step was to demo the same code in the | PLT Scheme class system, which looked very similar to the Java code. And it ran great on those stress tests and even larger ones. So I asked the 300-400 people in the audience what the problem was and why this slow, interpreted language Scheme did it right and Java, C#, Eiffel, Python, etc got it wrong.
>> Not one person had any insight so after a minute of playing with them, I told them about the story of "Smalltalk to Actors to Scheme and how PITCH had 'come along for the ride'" (you may recall our email exchange in the spring of 2004 to confirm the story of 'apply'). And I did reinforce how much knowledge the OO research community has forgotten over the years.
>> Sadly, the reaction was surprisingly hostile from some corners in the room. One person was especially outspoken in arguing that we all know that we just need three or four special constructs -- and they may have to be map or for-each or such -- and we'd be in business. Given that it was a public exchange, it was difficult to point out to him how messed up his argument was.
>> While I have received many positive emails about the talk (my slides are on-line and people find them time and again), this message about PITCH deserves to be repeated and repeated and repeated for OO audiences. Let's keep going at it.
No, but it's a valid concern that if you don't, you'll be stuck programming in it when it becomes popular (Java, Python, PHP, ...).
(vector 1 2 3).
Hashtables can only be created explicitly: (make-hash-table) then
(setf (gethash "one" *) 1)
but you're free to create your own syntax or shortcuts, which is what Alexandria provides: (hash-table-alist '(("one" 1) ("two" 2) ("three" 3)))What sort of strange definition of progress is the author using for languages?
It's the reason one of those "match a language to a picture" items had Clojure represented by Locutus of Borg, or as Reddit commentator pillsy put it, "Clojure is a terrifying meld of a beloved character and an unreasoning alien onslaught."
Whereas I didn't see much merit to this guy's Clojure comments. E.g. yep, Clojure is uglified by the syntax for maps and vectors, but the generalization this allows, by making them first class homoiconic data structures, is potentially worth it.
Apart from that, the article is lacking substance.