3 ms·
Coming in from the harsh fronts of YouTube, Reddit and 4Chan, this is an awfully tame flame war. In any case, a lot of good points are raised by both sides. As
by qwertyuiop924 10y ago
Coming in from the harsh fronts of YouTube, Reddit and 4Chan, this is an awfully tame flame war.
In any case, a lot of good points are raised by both sides. As an Emacs user, I appreciate Stallman's points, but he does make a fatal mistake, in that he doesn't include popular extensions like itcl in his evaluation. That's like evaluating lisp without considering popular macros, or the potential of macros. While that doesn't alleviate the problems Stallman has with tcl's lack of datastructures, those are not insurmountable with a couple of well-written C-extensions, assuming that tcl's C interop is any good at all.
Also, tcl is a pretty terrible lisp, as although they have a lot on common, the differences are substantial enough for fans of one to have some degree of distaste for the other.
The most entertaining part is that Stallman criticises tcl for lacking common datastructures, being slow, and having bizarre syntax that appeals to hackers alone. ESR (and, I believe, Stallman, although I am unsure), goes on to note the common use of dynamic scope, confusing quoting mechanism, and the horrors of upvar and upvalue.
Gee. DOES THAT. SOUND. FAMILIAR?
If it does, it's because most of those problems also appeared in MacLisp, the direct predecessor to Common Lisp. Many of them also appear in other lisps:
Linked lists, an unusual datastructure, are one of the few well supported by Lisp. Lisp used to be quite slow, and many implementations still are. Dynamic scope is still the default in elisp, and macros just barely hold the system together when you're writing lots of code, a cicumstance that Stallman claims elisp is actually better in than tcl. As for confusing quoting, `(there ,(is 'quite) ,@(a lot) of that in lisp). And upvar and upvalue are in some ways less dangerous than macros.
Actually, lisp used to have its own version of upvar and upvalue, coupled with a mechanism called the fexpr that let you get rid of a lot of the quotes. These were not implemented in most later lisps, due to the fact that they are nearly impossible to optimize well.
At the end of the day, whether you love or hate tcl and lisp, there are people out there that are stuck using far worse extension languages. Like these poor sods: https://gitlab.com/xonotic/xonotic/wikis/QuakeC/Introduction_to_QuakeC https://gitlab.com/xonotic/xonotic/wikis/QuakeC/Introduction....