Hacker News new | past | comments | ask | show | jobs | submit login

Yes, I agree with you of course. But I think the intended audience for this blog would be operating on a slightly looser and less academic meaning of the phrase "interpreted language," where the answer to the question, "Does a Java program get interpreted when it runs?" would be affirmative.



But so does any computer program. What do you think non-virtual machines do?


The difference is that binaries contain instructions that map directly to hardware operations, whereas bytecode is interpreted by a binary. The interpretation is an intermediate step that doesn't take place when a program runs on bare metal.

edit: Of course, it would be possible to build a machine that actually executes JVM instructions directly. It would also be possible to build such a machine for JavaScript, but if someone asks you whether JavaScript is an "interpreted language," the answer would still be affirmative, even if there are cases where it's not true.


Actually, at any given time, a large number of the "hardware" operations being passed to a modern CPU are actually being "interpreted" using the microcode implemented on the CPU itself.

Even in the case of instructions which do map directly to hardware ops, the CPU is still doing branch prediction and prefetching, which implies that the code is being examined (i.e., "interpreted") before being executed.

I'm not trying to say that performance isn't better when funneling native instructions down to the CPU; rather, just that it's worth remembering that there's really no such thing as "[running] on bare metal" any more, at least on a modern x86 ISA system.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: