3 ms·
“Ruby is designed for programmers, not end users” It's not machines who care about performance. It's the person who has to use the program written. It may soun
by pwdisswordfish2 7y ago
“Ruby is designed for programmers, not end users”
It's not machines who care about performance. It's the person who has to use the program written. It may sound gentle and altruistic, but when you actually think about it, putting “humans” first is actually an incredibly self-serving sentiment.
- smitty1e 7y agoWhen you actually think about it, “humans” is plural, and "self-serving" sure seems singular. Past that superficiality, a programming language is a mechanism. I am sincerely curious in what larger context one would evaluate this mechanism at all, and furthermore, deem it "an incredibly self-serving sentiment".
- darkerside 7y agoThere is already an ideal programming language for computers. It's bytecode. All high level languages after built for people, not computers, to make it reasonable for us to collaborate and maintain our own code. The computer itself doesn't care for anything beyond 1s and 0s.
- pwdisswordfish2 7y agoAnd computers are built for people, to make it reasonable for us to collaborate and maintain our own (non-programming) work. Dismissing performance concerns because you're designing a language “for humans” is actually glossing over a quite large number of other “humans” (i.e. non-programmers) who do have a stake in the choice, but not so much say in it besides “why is my computer so slow lately”. Well, it's slow because you thought type checking is for know-it-all ivory-tower academics and pedantic asshole compilers, so you chose JavaScript (or whatever “forgiving” language is in vogue these days; the OP is about Ruby, but it doesn't really matter), and so the user has to wait until the JS engine finishes JITting your code over and over again to infer type information that should have been available at compile time in the first place. Rinse and repeat for each app, and now they have to replace their laptop every few years to catch up with ever-growing (for no good reason!) RAM requirements. Claiming that a programming language is “designed for humans” much too often amounts to saying “my (programmer's) convenience and satisfaction is more important than yours (user's)”. And that is an incredibly arrogant thing to say, as superficially gentle as it may seem at first glance. I'm not arguing against high-level languages; I'm arguing against disregarding performance in the name of programmer convenience. It's quite possible to design a high-level language in a manner that doesn't stand in the way of making its implementations performant. There are some recent developments on that front. But if you ignore them, then it's not the “machine's” resources that you're wasting. It's the user's resources.