begin quoting Wade Curry as of Tue, Aug 22, 2006 at 09:54:08AM -0700: [snip] > I've always found this terminology confusing. My own perception is > that there is only pre-compiled and interpreted. The interpreted
It's probably better to think of it as a continuum. > languages are always compiled as far as I can tell, and that Um... why? Did someone start compiling sh scripts? I can see an interpreted language parsing, tokenizing, and indexing, all without ever compiling anything. > byte-compiled code is almost always kept around after the first run > to reduce the amount of work required for subsequent runs. I'm > hesitant to call those files "byte-compiled" objects because I'm not > confident that's what they really are. I'm trying to think of what languages might do that. Smalltalk? Lisp? > So, what is the difference between JIT compiling and just > interpreting and saving the compiled objects (runtime compiled)? "Just interpreting" doesn't always result in compiled objects. In fact, if you're "*just* interpreting", you shouldn't have any. > Java obviously gets compiled in a separate step, rather than > happening at the time of the first execution; is there something > special about byte compiling Java code that would differentiate it > in other ways from the interpreted model? Java gets compiled (i.e., transformed) into bytecode, which is a binary intermediate format, which then gets interpreted; Sun's JIT takes the bytecode and further translates it into the local hardware's machine instructions. So yes, Java's interpreted, but then, so is the Linux kernel, when I run it on my PPC mac under VirtualPC. > As usual, the terminology and jargon is a bigger barrier to > comprehension than the facts. Heh. Optimization makes things confusing. -- _ |\_ \| -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg
