4 ms·
I've always found it unfortunate how he, and others, implicitly define the success of a programming language as its popularity. A programming language can be in
by tikhonj 11y ago
I've always found it unfortunate how he, and others, implicitly define the success of a programming language as its popularity. A programming language can be incredibly interesting and useful to you and others without ever becoming fashionable—and that doesn't mean it has failed!
I think there should be other metrics for success: a programming language can be useful to a dedicated community of experts, it can be useful to a single company, it can be great for a single use-case or even just great for you, it can push novel ideas or showcase a novel design philosophy, all without massive popularity or market success. (And it's not like most languages directly make lots of money anyhow.)
Popularity is a poor proxy for quality, and quality matters all on its own.
Keeping this in mind changes a lot of his suggestions, I think.
Completely unrelated note: what the article calls "lowering" I've more commonly seen called "desugaring" and is, indeed, a powerful technique both in terms of implementation but also in terms of understanding a language—if a piece of syntax is pure sugar, you don't have to understand anything new, just how the syntax it desugars to works.
- kazinator 11y ago> "lowering" ... "desugaring" "expansion"? ".... syntax it expands to"
- kibwen 11y agoIn a language with macros that might be ambiguous, since there will usually be a phase called "macro expansion".
- kazinator 11y agoThat is correct. Expansion isn't necessarily macro expansion. But it's the same kind of thing and may even be be done in the same code walking pass (and possibly have to). (Since the constructs being expanded could be generated by macros, then if the expansions also use macros in their syntax, the two have to be interleaved.) The difference is minor: it's basically "does the code walker specially recognize this construct and invoke some code to expand it" versus "does the code walker recognize a macro call and invoke it to expand it".
- joncrocks 11y agoIt's because we're all in it for the fame and glory. Right? ;-)
- saurik 11y agoFWIW, I have more often seen the term "lowering" used by people who do research in this field and "desugaring" mostly among industry developers.
- tikhonj 11y agoMost of the time I see desugaring is in a research context, at least within areas of PL adjacent to functional programming.