To clarify, an example of a non-MVC compiler would be something that expects to read a list of files from argv and expects to write to stdout.<p>An example of a MVC compiler would be something that abstracts the act of compiling bytes into bytes from how it obtains those bytes or puts them out.<p>I <i>think</i> gcc works like the former and clang like the latter? I&#x27;m not familiar with either.<p>An example I <i>am</i> familiar with is the TypeScript transpiler - a &quot;Compiler&quot; class with a pluggable &quot;Host&quot; interface. There is one implementation of that host for each environment it can run in (in-memory, node.js, cscript.exe) that knows how to read files and write output. The compiler class would call host.writeFile(filename, contents) and it&#x27;s up to the host whether to write that to a file, or a textarea in a web page, or pipe the string to another transpiler, or whatever. It&#x27;s up to the view to decide whether to colorize output or not, whether to show an underline that the user can click to jump to the error or not, etc.<p>Basically the view is independent of the model, and provides functionality local only to its interaction context that the model shouldn&#x27;t need to care about. As a bonus it&#x27;s pluggable and thus easy to write new views.