5 ms·
Paul Graham convincingly made the case that not all programming languages are equal in terms of power. A more powerful language should be a competitive advantag
by apples_oranges 7y ago
Paul Graham convincingly made the case that not all programming languages are equal in terms of power. A more powerful language should be a competitive advantage all else being equal. Hence it makes sense to use one.
(Aside from functional programming, Ruby on Rails comes to mind even though it is a language and a framework.)
- twic 7y ago> convincingly He wrote that article in 2001, eighteen years ago, and people haven't stopped bringing it up on HN since. So where are these startups crushing their opposition because they're using a more powerful language?
- apples_oranges 7y agoThat's why I mentioned Ruby on Rails. I think RoR-startups count as examples.
- mattmanser 7y agoYour username seems apt here, RoR was (is?) notorious for being a particularly "weak" language in terms of performance, but being a "powerful" one in terms of being a good template with good tooling/ecosystems. While perhaps functional languages are "powerful" in terms of performance[1], but "weak" because they have poor tooling/ecosystems, not even starting on the difficulty of recruiting, etc. [1] Though I personally think the author is exaggerating the benefits, while conveniently skipping over the massive ((neg))((ati)(ves))))) and incomprehensible code large functional code bases often produce
- vincent-toups 7y agoI can give at least one data point for a startup based on Common Lisp that crashed and burned at least in part _because_ of Common Lisp.
- vincent-toups 7y agoLisp/Functional programming might indeed be a silver bullet, but you still need to know how to operate a gun to use it, is the lesson.
- twic 7y agoI bet that was really good fun, though!
- vincent-toups 7y agoIt was a major strain on my marriage, among other shitty things.
- pmontra 7y agoI think you crush opposition because you're good at selling. Then you need something to sell but it's the least important thing. I'm writing this as a 95% developer and 5% salesman. However using reasonable tools is important. The wrong ones can slow down companies and make business fail beyond the skills of the marketing departments. In my experience I didn't see much difference between Elixir, Java, Perl, PHP, Python, Ruby. Properly handled any of them could be ok even if I've got preferences. JavaScript... too much cognitive overhead because of constant ecosystem changes and fragmentation but maybe it's slowing down now.
- blub 7y agoBesides selling, I'd include having a good business plan and management skills. Focusing on programming languages is the mother of all local optimizations. Although what we do is obsessing, not merely focusing.
- goto11 7y agoI 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.
- lazyjones 7y ago> all else being equal. Hence it makes sense to use one. It would make sense if you managed to sort out the precondition first, i.e. find sufficiently capable and affordable programmers able to use the language, make sure the language ecosystem is as capable of supporting your field as more popular languages. In other words, it rarely makes sense because "all else" is usually not equal.
- AlchemistCamp 7y ago> Ruby on Rails comes to mind even though it is a language and a framework. The same could be said of Elixir + Phoenix in 2019. In a lot of ways, Elixir macros and protocols give at least as much power in building DSLs as Ruby-style metaprogramming, but there's no magic and every single module reveals which macros it uses at the top. It's not quite the stark trade-off Rails offered vs old school Java / PHP development in the mid to late 2000s, though. In that case there was a tremendous productivity advantage for using Rails to make a web app. Now, Elixir offers moderate advantages, that grow with project size but it's competing against already well-developed Rails and Laravel ecosystems which offer excellent productivity in their own right, plus an existing gem/library for "everything". I love what Elixir's immutability does to make testing and handling larger projects easier and I'm glad to have learned it, but in all honesty I never would have if not for having been focused on a free to use chat app in 2016-2017.