A large fraction of the words I use in physics and math are not used the same way, within the field, as the generic dictionary definition.
A large fraction of the words I use in physics and math are not used the same way, within the field, as the generic dictionary definition.
I hate it when people blindly post definitions like this without explanation, it comes off super aggressive and doesn't solve much.
Normal CS jargon has "assemblers" and "linkers", both of which might appear to be compilers according to this dictionary definition.
CS history also includes things like TeX, which formats text for a variety of outputs, and was rarely called a compiler.
Web browsers often include a JIT compiler for Javascript, but their text formatting system isn't usually called a compiler.
I disagree with your assessment of "normal CS jargon". I'm wondering if you mean "normal jargon in the C/C++ community".
In my experience with compiler textbooks and computer science professors who specialize in compilers, compilers are any formal-language-to-formal-language translator. Yes, sometimes sub-types of compilers have specific names, but they are all compilers.
Is there one word for the subject material of the dragon book? I think there is, and I think that word is "compiler". Including source-to-source translators, including assemblers, including preprocessors, including linkers.
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.
--
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!
This is my first time sharing one of my tutorials on HN so I am still feeling out where I will slip and where I can slide.
The Internet is often more like a bar brawl than a reasoned conversation.