Does python have the capability for driver development ?

Dave Angel davea at ieee.org
Thu Jul 30 10:30:55 EDT 2009


Martin P. Hellwig wrote:
> <div class="moz-text-flowed" style="font-family: -moz-fixed">Dave 
> Angel wrote:
> <cut definition/interpretation of compiling>
> Ah yes, we thread on the territory of word definition and difference 
> in interpretation. Any argument is doomed to fail if not agreed or at 
> least taken in perspective of the terminology used by users.
>
> I could be (well it is quite likely) wrong in my interpretation of the 
> terminology, but here goes it anyway:
>
> Machine Code:
> Whatever the machine executes, it could be that the CPU uses an 
> abstraction of microcode to do this but from the perspective of the 
> user, this is all done in the same 'black box'
>
> Compiling:
> Translate words/symbols/mnemonics to machine code, which than can be 
> either loaded, linked and executed by an OS or read and executed by 
> the BIOS.
>
> Interpreted:
> Instructions which can be fed to a previous compiled program that is 
> able to dynamically change its execution and flow without the need to 
> recompile itself.
>
Depending on the level of understanding of the user, plus his history 
and his biases, he will include more or less in his "black box."  In the 
old days, microcode was not "on-chip" but stored separately in control 
memory.  And on many machines, it was changeable at will.

To many users these days, the entire system including software is a 
black box, which gradually breaks down (gets slow, runs out of space, 
crashes a lot) and must be replaced.  They don't distinguish operating 
system from application, real memory from virtual, or viruses from 
bugs.  But of course those users wouldn't be participating in this 
discussion.

My background includes specifying hardware instruction sets and 
architecture.  And writing microcode for multiple machines.  And writing 
parts of compilers, interpreters, assemblers, and so on.  And 
microcoding interpreters.  And hooking into compilers to modify how they 
would generate code.   And hooking into runtimes to test running code in 
realtime.

So I tend to have very flexible definition of compiler and interpreter.  
Probably the only reason I jumped in here was the unmentioned bias that 
somehow a compiler is superior to an interpreter.

I think I'd better extend my definition of compilation.  It's a step 
that's statically taken over a series of instructions (not necessarily 
text source), that transforms it into a form closer to the targeted 
enviromment, real or virtual. Most C++ compilers have two compilers 
operating serially, the first to turn the source code into an 
intermediate form (like byte code), and the second to generate what is 
commonly called "machine code."  The second part of course is duplicated 
for each different target processor.

So Java is compiled into byte code, and the typical java VM then 
compiles that piecewise into machine code (so called JIT compiling, for 
just in time).

BTW, interpreters don't have to be written in a compiled language.


Anyway, I don't object to your definitions.  We all have different 
perspectives.

DaveA




More information about the Python-list mailing list