D
David
I agree 100%. However, I am only a beginner in Assembly (and I don't
know how to read machine), and cannot think of expecting someone to pay
me for that (though it would be very cool to work on that every day)!
I figure that C++ is closer to the machine than Java, since you can put
Assembly code inside a class file if you want/need to, and you can
touch most, if not all, of the components of the machine. Java, on the
other hand, handcuffs you before you ever make it near the components.
I've always felt a little like I was playing bumper pool when I wrote
in Java since it won't let you really hurt the machine much. The
opposite is true of Assembly, which is why it's so very cool (and scary
too). I guess I'd rather be closer than farther away from the machine,
and web programming in Java feels way too far away.
Thanks,
wee
C++, C, Forth, and assembler (in that order) can be very challenging
to maximize the potential of a machine. It can take a lot of thought.
There is also a large difference between diagnosing a problem with
your Java-Swing video control and an embedded control device that just
sits there and offers no help on what might be wrong. How might you
test and debug such a beast?
Some languages, like subsets of C, can be "compiled" into hardware.
On a device like an ipod, calculator, or cell phone there may be many
levels of hardware, firmware, and software. Different groups may be
allowed to change the various levels. Where might you want to spend
your time?
Forth is a different sort of language. It is often used in embedded
devices. Some of my larger firmware controlled devices at work use
a 6809 or similar computer that control perhaps four serial ports,
several audio channels, has about 32KB EPROM and 32KB RAM. I also
have control over all the protocols and PC control applications for
the devices. Forth is a lot like C in that you can shoot yourself
and the computer very, very easily. Forth is actually like assembler
in its ability to get you lost. It is also more evil in what it
will allow you to do. <evil grin> If the following line of code
would print the value 8, would it also do that somewhere else in a
program?
3 5 + ?
The answer is NO. Forth is a simple stack language. push 3 and 5
on the stack. '+' is a symbol for take two values off the stack,
add them, and push the result on the stack. '?' is a symbol for
take the top value off the stack and print it.
The problem is that Forth says that all symbols can be redefined
at any time. Each definition gets put in a dictionary of code
and can be popped off when your done with the definition.
The reason the above line could result in something othr than
8, is that every symbol could have been redefined. If you have
30 pages of code, you may have to read them with intense detail
to figure out what the program might do. You start with a few
basic definitions, which you could have changed anyway (in
assembler) and then build from there.
Forth is a good language where you would use lots of small
fragments of code over and over again. The result could look like
an archived mess and be very small.
David