On 16 Apr 2008, at 03:40, Phillip Gawlowski wrote:
> I wouldn't fly in an aeroplane that relies on the runtime to catch  
> errors.

I wouldn't fly in an aeroplane where a runtime error couldn't be  
caught. That's because there will be runtime errors regardless of how  
well designed and analysed the code is.

> Take the Space Shuttle as an extreme. Does the language breed  
> perfection
> in the Shuttle's source, or is it the process NASA uses?

That process includes implementing fail safe conditions for runtime  
errors. Without those the developers would be legally culpable for any  
deaths that occurred as a result of their negligence. Waking up in the  
morning knowing that is surprisingly good at focusing the attention on  
detail...

> I bet you dollars to doughnuts that it is the process, with
> more-than-due-diligence in writing and testing the software. That the
> requirements are clear cut and well understood is another bonus.
>
> Languages don't matter. Compilers don't matter. Process, however,  
> does.
>
> Or methodology. TDD has its benefits, as does BDD. Without these, the
> Agile way wouldn't work. QA is the key, not that language.

The court is still out on TDD and BDD. None of my friends in the  
avionics industry has much confidence in these techniques, but the  
main goal there is systems which don't kill people or destroy millions  
of dollars of equipment. The only argument I see in favour of that  
particular brand of agile development is that the problems involved  
are essentially human rather than technical and the code is just a way  
of forcing people to make decisions in a timely fashion.

Also whilst QA techniques transfer fairly well between languages, if  
given the choice between two languages with different levels of  
verbosity it is always advisable to use the less verbose language:  
there's less to test, less to go wrong, and less likelihood of  
muddling your (often vague) requirements.


Ellie

Eleanor McHugh
Games With Brains
http://slides.games-with-brains.net
----
raise ArgumentError unless @reality.responds_to? :reason