Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- From: kwikius <andy@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Sat, 12 Jan 2008 07:12:27 -0800 (PST)
On Jan 12, 1:40 pm, Richard Heathfield <r...@xxxxxxxxxxxxxxx> wrote:
<snip>
Of course C and therefore C++ are pre "virtual machine revolution",
Both languages are defined in terms of an abstract machine, which is almost
(but not quite) the same thing.
It would be interesting to annotate some differences (in relation to
software programming languages ), and I may be using the term
wrongly. I understand the term virtual machine to mean 'a layer away
from the hardware', IOW an abstraction that programmers can use
without needing to concern themselves with hardware details.
As far as I understand the term 'abstract machine' as applied to C,
the language designers took a set of various hardware and then left
the language definition vague enough that the software could run on
any of the set, with a large factor in C's design being that the
language should be 'close to the machine'. Ultimately the hardware was
in charge of the programmer
It is easy to criticise the guy whose shoulders you are standing on,
and there is no doubt that this design was very successful, but it
means that the programmer has to deal manually with a large amount of
uncertainty, continually, repetitively, when dealing with the
fundamental types, because their specification is so loose.
The design of more modern languages such as Java, moved away from that
approach to *try to* provide a more exact specification as to the
behaviour of the fundamental types, at the expense of hardware
compatibility.
From the perspective of C, this approach should have resulted in
failure of Java, but in practise it was taken to so well by
programmers (even with all the practical problems), that Java and its
approach have now also had an effect on the way hardware is designed.
As far as modern C++ is concerned there doesnt need to be one virtual
machine, there could be any number of virtual machine sub-components,
which can be combined to get the combination ( performance versus
range checking, hardware int types and/or user specified int types
etc) that is desired, which offers the possibility of having the best
of both idealogies.
regards
Andy Little
.
- References:
- Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- From: spinoza1111
- Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- From: Stephen Howe
- Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- From: spinoza1111
- Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- From: kwikius
- Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- From: Richard Heathfield
- Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- Prev by Date: Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- Next by Date: Re: A note on computing thugs and coding bums
- Previous by thread: Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- Next by thread: Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia
- Index(es):
Relevant Pages
|