5 ms·
I think the culprit are the programming languages, they offer all these features that allow complexity. If you allow it, people use it. It sounds like an oversi
by Meai 9y ago
I think the culprit are the programming languages, they offer all these features that allow complexity. If you allow it, people use it. It sounds like an oversimplification of the problem but I honestly think that's the entire problem summed up.
The second layer are all the legacy layers that we build up on. Nothing can be done quickly about it but as soon as you make a better language, people seem to almost instinctively jump at fixing the legacy layers too. People write an entire OS in Rust and Rust isnt even simple. We just need a simple, fast and safe replacement for C and I believe all the messed up parts about software would get fixed very fast.
- meuk 9y agoI agree! When I started programming in C# I thought the language was relatively elegant. However, Microsoft just kept adding features until it wasn't elegant anymore.
- hrpnk 9y agoI agree languages are the culprit. Too often we just develop in a new language for fun or just to fill a CV with new buzzwords. Sometimes it leads to innovation. In most cases it's pure bloat. Recently overheard a conversation going this way: A: "I've built a client for X in Scala." B: "We already have one in Java. What features did you miss that made you decide to write it again?" A: "It was in Java. Now I'm trying to write one in Haskell. It will be fun." Even worse, that oftentimes the only way to attract new talent is by allowing folks to write stuff in a language that other companies do not (yet) have adopted. This leads to a vicious circle where new languages are going to production and the developers stay on the same level of knowledge for those languages since they do not spend enough time to dive deep enough into them as a "new kid in town" arrived.
- emodendroket 9y agoThere's some of that, but there are real reasons you might prefer Scala over Java besides it just being more "fun."
- tdb7893 9y agoIn my experience it's the opposite. The creation of more and more complicated code led to more complicated languages, not the other way around. Some stuff is just going to be complicated regardless of language and if you use a less complicated language like C it sometimes makes the resulting code more complicated as you have to spend time essentially duplicating language features that already exist in the more complicated languages
- Meai 9y agoI didn't mean to imply that C has enough features, it definitely should have a few more. But that should be it, don't keep adding stuff just because it's 'nice' to have. The added cost of maintaining big codebases of a language that has many features compounds a lot.
- ams6110 9y agoIt's been a long time since I coded in C but I can't imagine there aren't solid, battle-tested libraries for handling strings, collections, and all the other nice things that Python gives you. Am I wrong?
- cwyers 9y agoSure. Now let's say that you're using one library using String Library A, one library using String Library B... go forth and convert strings at every point in your application where you use one library or the other. There's benefits to having things included in a language in an opinionated way -- everyone using that language does it that way.
- emodendroket 9y agoI completely disagree. I can't see why we'd expect software to increase in quality if we made it more tedious to do common things.
- GlennS 9y agoI'd like to offer an empirical counter-point: Java. Java, while a good quality language overall, is deliberately missing some important features like function passing (possible these days...). This is an effort to make it easy to learn and to encourage people to build simple software. Its library ecosystem (with a few superb exceptions) is the epitome of over complex mediocrity. Java defines "Enterprise Bullshit". Why has this happened? I think it's the missing features. You get a sort of jenga tower where the foundations aren't quite right, so you build some other abstraction on top of it. But then that's not quite right either, so you build the next layer back in a different direction. More powerful languages means you need fewer layers. And, it's easier to rebuild those layers if they turn out to be wrong.
- commandlinefan 9y agoCOBOL was even simpler than Java. So simple that it's almost unusable outside of mainframe time-sharing applications.
- user5994461 9y agoThe java ecosystem is great. One of the best of all languages in existence. Software development in big companies and outsourcing firms is usually terrible and it gave a bad reputation to everything they use, including that language.
- zmmmmm 9y ago> Why has this happened? I think it's the missing features. I have a more, I guess, cynical explanation. I think developers, even the ones who proclaim otherwise, love complexity. It suits their egos to think they are working on something really complicated that only they understand. They will still say its simple, but it is only so after transcending some barrier of understanding that nobody except them has. So this is how things work: if a technology is created that actually is simple (eg: Java), developers will immediately start adding layers of complexity. They will add more and more layers right up until the point where they themselves, can no longer understand it. This is what I think of as the "complexity budget". Only when the complexity budget is fully consumed, intellectually satisfied, they will stop, and start to refactor, to make it "simpler". If you want a second example, take a look at the React ecosystem. React fans will tell you how simple it is. How you can use React by only knowing Javascript and two or three simple rules. Then have a look at what any real world React project actually looks like and observe the 17 layers of complexity they added on top.