- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
TRWTF isn't that the steel mill owner's son got to run an (I imagine very expensive) R&D lab with a good sized staff and payroll, and never produced anything? Ah well, I guess if you make a lot of money, you're allowed to do what you want with the profits, including keeping your son busy so he won't go near the production equipment
captcha: persto (only one letter away from Pesto, which I've only occasionally not hated in cooking)
Admin
Of course theory comes after. However, there are way too many coders out there who think that every problem is original, has never been solved before and needs thousands of lines in their favorite language to be half solved. They're the ones who spread that they need no stinkin theory, creating a dozen new problems in their wake for every half-baked solution they create. Well, at least they contribute to job security until the company folds. Programming failures are now estimated to cost in the trillions of dollars.
So get a clue before you start.
Admin
Err... you can prove pretty much anything that is true about a program, finding the proof is the tricky bit.
Luckily people can write there code in a clear straightforward manner than makes proving things about it easier (like 'the following loop invariant is maintained thus at the end of the loop we have X, this implies the next bit results in Y which is our desired result' and such). Yes, proving correctness is not easy, but doing it means you WILL find lots of errors that are hard to test for and you are forced to document your assumptions (so that if the assumptions your codes correctness and your proof rest on are false your fellow developers can point this out)
If reliability is REALLY important you should do both testing and proofs of correctness, then follow that up with code mandatory reviews, to really flush out the assumptions and check the proof and tests and the code itself to make sure that they match each other and the rest of the program.
Admin
somehow, the comments made me think of the infamous "sergeant York" automated weapon platform. it was first supposed to shoot down anti-tank missiles aimed at friendly tanks. it worked perfectly in simulations, but when put to a practical test, it ignored the missiles and shot at trees! so they they tried to re-program it to shoot down enemy helicopters instead. they thought the whirling blades on top would be simple enough for the program to to recognize. again, it worked in simulation, but when tested...it ignored the helicopter and blew a ventilator fan on the roof of a building! and on top of that, it couldn't keep up with the tanks it was supposed to protect...
Admin
The first time I heard about "proven correctness", I immediately thought, "Maybe you can prove it does what you think it should, but you can't know it does what the customer really wanted until he tries it."
My experience in hardware as well as software is that the customer never knows what he wants with sufficient precision, so the specs are always wrong. You should get to a prototype that the customer can sit down and try ASAP, then it's possible to refine the specs and finish the design.