3 ms·
I'm not sure "powerful" is the right term. What actually seems to be needed is more consistency in usage. Opinionated conventions on how to properly use someth
by hooby 4y ago
I'm not sure "powerful" is the right term.
What actually seems to be needed is more consistency in usage. Opinionated conventions on how to properly use something.
I don't think it's a problem of a language to be universal and generic and usable in many different ways and usage scenarios.
But a project probably should not randomly mix and match all available language features - but follow a best practice approach that makes sense for the project. Constrain itself to a certain subset of language features.
The language still can offer features that aren't used for this project - but might be useful for another project.
It can't be the job of the language to stop programmers from using (or abusing) any language features. Use things inappropriately, or use stuff that isn't a good fit for the problem it's used to solve.
There's always going to be multiple different ways to implement something, and it has to be the responsibility of the programmer, to choose a solution that's a good fit.
Trying to make it impossible to use any non-optimal approach on a language level, isn't going to ever work out.
No matter how restricted and patronizing you make your language - there's always gonna be some programmer who uses something inappropriately, and then blames the language for it.
- BulgarianIdiot 4y agoIf I never hear the word "opinionated" again in the context of software engineering, ever in my life, that'd be nice.
- hooby 4y ago@BulgarianIdiot It is a (more or less) technical term that carries a (more or less) specific meaning with regards to software design. See: * https://stackoverflow.com/questions/802050/what-is-opinionated-software https://stackoverflow.com/questions/802050/what-is-opinionat... * https://softwareengineering.stackexchange.com/questions/12182/what-does-opinionated-software-really-mean https://softwareengineering.stackexchange.com/questions/1218...
- BulgarianIdiot 4y agoBelieve me, I know what it means. And it's not a technical term, but a MARKETING term. An obnoxious and misleading one. So, I know for example the sentence after you said it contradicts it: "generic and usable in many different ways and usage scenarios". I know DHH first used it, and he named his product "on Rails" precisely because he wanted to make non-developers and beginners feel empowered that they're in the driving seat, while actually not driving at all and running on rails. Opinionated software is training wheels (or rails). It can't be flexible or general purpose. It constrains you, so that when you don't know what you're doing, you still end up doing something. Children love this, and non-professionals also love it. Experienced professional developers hate it. It's not fun for professional developers to be told what to do, because they're in the business of they telling computers what to do. And they know libraries can be easy to use and flexible without being "opinionated". DSLs have their place. But they're not general purpose, it's a contradiction. And I don't like the term "opinionated" because aside from the smug arrogance with which it's often said around the RoR community, it lies about what it is. It's not "opinionated" - every software is created with opinion, it's impossible for it not to have one. But what the term really means is "constrained". This would suck for marketing though, and DHH is great at marketing, so he came up with that BS instead. PS: let me also remind you what this word means as an English word: "characterized by conceited assertiveness and dogmatism."
- ozim 4y agoI see a lot of professional developers that really need to be told exactly “what to do”. They usually mix up what “general purpose” means for business vs comp sci theory. For business general purpose means “it is easy to add database fields, read, write, do some calculation in specific context”. For developers it means “it is easy to manipulate data, switch database engine, switch presentation technology”. If you use rails you deliver business value and don’t care about what-ifs. That is what professionals do. So I have a different opinion on what it means to be professional. For me it is to deliver business outcome as fast as possible. Please stop if you want to write high horse “quality” response because it still is business outcomes with high quality I write about.
- 4y ago