4 ms·
Any other language out there is just a subset of Lisp (or any other sufficiently powerful metalanguage). So it's superior simply by definition. EDIT: downvote
by sklogic 11y ago
Any other language out there is just a subset of Lisp (or any other sufficiently powerful metalanguage). So it's superior simply by definition.
EDIT: downvote count = a number of people who got no clue what meta language is.
- steveklabnik 11y agoI understand your sentiment, but this isn't what 'subset' means. Definitional arguments aside, this would mean that machine code is the best language, since all other languages are 'subsets' of it.
- sklogic 11y agoNo, this is exactly what 'subset' means. Any code in any language can be in fact a Scheme code, and there is no way you can tell if it's Scheme or not. And this is exactly what superiority is about: you can do in Scheme anything that is possible in any language, existing or not invented yet. There is absolutely no way one can even compare meta-languages vs. fixed ones.
- scott_s 11y agoYou're describing Turing completeness, which is a property of all general purpose languages. In the context of programming languages, "subset" implies that one language is identical in form and semantics to the other, plus some extra stuff. Good examples of this are Objective C and C++ to C. (Although C is not a strict subset of Objective C and C++, it is pretty close.)
- sklogic 11y ago> You're describing Turing completeness, which is a property of all general purpose languages. What? It's totally irrelevant here. > In the context of programming languages, "subset" implies that one language is identical in form and semantics to the other, Exactly. And, say, a Pascal implemented as a thin macro layer on top of a Lisp is semantically 100% equivalent to a standalone Pascal. In other words, you can build a Pascal (undistinguishable from the "real" one) on top of Scheme, but you cannot build Scheme on top of Pascal.
- scott_s 11y agoI can certainly implement Scheme using Pascal. That is, I can write a Pascal program that, when given a program written in Scheme, executes the Scheme program according to the Scheme spec.
- sklogic 11y ago> I can certainly implement Scheme using Pascal. You can implement an interpreter or a compiler. But it won't turn your Pascal into Scheme. > That is, I can write a Pascal program that, when given a program written in Scheme, executes the Scheme program according to the Scheme spec. It's irrelevant. Can you mix a bit of Scheme code into a definition of a Pascal procedure, with all the local identifiers transparently available? No. But it's trivial the other way around. A simple experiment for you: imagine you've got a system scriptable in Pascal. And you want to write your scripts in Scheme instead. Your actions? Implement a slo-o-ow and broken Scheme interpreter in that Pascal, right? And then think hard on how to do interop in between Scheme and all of the stuff already available for that Pascal. Funny and stupid. Now, the other way around: you've got an embedded Scheme, but you hate all that parentheses and want to just code in Pascal. Fine. Write a little macro which will translate transparently your Pascal into Scheme. No runtime cost whatsoever and all the interop done for free. See the difference now?
- smitherfield 11y agoIt's possible, for instance, to write a program in C which compiles Scheme-formatted strings according to the Scheme spec. You use one; it's whichever Scheme compiler you use (therefore making your Scheme programs a "subset" of a C program). What's more, any Scheme program can be replaced by one written in C that runs faster and with less overhead. Does this mean that C is "better by definition" than Scheme? No, both have their places. But any Turing-complete language with string handling is a "subset" of any other; that is an interpreter or compiler for that language can be written in any other language, so long as it's Turing-complete and can parse strings. If we look at which languages are "supersets" in practice, we find that C and C++ are the best languages ever by your theory, since many, many compilers and interpreters are written in them, while Scheme is a terrible language because compilers and interpreters are almost never written in it, even in most implementations of itself. Your poor understanding of these pretty basic theoretical concepts and your silly fanboyism are why you're being downvoted.
- coldtea 11y agoIt's HN, we know very well. We just don't agree with your neophyte enthusiasm (or the inacurrate description).
- sklogic 11y agoEvidently you've got no clue what I'm talking about.
- coldtea 11y agoEvidently you talk hyper-enthusiastically (and with the wrong terminology) for things even seasoned Lispers and Schemers don't, not to mention that your "magic bullet" praises are far from being computer science. E.g. "any other language out there is just a subset of Lisp" is just a fun statement in a Greenspun's tenth rule way. You say it like you mean it, which means you don't understand the importance of syntax, semantics, type systems, and several more concerns (not to mention pragmatic issues like ecosystem and tooling). You also yield "metalanguage" like its conventional CS wisdom that being a metalanguage is some magic bullet trait, that makes it "superior simply by definition". (Not to add that you don't understand the definition of "metalanguage", which would also include things like Antlr, m4, PEG, transpiler generators, and such, for which there's nothing "superior" to a conventional language. Not sure were you picked the terminology up, probably some book or article, but it doesn't mean what you think it means).
- sklogic 11y ago> Evidently you talk hyper-enthusiastically (and with the wrong terminology) for things even seasoned Lispers and Schemers don't, not to mention that your "magic bullet" praises are far from being computer science. And again, evidently, you've got no idea what proper meta-languages are (i.e., featuring a static compile-time metaprograming with a full, again, compile-time reflection). And yes, I'm perfectly aware of the fact that even majority of Lisp users got no clue how to use metaprogramming properly. > You say it like you mean it, which means you don't understand the importance of syntax, semantics, type systems, and several more concerns Obviously you do not understand metaprogramming. I do not care at all about syntax, semantics, type systems and all that of a host meta-language. I can build any combination of this stuff on top, easily. Of course as long as the host language is not trying hard to break things - this is what separate a proper metalanguage from an inferior one. > (not to mention pragmatic issues like ecosystem and tooling). Again, you do not understand metaprogramming at all. Once you start parasiting on any given language you're getting all of its ecosystem and tooling in, for free. > You also yield "metalanguage" like its conventional CS wisdom that being a metalanguage is some magic bullet trait, that makes it "superior simply by definition". I gave a definition, if you did not notice. A meta-language is the one which can be turned into any possible language, statically. > which would also include things like Antlr, m4, PEG, transpiler generators, and such, for which there's nothing "superior" to a conventional language. I gave my definition, which (conveniently) fits Lisp in. > Not sure were you picked the terminology up, probably some book or article, but it doesn't mean what you think it means Not sure you know it better.
- enraged_camel 11y ago>>EDIT: downvote count = a number of people who got no clue what meta language is. No, people simply don't like "language fanboy-isms" here. The reality is that no language is "superior by definition." Some languages are better at certain things than others depending on the task at hand, and many other factors.
- sklogic 11y ago> No, people simply don't like "language fanboy-isms" here. I said specifically that any metalanguage would do. And there's a lot of them. I do not care which one to use. > The reality is that no language is "superior by definition." Then you do not understand what "superior" means. > Some languages are better at certain things than others depending on the task at hand, and many other factors. A language A which contains all the features of a language B, plus a bit more, is superior by definition, because it can seamlessly replace language B without anyone noticing.
- theseoafs 11y ago"Features" are not the only things that matter when it comes to weighing languages against each other. Is it unanimously agreed that C++ is "superior by definition" to C? What about Objective-C?
- sklogic 11y agoC++ is not, technically, a 100% superset of C, there are some really cool features in C that are missing from C++. If it was not the case, and if you take the runtime library overhead out of consideration, then yes, C++ would have been superior in terms of expressive power, since it could be doing everything that C can, plus a bit more (and even a tiny bit counts).