W
websnarf
You mean where *semantics* get added to the definition?
What are you talking about? A VM can emulate multitasking -- an
underlying OS which does so is irrelevant (in fact, I would be curious
to know, if in fact, the Java spec *REQUIRES* the multitasking to be
emulated, so that race conditions are limited to VM instruction
granularity.) Interfacing with GUI environments has to be done with
some kind of native method rig up, and again is not a gating factor in
the ability to run Java. And 32 bits -- are you smoking something? You
just have to present the interface, there only requirements for the
underlying machine is that it can compute something.
For example, there was a port of Java to DOS (called Kaffe, I believe.)
You are confusing what is exposed with what is required by the
platform.
C requires the existence of files/stdio, and a system timer. Voting
machines can arguably be considered more secure if they do *NOT*
contain any system timer (consider software which waits for the
election date, or well past the start of a real election before
enacting a "flaw" -- a little hard to do without a timer).
Yes, but I think the OP's point is that no pair of any such compilers
accepts the same set of source inputs and does not generate
semantically compatible output for the intersection of code that is
common.
I am aware of at least one smart card that was -- they implemented a
picojava instruction set for it. Think about the complexities involved
in architecture design and bring up -- there can't possibly be any
since they have most of it specced out for them already.
You misspelled *least*. Lua, Python and Perl, for example, are *FAR*
more portable. I think the only two languages I know of which are
*less* portable than C are assembly and Basic.
Except Java provides no portability at all to any platform that
isn't at least 32-bits with a multi-tasking GUI environment.
What are you talking about? A VM can emulate multitasking -- an
underlying OS which does so is irrelevant (in fact, I would be curious
to know, if in fact, the Java spec *REQUIRES* the multitasking to be
emulated, so that race conditions are limited to VM instruction
granularity.) Interfacing with GUI environments has to be done with
some kind of native method rig up, and again is not a gating factor in
the ability to run Java. And 32 bits -- are you smoking something? You
just have to present the interface, there only requirements for the
underlying machine is that it can compute something.
For example, there was a port of Java to DOS (called Kaffe, I believe.)
You are confusing what is exposed with what is required by the
platform.
[...] C on the other hand, does.
C requires the existence of files/stdio, and a system timer. Voting
machines can arguably be considered more secure if they do *NOT*
contain any system timer (consider software which waits for the
election date, or well past the start of a real election before
enacting a "flaw" -- a little hard to do without a timer).
There is a C compiler, or more likely several or dozens,
for virtually every processor architecture in existence,
from 8-bit microprocessors and microcontrollers to 64-bit
supercomputers.
Yes, but I think the OP's point is that no pair of any such compilers
accepts the same set of source inputs and does not generate
semantically compatible output for the intersection of code that is
common.
No new processor or controller is ever introduced without
some C compiler being available these days.
I am aware of at least one smart card that was -- they implemented a
picojava instruction set for it. Think about the complexities involved
in architecture design and bring up -- there can't possibly be any
since they have most of it specced out for them already.
The core of C is the most portable language in existence, has
been for a long time, and will be for a long time to come.
You misspelled *least*. Lua, Python and Perl, for example, are *FAR*
more portable. I think the only two languages I know of which are
*less* portable than C are assembly and Basic.