3 ms·
I worked at a company where we very seriously talked about adopting Ada. Let me tell you what else takes the fun out of programming besides an overly strict la
by dkarl 18y ago
I worked at a company where we very seriously talked about adopting Ada. Let me tell you what else takes the fun out of programming besides an overly strict language: knowing that if the customer encounters a bug, he will send you an email, stop using your software, and use a competing solution until you ship him a new release.
At that job I shipped the least-buggy, most-correct code I have ever shipped in my life, yet I also had the highest sense of incompetence and failure I've ever had. The stress level when making code changes was incredibly high, especially since the code was mostly legacy (i.e., lacking documentation and tests) and introducing even rudimentary testing required rewriting large parts of the system -- which of course created bugs and made regression tests rather less useful than they should have been.
I even had a dream once about reading the gcc manual and finding a new warning flag, -Wsomethingorother. I was really excited. Then I was really disappointed when I woke up.
I REALLY wish that codebase had been writting in Ada. The code was mostly correct (though hideously designed) when I inherited it; if it was written in Ada, the runtime checks would have caught a lot of cases when an innocuous-looking bugfix in one part of the code caused another part of the code to start dereferencing stale data and mixing a subtle spurious signal into the customer's results. In the worst case, we would have had an immediate failure with a good head-start on debugging. Ada might have actually preserved some of the fun of programming for me.
Nothing else I've worked on has called for Ada, though. It's a niche language and should definitely be considered whenever writing a mostly-static system where you're willing to invest a lot of time per loc to avoid bugs.
- dmoney 18y ago...if the customer encounters a bug, he will send you an email, stop using your software, and use a competing solution until you ship him a new release. What kind of software was it?
- dkarl 18y agoThe software was part of a scientific computing system. We were an upstart product competing against a decrepit seventies-era product with an eighties-era interface. The competition was markedly inferior in performance and usability, but it was a known quantity and thoroughly integrated into the customer's workflow. By comparison our product was faster and usually more accurate, but less predictable. Our new bugs were much more disruptive to workflow than the existing product's old, well-understood bugs.