6 ms·
Perhaps part of the issue with the "evolution of the programming language field in recent years" is that 'simplicity' is a high cost optimization. Most every 's
by thadt 3y ago
Perhaps part of the issue with the "evolution of the programming language field in recent years" is that 'simplicity' is a high cost optimization. Most every 'simple' system I've been a part of building started life as an oversized beast, laboriously wrestled into a more streamlined form.
Making complicated things is cheaper, easier, and lets you say 'yes' more often to smart, persuasive, people. Simple takes a lot of time, effort, and "getting to no" with people that have good reasons for the things they want to add.
- onetimeuse92304 3y agoMaking complicated things may only be cheaper initially. I think the problem is that to learn to make simple things you first need to learn making complicated things. This is my story and pretty much the story of every person I ever talked to that learned to make simple things. Some people get it faster, some get slower and some never learn to appreciate simplicity, but everybody first had to learn to make before they learned to make simple. So now realise we were through decades of exponential growth of the number of developers and at any point in time people with experience were greatly outnumbered by people with little experience and the answer becomes easier to formulate. Simplicity isn't something that is easy to teach. The best ways to do it I found is by mentoring and working with people, but there are so many people you can meaningfully mentor on a daily basis. People with experience are so outnumbered (and also promoted up if they are any good) that it is very hard for an average apprentice programmer Joe to be able to find his master.
- hyperthesis 3y agoA complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. - Gall's Law
- onetimeuse92304 3y agoNo, that's not true. Easily disproven by example: I have many times seen smart engineers with little experience design and immediately implement an extremely complex solution to a very simple problem. Don't believe everything people say. Just because somebody called something "a law" does not mean it is true.
- muro 3y agoThey might have designed and implemented it, but does it work? :)
- onetimeuse92304 3y agoSometimes it does. Depending on definition of "work":)
- ReleaseCandidat 3y agoA working "complex solution to a very simple problem" is not a contradiction, as it can be "simpler" than a simple working solution to a complex problem.
- thadt 3y agoI think this true, and in agreement with the parent comment. A working complex system evolves out of a smaller working simple system. You have to climb the hill from the one side. Getting to a complex, working system is the 'learning' part. If you want to be able to do the same things with a simpler system, then you have to do the work to collapse that back down to its fundamentals. I don't think it's something that can be 'taught' directly. I suspect it requires the experience of building the simple and then complicated things in order to understand the problem enough to make the complicated thing simpler.
- rob74 3y agoThe Go programming language is not only partly inspired by Wirth's work (Robert Griesemer, one of the "founding fathers" of Go, studied at ETH Zürich), it also has this goal of simplicity: it started out with fewer (but powerful and unfortunately often underestimated) features than other languages, and while it has added more complexity over the years (modules, generics, ...), this has happened at a much slower rate than with other languages.
- pjmlp 3y agoIts "simplicity" is a reason why it depends so heavily on compile time code generation across the ecosystem.
- thadt 3y agoOne might argue that a lot of languages depend heavily on compile time code generation. Just because Rust's macros, or C++'s template metaprograms are sweeping their generated code under a stylish rug doesn't mean it's not happening. Slowly.
- guappa 3y agoIf being simple gives us go, perhaps we should try to drop simplicity for simplicity's sake and accept that complicated things might be needed occasionally? Go is a modern programming language, which suffers from a lot of issues that were well known at the time of its creation.
- uncletaco 3y agoI write fiction as a hobby and "Most every 'simple' system I've been a part of building started life as an oversized beast, laboriously wrestled into a more streamlined form" describes my day to day life in both that and my programming job