top | item 23208539

(no title)

greglindahl | 5 years ago

I'm glad you're not trying to be a confrontational jerk. I'm all for disagreeing politely.

The project in which I worked on a C++-to-C translator didn't call it a compiler, it called it a source-to-source translator. It was a CS project in a CS department funded by the NSF. I have read the Dragon Book, and would be surprised if the authors would consider an interpreter, assembler, or a linker to be a compiler.

So yeah. I don't expect you to agree with my opinion, but I do appreciate it that you're trying to avoid being confrontational jerk.

discuss

order

jholman|5 years ago

In my understanding, interpreters are generally not considered a member of this category, as they don't in general have formal languages as output. That is, I believe that a classically-defined compiler operates offline (there's no feedback from output to input during a given run of the compiler), and an interpreter generally operates online. Of course, to a sufficiently theoretical theorist, online is just a special case of offline, but of course to real software that is absolute nonsense.

--

As for the dragon book... okay, I got over my laziness and went and got my copy of the dragon book. I see no edition number, but this copy is "reprinted with corrections 1988". 33rd printing.

Page 1. "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".

Page 1. "Target languages are equally varied; a target language may be another programming language, or the machine language of any computer...."

Page 17. "Some compilers produce assembly code, that is passed to an assembler for further processing. Other compilers perform the job of the assembler" (emphasis mine: they explicitly state that assemblers are compilers)

--

Edited to add: Btw, I feel like I'm on the shakiest ground claiming that linkers are compilers, and probably the problem there is that my understanding of what qualifies as a linker is shakier than most of the rest of this subject.

--

In general, if I had bought a pickup truck, I'd be more likely to describe it as a "truck" than as a "vehicle". If I was seeking grant funding for a source-to-source translator, maybe it would be prudent to use specific language in my grant application (I understand that grant-writing is an art).

However, if someone else in a blog post about their hatchback called it a "tiny vehicle", and that blog post was posted to hacker news, it'd be weird to call them out on it. They're not wrong, their hatchback is indeed a vehicle!