I have bought "Virtual Machine Design and Implementation in C++"
by Bill Blunden. This book has very positive reviews (see
slashdot or amazon.com). It seems to impress people by the
apparent width of covered topics. Most of it is off topic. The
book gives to the moderately knowledgeable reader no insight
about virtual machines or even about language compilation.
No architectural clues. Absolutely nothing about tight run loops,
copy on write, compiling , optimizing code (SSA, tail calls,
continuation passing style) or jitting code. The remarks about
memory management are laughable. The book present a trivial VM
and make no attempt to compare the features of existing VMs.
The author has the chutzpah, pedantry or naiveté to compare himself
to Knuth: "If I had money, I could offer an award like Don Knuth
(pronounced Ka-Nooth)". But it is unclear that the book has been
thru any reviewing or editorial process before publishing.
I don't say there are obvious typos or so many factual errors.
The book is just vain and vacuous.
It is difficult to make a review because the book has about no
substance concerning its stated subject: virtual machines. The
author takes tangent after tangent and gives his opinion about
almost anything concerning the computer industry, cramming
irrelevant knowledge and speaking of all the "wars" he has waged.
He usually states in one paragraph one can be said in one
sentence. Most of code in the book has no interest whatsoever,
like gigantic switches or declaration of symbolic constants.
Visually disturbing notes are plain rants or state the obvious:
"virtual machines are run-time systems, but not all run-time
systems are virtual machines" (boy! I was thinking that was VMs
all the way down). One note even propagates the old urban myth
about TCP/IP: "[the DoD] was originally interested in designing a
command and control network that could survive a nuclear war".
In Chapter 1, "History and Goal", the author conveys the idea
that coding on top of a virtual machine is a good protection
about obsolescence of the real architectures. But the book will
hardly convince you about the relevance of the presented VM
according to this criteria because it apparently only runs on
x86. The author states his goals about the VM he presents: 1/
portability 2/ simplicity 3/ Performance. Modulo order, these
properties are true of any sensical software project. This
does not give a clue about what is the purpose of the VM. He
cites Java, so the purpose may be to run such a language. But
after reading the book, I had no further clue.
Chapter 2, 5 and 7 is about the presentation of his assembler.
Don't ask me about the logic or the interest of the presentation.
Almost nothing is specific about VM. So why bother to say more?
Chapter 3 talks about a debugger.
Chapter 6 is about virtual interrupts. The author seems to have
used DOS as a model and is clearly limiting his discussion about
x86. So much about portability.
Chapter 8 called "advanced topics" explains the software industry
progression toward increased abstractions going from binary to
high level languages. There is a comparaison between Linux and
Windows. Go figure.
The anemic index is 6 pages and reflects the book, almost none of
the entries are specific to VM.
Each chapter is followed by a reference with a book list and an
explanation of what they cover. Certainly better that the
gratuitous show off list of academic papers. The choice of listed
books is usually pretty good but often the comments show the
cluelessness of the author. I enjoyed this one concerning the
Tanenbaum book about OSes: "People don't often realize that it
was Minix that led to the development of Linux. I don't think
people give Andrew enough credit. His ideas on modularity are
The back cover says "covers in detail features such as memory
management, TCP/IP networking (...) everything expected from a
commercial system. In fact the author decides that real garbage
collection is too slow and too complex, does not even consider
reference counting and decides to roll his own malloc. I don't
know what TCP/IP has to do with VM...
The book certainly does not fulfill the the back cover promises.
It seems to me that the described VM is to VMs what a "hello
world" is to real C programs.
I did not bother to see the content of the bundled CD-ROM.
Thanks for the review. Yours is the 2nd review I've read about this
book. I was about to buy it but after the 1st review I changed my
mind as it echoed your review in almost every sense.
I did browse it at the bookstore and it seemed
that the book tackled no real topics/problems associated with
modern VM design. Disappointing.
Any chance anyone could recommend a good book about VM design and
implementation? Perferably one that covers some stuff that's relevant to
On a related note: what, if any, books would you recommend to someone
who is eager to join parrot-development, but feels he doesn't know
enough about compiler design, virtual machines etc.
PS I'm new to this list: hi all!
I reviewed it for Slashdot, and posted a mini-review here too. I saw the
technical and design limitations, but enjoyed it none-the-less. On
reflection, perhaps a more accurate title for the book would have been
"Design and Implementation of /A/ Virtual Machine in C/C++".
I don't think the book's target audience was those who want to become
authorities on virtual machines, or learn about every advanced topic. I
think Bill wanted to catch the people who come from a totally different area
of computer science, who want to get an insight into virtual machine design
and implementation at a basic level. The book certainly achieves something
for those people, as it did for me, and whets the appetite to go and learn
more from real 'hands on' projects like Parrot.
The knowledge you can get from the book, however, is more than enough to
have a far better understanding of how Parrot works and operates than before
you read it. At least, I found this to be the case. I also found the lack of
information on jitting to be a shame, but it's not a hard topic to pick up
externally after reading and understanding the rest.
As a view into how man chose to design and implement /a/ virtual machine, I
consider the book invaluable. He certainly does quite a few things wrong,
and has limitations in his design, but someone who is competent will
recognize this, as you have, and use it as a learning and mind-expanding
experience. Not everyone who has studied computer science will have covered
all of the topics demonstrated in this book.
My bad opinion was so forceful that I thought honest to mention that
it was not shared by many people.
You posted your mini-review to London.pm:
Piers Cawley will be happy to notice that Leon Brocard anwered in
advance the question on the present trhead that asked about a good
book on virtual machines: "No, there's suprisingly little out
there on virtual machine design and development."
> Peter Cooper
Thanks for that, that demonstrates my memory!
> <snip> on virtual machines: "No, there's suprisingly little out
> there on virtual machine design and development."
This question isn't entirely directed at you, but.. is this something that
people, as a community, would be interested in developing? I tend to like
doing things on my own, but as you'll have seen I've only been studying the
topic for 18 months! ;-) An open approach to developing an online wealth of
knowledge about virtual machines would allow the gurus to share knowledge as
they find the time. I've been involved with Wikipedia lately, and seen how
major collaborative works in the content realm can work (as long as there's
a modicum of structure to keep it all together).
I personally believe virtual machines are ever increasing in importance in
the realm of computer science, and such a resource may allow more people to
'migrate' from other disciplines more easily. Of course, this may all be pie
in the sky, but I thought it worthwhile to throw the idea out there.
I don't think it is wise to multiplicated resources but wiser to
squat existing ones.
Probably this work can start as part of the existing parrot wiki
even if VM is in a sense a subject larger than Parrot:
it can be even be part of the regular wikipedia. I have been
amazed at the quality of the wikipedia material, some of it
contributed by our own Dominus.
BTW: I suspect that his fake entry "Goat rectum stuffed with
garlic" is good way for him to find his wikipedia homepage with
I don't feel competent enough to write on the VM subject but
would be happy to translate it to make it part of the French