Re: Article on Herbert Schildt, author of C Unleashed, repaired on wikipedia



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









.



Relevant Pages

  • Re: How to develop a random number generation device
    ... Hardware can be spaghetti too, and can be buggy and nasty, if one does ... asynchronous design. ... to market and first mover advantage to gain maximum market share as ... of C/C++ programmers go away. ...
    (sci.electronics.design)
  • Re: RAC or Large SMP...?
    ... the lack of good support in many ... The few languages that provide such support ... towards programmers that are API driven code monkeys that have little ... parallelized applications will have to do the analysis and design work that ...
    (comp.databases.oracle.server)
  • Re: How to develop a random number generation device
    ... an FPGA and a large program, you'll find the software part has orders of magnitude more lines of programmer-written code than the FPGA. ... That's part of the reason for using higher level languages like Python (or MyHDL for FPGA design) rather than C++ - not only do programmers typically code faster, ... you have to remember that hardware and software do different jobs. ...
    (sci.electronics.design)
  • Re: Is Lisp more ideal than Smalltalk?
    ... Meaning that they can design, design, design, and ... A recognised problem with any form of abstraction, ... Smalltalk than other OO-ish languages I use. ... so C++ programmers get a distorted idea of the costs of allocation ...
    (comp.lang.smalltalk.dolphin)
  • Re: Vaguely on-topic ramblings
    ... and how clever the programmers of the time were ... > at wringing extra performance and abilities out of what is essentially ... > very simple hardware; things like 4-channel beeper music, ... Hardware design was an *art* then. ...
    (comp.sys.sinclair)