4 ms·
I think "power" is kind of a vague term. There is no objective scale of power, beyond a language being Turing-complete. But languages are not equally appropriat
by goto11 7y ago
I think "power" is kind of a vague term. There is no objective scale of power, beyond a language being Turing-complete. But languages are not equally appropriate for any task, so it is certainly a competitive advantage to choose the language which best matches the task at hand.
Obviously if you want to iterate quickly, "move fast and break thinks", something like Python is more appropriate than C++. Not because Python can be said to be "more powerful" in any absolute sense, but because the trade-offs in the language design (speed of development above low-level control) makes it more appropriate.
- apples_oranges 7y agoWhat I took away from Graham is that there is a verbose way to do something and a concise way. I suppose writing a book to describe general relativity is a verbose way to express what the equations say. Perhaps power = ability to be more concise which translates into "more things done per unit of time compared to a less powerful language."
- goto11 7y agoBut terseness is just one desirable property. Sure, all else being equal we would like to express the same with fewer tokens. But there are other factors in play, e.g. a statically typed language like Haskell will typically be more verbose due to type annotations, but you catch bugs earlier, thereby saving time. So different kinds of power is at play, and you will have to make a trade-off decision.
- apples_oranges 7y agoYes indeed.
- agentultra 7y agoIt’s less verbose than many statically typed languages due to inference. As long as you stay away from high level type extensions like RankNTypes, you can write whole programs without a single type annotation and still get full type checking.
- bluGill 7y agoSize problem is a factor too. I'll take C++ over python for fast iteration if the problem requires thousands of programmers and millions of lines of code. (Java or C# could be better yet. Or you can make a convincing argument that good architecture interfaces would break the python problem down to interfaces that you cannot iterate)