Re: C is too old? opinions?



Dann Corbit wrote:
"Rob Thorpe" <robert.thorpe@xxxxxxxxxxxx> wrote in message
news:1152821942.508172.298520@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
pete wrote:
W Marsh wrote:

On Thu, 13 Jul 2006 11:53:06 -0700, "Dann Corbit" <dcorbit@xxxxxxxxx>
wrote:


I think you have a reading comprehension problem.


You were lumping Java and .NET together, suggesting that they were
inadequate in real-time systems for the same reason.

Go on then - I would like to know how garbage collection affects
real-time systems.

http://www.devx.com/tips/Tip/13491

Many programming languages are unsuitable for real time
programming due to their non-deterministic nature. For example,
languages that have a built-in garbage collector are very problematic
because the garbage collector might "wake up" at the wrong moment,
halting all other operations until it finishes. A real time software
application that controls the amount of fuel supplied to an airplane's
engine at lift off cannot be interrupted by a garbage collector, not
even momentarily.

This isn't really true of programming langauges but of implementations.
I is quite possible to write a garbage collector that does not cause
pauses. Some Java micro-edition implementations use them so they can
be used for real-time purposes.

Most normal implementations of Garbage collection that come with normal
tools occasionally cause a "pause" or "world-stop". These methods are
used because they are more efficient in overall cycles than continuous
GCs.

Running out of ram is just as bad as stopping for real time systems.
I congratulate the Java folks for pounding the square peg into the round
hole.

The problem is really the same in any language using any memory
allocation strategy: If you write a program that uses more memory than
you have then you are in serious trouble.

A real-time GC can be made to use only a constant amount of memory for
garbage. So once this amount is subtracted the program can use the
remainder.


That said Java folks do occasionally pound the square peg into the
round hole. Last time someone explained to me a "real-time" Java GC
what they explained wasn't actually correct. You could have come up
with innocent code that could crash the system. I hope they didn't
implement it that way.

.