
Nevin Liber wrote:
On 20 June 2012 16:55, Robert Ramey <ramey@rrsd.com> wrote:
After a fair amount of sleuthing, you track it down to a gratuitous change to some other library whose behavior has changed without you noticing. This is incredibly disheartening.
Here's the *real* situation: Welcome to software development.
True - it's bad enough already - So let's agree not to make it worse if we can avoid it. To put it another way. Good practices will never totally eliminate problems. But they have a HUGE positive effect. It would have cost almost nothing to avoid this situation.
It's the nature of the beast. The spectrum is from putting up with a little pain every time something about your environment changes to locking everything down so you have no external dependencies.
The alternative is stagnation. Every change has the potential to break something.
TL;DR; I see these and simlar arguments as variants of "It's not going to be perfect anyway, so don't sweat the small stuff" (I'm sorry if I mischaracterized your position here - but that's the way I interpret it) And I see this is at the bottom of many, many, problems in software development. It shows up in all sorts of ways that drive me crazy as a user and software developer. For example. as a user: a) constant "upgrades/bug fixes" which load up my computer with tons of junk and make it slower. b) quirky applications which have all sorts of unexpected behavior which makes me feel stupid. c) stuff that doesn't work together as it should d) weired indecipherable dependencies - load one component and some "unrelated" application breaks as a developer a) situation as you describe - change one thing - and something else breaks. b) large amounts of resources just dedicated to keeping things running c) inability to enhance programs wihtout huge effort These latter are our fault. And I disagree that the situation is hopeless and inevitable. They occur because we do things that create these problems and we should know better. In fact we DO know better. But often the person who takes the shortcut is not the person who suffers the concequences, there an irrestible temptation to just do it and let someone else worry about it. To me this is the main problem with the popular scripting languages. You can throw tother something that works in no time and the boss loves it. But you have all the problems mentioned about. C++ is almost unique in it's ability to create and enforce strong typing. This what makes it special. It IS possible to make something (almost) perfect, something (almost) unbreakable, and something (almost) optimally efficient. It demans work that other languages don't but it offers the opportunity to get off the endless treadmill of maintainng a years old application as a career. In order to come close to this idea it does require some disciplen - lack of which I'm addressing here - but it comes close to the holy grail - make it one and never have to go back to it. Lot's of boost libraries come close to achieving this - that's why we love boost. sorry for the rant. Robert Ramey