On Sat, Nov 17, 2012 at 07:03:33AM -0500, Richard Kenner wrote:
> > First, C or C++ is not the best language to write a compiler in, 
> 
> It is my strong opinion that the best language to write a compiler in is
> the language that it is compiling (or the primary language in the case
> of a multi-language compiler like GCC).

I tend to half agree with that, but GCC is not exactly coded in C (or in C++). 
It has a lot of C code generators (gengtype, genautomata, and all the other 
gen*) and the combined amount of generated (C or C++) code in GCC is not 
insignificant.

If we continue on that route, we could have more (not less) specialized (C++ or 
C) code generators in GCC, and write more source for them, and still have GCC 
compiling itself since it is compiling the generated C++ code.

There is nothing really new in that idea, but it is surprising how many people 
believe that GCC is coded only in C or C++; it is not. It has a lot of 
specialized [C or C++] code generators.

(my own MELT work http://gcc-melt.org/ is pushing the idea of a domain specific 
language -translated to C or C++ - to code GCC extensions in).


In other words, I believe that having more generated C (or C++) code is not a 
bad thing. It gives us both the expressivity of (specialized, domain specific) 
languages fitted for their task, and the overall auto-compilation of GCC (which 
is important for testing, and for social, purposes).

Notice however that the Go front-end is not coded in Go, and the Fortran 
front-end is not coded in Fortran. AFAIK, some of Ada front-end is coded in Ada.


C is good as a system programming language; it might not be so good for 
hand-written compilers (and C code generators related to compilation exist 
since many many years, e.g. yacc, lex, burg, ..... and all our gen* things)

Cheers.


-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***

Reply via email to