Why Programming Is Hard to Fundamentally Improve (2017)
&gt; If you build something that’s too difficult to learn, but very productive you’ll turn a lot of people off.<p>Counterexample: C++. To a lesser degree, perhaps also Rust? (Disclaimer: I don&#x27;t know Rust.)<p>&gt; The problem is, within a few weeks of using any paradigm developers usually have built a repository of habits that keep them from making mistakes.<p>No, developers constantly make mistakes. Even after all these decades, C programmers are still writing code with buffer overflows. The way to solve that is to have better tools: use a safe language, or formally verify the C code. At this point, we know that it&#x27;s not enough to hire brilliant C programmers and have them exercise care.<p>&gt; Things have been getting better. The growth has just been in the ecosystems and not the paradigms themselves.<p>I don&#x27;t think there&#x27;s a bright line between these two.<p>Good progress is being made in making formal verification more approachable, for instance. This is no small thing, it takes hard work in computer science, but doing so lowers the barrier to the paradigm, making it more practical for more developers and for more problems.<p>Merely thinking up the paradigm, <i>it would be neat to have tooling to verify that our code matches our formal model</i>, is only the first step. In a sense the paradigm only really exists after the hard work has been done.<p>In a similar vein, recent advances in low-pause concurrent garbage-collection might broaden the scope of the problems that can be solved with garbage-collected languages.<p>&gt; The legacy is the value, it can’t be thrown out.<p>I broadly agree. See the classic blog post from Spolsky, <i>Things You Should Never Do, Part I</i>, on how throwing out working code is very often a mistake:<p><a href="https:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;2000&#x2F;04&#x2F;06&#x2F;things-you-should-never-do-part-i&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.joelonsoftware.com&#x2F;2000&#x2F;04&#x2F;06&#x2F;things-you-should-...</a>