That doesn't even require a broad definition. From Aho, Sethi, and Ullman: "a compiler is a program that reads a program written in one language - the source language - and translates it into an equivalent program in another language - the target language."
Except that if you interpret that literally, pretty much any program is a compiler. I can translate a text file in the "ASCII language" to the "UTF-8 language" with Notepad++, for instance.
Comments
HipHop is not a JIT, it is an AOT compiler.
While we're correcting people, HipHop isn't an AOT compiler, it is a source code transformer[1].
[1] http://developers.facebook.com/blog/post/358
If your definition of Compiler is broad enough, there's no difference.
That doesn't even require a broad definition. From Aho, Sethi, and Ullman: "a compiler is a program that reads a program written in one language - the source language - and translates it into an equivalent program in another language - the target language."
Except that if you interpret that literally, pretty much any program is a compiler. I can translate a text file in the "ASCII language" to the "UTF-8 language" with Notepad++, for instance.
I don't remember my models of computation class so well, but wouldn't ASCII and UTF-8 be alphabets, not languages?