4 ms·
> just restrict the use of macros Precisely. The problem with the lisps of old was entirely cultural. People would go do crazy wild things and then not bother
by brandonbloom 13y ago
> just restrict the use of macros
Precisely. The problem with the lisps of old was entirely cultural. People would go do crazy wild things and then not bother to interoperate with the rest of the world. Meanwhile, the Clojure community has lots of experimentation, but ultimately produces a large number of stable, quality, reusable libraries.
Large scale C++ teams often require approval for operator overloading or "dangerous" features. Can easily do the same for macros. Moreover, we now have distributed version control and can utilize lieutenant workflows, so we can dispatch with this silly "commit bit" notion that means bad code sneaks in past domain experts with ease.
- lispm 13y agoLisp has had widely different uses: * a teaching language * a research tool * an application programming language Lisp has been already in times when the technology you are using today was still under invention. Lisp existed before Smalltalk, C, C++, Java, ... thus often technology was developed in an unstable surrounding where inventions are just being made. Lisp also had to keep track of the changing IT landscape. During the 70s people were using DEC PDP computers. Thus you find evidence for everything. There are well-documented stable, nicely reusable, code bases in Lisp. Clojure is most of the time married to a small eco-system: Java/JVM. Lisp has seen and supported many more eco-systems and will see even more in the future.
- pjmlp 13y agoAs a language geek, I tend to hunt the Internet for old papers and manuals related to OS and languages. The actual mainstream situation could be so different if the Xerox PARC research in terms of programming languages and OS besides the GUI, had become mainstream instead of the AT&T ones. The Interlisp, Smalltalk and Mesa systems were great computing platforms compared with what UNIX offered.
- agumonkey 13y agoI tend to believe that with time, good genes that were previously trimmed for very pragmatic reasons, will reappear in more favorable contexts and spread.
- lispm 13y agoStill Lisp was on Unix on day two and was always a very popular platform for Lisp developers. You could even get Lisp Machines from TI with embedded Unix and Lisp Machines from TI and Symbolics which were embedded in Unix. Several Lisp companies made their entire business from Unix: Lucid, early Franz, early Harlequin/LispWorks, ...
- pjmlp 13y agoIt might be, but I imagine having an OS where Lisp is the systems programming language is way different from a system where it is just another language.
- lispm 13y agoYeah, but that does not make it 'better' or more useful. Lisp-based operating systems are no longer used, because they were quite complex (coming out of a research environment) and provided LESS functionality in some crucial areas (for example they were not multi-user - they were one-person, one machine, one 'world'). Additionally they were expensive. The Xerox Lisp and Xerox Smalltalk workstations one could buy were severely underpowered (RAM, speed, ...).
- Mikera 13y agoI don't think you can credibly describe Java/JVM as a small ecosystem.... there's nothing else remotely close in terms of the combination of runtime platform capabilities and the number of available open source libraries.
- vorg 13y ago> > just restrict the use of macros > Precisely. Enabling macros is the sole justification for the homoiconic syntax, which is often cited as the most offputting feature of lisps for uptake by large programmer teams. If you're going to have two "editions" of Clojure, one with the full feature set for language designers, and the other a more restricted sans-defmacro one for more general programmer use, then why not give that restricted one a more friendly syntax as well, or even just get them to use Java, Python, or whatever.
- brandonbloom 13y ago1) I genuinely prefer variadic prefix notation, even in the absence of homoiconicity. 2) Restricted does not mean "banned". It means that they need to be justified and subject to expert scrutiny. 3) Even if you never write a macro of your own, you're a beneficiary of the syntactic sugar and can leverage macroexpand to demystify otherwise opaque language constructs.
- gruseom 13y agoPet peeve, sorry, but it irritates me that Clojure people act like this guilty-until-proven-innocent policy about macros is somehow original. It has been standard advice for decades. Chapter 8 of On Lisp (1994) is called "When to Use Macros" and its first section is "When Nothing Else Will Do": By default we should use functions: it is inelegant to use a macro where a function would do. We should use macros only when they bring us some specific advantage. I understand from a language marketing point of view why someone might say, "Oh, those other Lisps made wild and crazy use of macros. It was really bad! But we are enlightened and have restricted them." But it's a bogus way of playing to a bogus criticism. It would be better to just say that there's a tradition of how to use macros correctly.
- dandrews 13y agoPlease name a language you use so that whenever you and I disagree I'll be able to cite the "Blub people".