logoalt Hacker News

duesabatilast Wednesday at 1:55 PM3 repliesview on HN

I completely disagree with the post.

All programming languages are equivalent meaning their level of expressiveness is the same, it's not an opinion it's a fact. Each language comes with its runtime and its peculiarities but potentially you can always make any feature that another language runtime has with any language, even though probably not with the same performance and efficiency has been that feature native to the runtime itself.

So there are no "more powerful languages" just runtimes that allow you to hide away some stuff considered stable enough that they become some kind of primitive for the programmer, now we may have different opinions on what elegant code is, but personally I'd like to avoid code that directly (i.e. no kind of abstraction) relies on runtime features and instead express clearly my intention in code, but I recognize the productivity gains.


Replies

Verdexlast Wednesday at 2:04 PM

You may be thinking of turing completeness. All turing complete languages can compute the same functions. And in that way they are equivalent.

However, not all languages are turing complete. See, for example, charity: https://github.com/dobesv/charity

Furthermore, turing completeness says nothing about expressiveness or capability. Imagine a language that has no IO. Such a language would be able to compute any function any other language can but not do anything viewable by the rest of the world. So obviously not equivalent.

And w.r.t. expressiveness, there is some academic research into how to quantify that: https://www2.ccs.neu.edu/racket/pubs/scp91-felleisen.pdf

show 1 reply
patrickmaylast Wednesday at 2:22 PM

Are you familiar with https://paulgraham.com/avg.html?

show 1 reply