On Tue, Apr 15, 2008 at 7:54 PM, Eleanor McHugh <eleanor / games-with-brains.com> wrote: > On 15 Apr 2008, at 13:28, Michael Neumann wrote: > > > You will never ever be able to use Ruby for aviation software, neither > > Lua, Python, Perl etc. > > Well, in the case of safety critical software, you don't want to have > runtime exceptions. This software must not have errors, at least it's > desirable ;-) > > > > There's nothing wrong with runtime exceptions so long as you figure out > what the correct fail-safe behaviour of the system is and make sure it takes > it. In fact for high-spec aviation systems where there's a statistical risk > of cosmic ray interference flipping bits at run-time I'd want to see the > fail-safe strategy before I even considered the rest of the system desing > (although admittedly that was a consideration that always made me laugh when > I was doing my CAA certifications ;). This argument is giving me a flash back to a decade or two ago. Bjarne Stroustrup used to use the same argument against Smalltalk, saying that he wouldn't want to fly in an airplane whose autopilot could throw a MessageNotFound exception. I would counter argue saying that I'd rather fly on that plane than the one with the C++ autopilot which instead would branch to a random location because a dangling pointer caused a branch to a virtual function through a virtual function table which really wasn't a virtual function table anymore. > > Duck-typing doesn't guarantee you anything at compile-time. > > > > True. But nothing guarantees you anything at run-time, including 100% > compliance at compile-time. That's why most CS and IS degrees have lectures > explaining the difference between Verification (what your compiler does) and > Validation (what you do before you start coding). Amen, Sister! And languages which rely on static typing have a tendency to do much more random things when things go wrong. Language like Ruby tend to have a more vigilant runtime. -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/