4 ms·
There are plenty of C compilers written in C. Large compiler suites for C/C++ are usually written in C++. But as a contributor to GCC, I can say that large part
by uecker 5y ago
There are plenty of C compilers written in C. Large compiler suites for C/C++ are usually written in C++. But as a contributor to GCC, I can say that large parts of the code still look very much like C.
- pjmlp 5y agoPlenty of compilers... right. If you cannot compile GCC with a C compiler, it isn't C.
- uecker 5y agoThere a couple of open source C compilers TCC, SDCC, tendra, chibicc, ACK, LCC, PCC, etc. and also many commercial ones. It is true that GCC is not written in C anymore, but it is easy to see that the code is still relatively close. I am also myself writing a C compiler in C at the moment and there is no problem at all.
- pjmlp 5y agoHow many of those are actually shipping software into production? Quite curious about which commercial C compilers, written in C, are being sold, keeping those companies in business. Every year thousands of CS students write toy C compilers.
- jstimpfle 5y agoIt will be hard to agree with you what "production" even means. I have written and shipped at least one compiler/interpreter (written in plain C). The language wasn't an issue at all. (This compiler doesn't have any meaningful optimizations, but I don't see why that should change the game). GCC and Clang aren't "sold" either, nor is MSVC really. I have never contributed to GCC, but as a fact I have visited plenty of files from its source code, and so far haven't encountered any meaningful use of C++ that couldn't easily be rewritten in plain C. The overwhelming majority of the code would probably compile as C without changes. I'm sure that there are far more meaningful "problems" with the architecture of a compiler written in C that are not the implementation language. For example, GCC is a pain to build (IIRC when I tried many years ago, I gave up).
- jstimpfle 5y agoTrying to win a pointless argument based on pedantic logic that misses the point.