A proper language comparison...
bearophile
bearophileHUGS at lycos.com
Fri Jul 26 05:28:58 PDT 2013
Walter Bright:
> As I've written before, imagining you can write a program that
> cannot fail, coupled with coming up with a requirement that a
> program cannot fail, is BAD ENGINEERING.
>
> ALL COMPONENTS FAIL.
>
> The way you make a system safe is design it so that it can
> withstand failure BECAUSE THE FAILURE IS GOING TO HAPPEN. I
> cannot emphasize this enough.
I agree. On the other hand in important system you usually also
try to use more reliable single components, like military-grade
resistors able to stand bigger temperature fluctuations. Safety
must be pursued at all levels. That's why in both automotive and
aeronautics for certain safety-critical routines they forbid
recursion and require a static analysis of the max stack space
the subprogram will require in all possible usages, to reduce a
lot the probability of stack overflows.
In some situations stack overflows are a security problem.
Several persons have written programs to analyse the stack usage
of Ada-SPARK programs. Ignoring the safety hazards caused by
stack overflows, and ignoring the tools to avoid them in
critical-purpose routines, is very bad engineering.
> On the other hand, fixed size stack allocations are more
> predictable and hence a stack overflow is more likely to be
> detected during testing.
I agree. Here the interactions are not linear :-)
> Segmented stacks are a great idea for 20 years ago. 64 bit code
> has rendered the idea irrelevant - you can allocate 4 billion
> byte stacks for each of 4 billion threads. You've got other
> problems that'll happen centuries before that limit is reached.
Rust designers should comment on this :-) I am not expert enough
on this.
> (Segmented stacks are also a performance problem, and don't
> interact well with compiled C code.)
I don't know the current situation on this, but I think they are
trying to solve this problem in Rust, with some workaround.
Bye,
bearophile
More information about the Digitalmars-d
mailing list