THIS right here is why I use emacs. Not that something like this is not possible with other open-source software, but the number of steps required to compile, debug, identify change required, compile, rerun, it is usually not worth your time to investigate minor inconveniences. So there is learned helplessness and you compromise and learn to just live with the annoyance.
I'm always a touch sad that I don't step debug code more than I do. I remember the glory days of people pushing this in Java with the Eclipse compiler literally made to support incremental compilation. I think it was JRebel that was working to do that at large on other installations.
Fast forward a few years, and I would get into conversations with principal level engineers at amazon that didn't know this was possible. Having the debug agent was literally a default for some teams, and they didn't realize what all that enabled.
What happened? Feels that a lot of old school programmers of any language remember doing this. Too many others think this is some sort of magical world dreamed of by lisp enthusiasts that never actually happened.
(Would love to see numbers challenging any of my soft assertions above.)
Yes, this incremental approach was common in Smalltalk and Lisp Machine environments, then obviously in Common Lisp. IBM Visual Age for Java originally was like a Java veneer over the Smalltalk environment, then they came out with VA Micro Edition which, iirc, still supported incremental work. Around this time, Visual Basic 5.0 and later also were supporting an edit and continue approach and Microsoft started trying to get it into Visual C++ 6.0, although it was limited in what you could change before recompiling. By the time Eclipse came out, they were trying to stay competitive. What happened?
The Web. Web 2.0, really. Now you can't easily do the code as you go approach, it needs to be restarted in the server, the client needs to be updated, etc. Any hacks that make it possible are pretty fragile. People still like live-coding, but they don't expect to do it for the whole project.
You could argue that a lot of parts that go into making C (or, more amusingly, cweb is a fun case study) step debug friendly were hacks. Feels that it was almost a deliberate choice not to build in the support into modern frameworks.
I agree that the web was a large part of the problem here. What I don't get is how we haven't been able to bridge that gap by now? From my vantage, it is almost completely explained by every actor involved not having any desire or incentive to work with each other. And it is baffling.
I do grant that distributed systems have always had a lot of difficulty in making things debug friendly. And it is easy to see many websites as a distributed system. But it isn't like they originated this.
With Emacs you truly feel to be in control.