12 ms·
You appear to be confusing having more features with being more powerful. An easy mistake to make, but not necessarily true.
by Stormbringer 16y ago
You appear to be confusing having more features with being more powerful. An easy mistake to make, but not necessarily true.
- jamesrom 16y agoNot once in his comment did he say anything even close to 'being more powerful'. Why did you interpret it that way? You appear to be confusing a well made point with something that was never said.
- SeanLuke 16y agoLet us try again. He is confusing having more features with being "more expressive" (whatever that means). And even if we work out what that means, he's confusing "being more expressive" with "being more powerful" (whatever THAT means). By this logic, C++ is the language to beat.
- viraptor 16y agoExpressiveness usually means "working code to boilerplate ratio". For example: (C#) SomeMethod((x) => SomeOtherMethod(x)); is more expressive than: (java) class WrapperIDontReallyNeed() { public void AnotherWrapper(uselessType x) { SomeOtherMethod(x); } } ... SomeMethod(new WrapperIDontReallyNeed()); (or anonymous classes - before someone points out they exist - just trading Wrapper for IWrapper and no `class` keyword) And again - I don't see any mention from his side about being powerful. I don't think he's confusing anything either - expressiveness of a language is a pretty common term and is true in this case. C++ is easy to beat from that point of view, unless you add a tonne of Boost.
- arethuza 16y agoI think in terms of raw feature count Common Lisp probably "wins" - I can recommend a read through Steele's Common Lisp the Language if you have some time to spare: http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html
- Stormbringer 16y agoSurely not! Lisp must have close to the fewest features of any language (other than the weird ones like Brainf*ck that only have 8 instructions). Other than Macros and parenthesis there isn't anything to it. If I remember correctly, pretty much all you need to do to write your own lisp is to implement eval.
- arethuza 16y agoThat's the basic syntax of Lisp that you are thinking of - they actual Common Lisp language has a metric shipload of built in features from basic functions, data types through to things like the Loop macro right up to decidedly non-trivial things like CLOS.
- arethuza 16y agoAnd what is the objective measure of how "powerful" a programming language is?
- Stormbringer 16y agoThere isn't one. However, if that is true, why are programmers compelled to argue about it? :D I think that there is a shared common intuition that some languages are better than others. Think of it like the P != NP problem. We may not be able to objectively prove that P != NP, but we all share a strong belief that it must be the case. This argument also takes the form of 'my language can do the same thing in fewer keystrokes'. Personally I think typing speed is near irrelevant, since I've never met anyone who churns out working code as quickly as they can type. And I'm a big fan of the 'my language is more readable than your language' argument, I find it compelling, but I recognise that others do not.
- InclinedPlane 16y agoHaving first class functions does not classify as "one more feature", it fundamentally changes the nature of the language. Lisp does not have more features than Java, yet it is fundamentally a different language. If somebody put up a "Java vs. Lisp comparison" page people would laugh at it, they aren't really comparable languages at that level. All Turing complete languages are essentially equally "powerful", but not all languages are equally expressive. It takes less work to write code in Java than in assembly, and for some tasks it takes less work to write code in C# than in Java. Generally that's considered a good thing, with fewer lines of code and more readable code programmers can get more work done while having a higher confidence their code doesn't have glaring defects.