3 ms·
>template meta programming mixed with a lot of C macros... The author cites Lisp macros. C macros, or C++ template metaprogramming, are to Lisp Macros as a 19t
by flavio81 8y ago
>template meta programming mixed with a lot of C macros...
The author cites Lisp macros. C macros, or C++ template metaprogramming, are to Lisp Macros as a 19th century locomotive is to a state-of-the-art MagLev train.
>I would actually argue that macros might be why Lisp didn’t become mainstream; it creates a lot of fragmentation.
This has no substance. Please take a look at how macros are used in Lisp.
>this is a nightmare for tooling
Not in Lisp.
- overgard 8y agoYou say “in lisp”. But which Lisp? Common Lisp or Scheme? And then which implementation of scheme? And which object system? See, that’s kinda my point. If I talk about Python or Java or C# we’re not even having this discussion, because they’re monolithic languages and features are core to the language, not built on top. On the other hand I can’t really move my code between Lisps. And I don’t buy the argument that it’s just because Lisp has been around a long time. Python is almost 30 years old but there’s one canonical version. And seriously, I bet there are a lot of pythonistas that would change things about, for example, the object system if they could (explicit “self” comes to mind), but if they did that the community would fragment with some people using the original system and others using an alternative and it would be hard to integrate new libraries and know the rules of the module you’re working in. It’s a trade off no doubt, but it seems like most people have voted that a rich ecosystem of libraries without compatibility issues is more important to them.
- lispm 8y agoThat's why Lisp has a main standard. Common Lisp. Most other languages, derived from Lisp, are incompatible - like Ruby is incompatible with Perl. Thus Scheme is called Scheme and not Lexical Liwp - it's now a new language family - the family of Scheme dialects - which are grounded in RXRS reports as language standard. It's good that there is only one/two Pythons - but Python competes with a zillion other scripting languages - or they compete with Python. And they are not compatible at all.
- overgard 8y agoMmm, I think it's a huge stretch to say those languages were derived from Lisp. They certainly borrowed/stole a lot of features and were heavily influenced, but that's not the same thing. For instance, it would be way more accurate to say that Ruby is more derived from Smalltalk than it is from Lisp. (And not coincidentally, Smalltalk is a lot like Lisp in that it's a very minimalist language where most of the useful constructs are built on top of a very small core. And similarly it's also very balkanized.) By the way, I don't mean to imply I don't like these minimalist languages with powerful extensibility like Lisp and Smalltalk. They're very elegant. I just think that there's a very large tradeoff to going that route. If I'm writing code for myself I love using Lisp or Smalltalk, but if I'm working somewhere and I have to debug someone elses code, I kinda want something boring and unsurprising.
- lispm 8y ago> Mmm, I think it's a huge stretch to say those languages were derived from Lisp I did want to say that. I said 'Most other languages, derived from Lisp, are incompatible' - that means the languages which were derived from Lisp - like Scheme, Logo, Dylan, Clojure, partially JavaScript - those are incompatible. Like Ruby, which was either influenced or in the same application niche (web programming, scripting, ...) like Perl is incompatible with Perl. There is a similarity: Lisp -> lots of incompatible dialects Scripting languages -> lots of incompatible languages But Lisp has with Common Lisp as standard, which has enable many different implementations with different capabilities, but a large shared core language.