|compilers, in a nutshell firstname.lastname@example.org (1994-05-09)|
|Compiler topics email@example.com (1994-05-11)|
|Compiler topics firstname.lastname@example.org (1994-05-12)|
|Re: Compiler topics email@example.com (1994-05-13)|
|From:||firstname.lastname@example.org (Steve Simmons)|
|Organization:||CONVEX News Network, Engineering (cnn.eng), Richardson, Tx USA|
|Date:||Thu, 12 May 1994 12:34:25 GMT|
> I don`t know what your class already knows nor what the overall objectives
> of your course are, but I suspect very few of them will ever write
> compilers. On the other hand, many of them might design little languages.
> Making them more aware of the power of the tools available and how it
> makes their own software more robust is very important.
Hmmm.... You are right about very few people ever write a compiler; however,
there are 3 reasons why every CS student should take a compiler course.
- Small languages as you pointed out. Every program must support a language
as a form of input. Years ago, most programs were very columnar (this
command in line 3, like FORTRAN). ~10 years ago, command line
languages had advanced to more free form type; however, many programs
are no longer supporting a textual command language these days (Motif is
now the preference).
- Every student will use a compiler. It helps to understand the restrictions
of the compiler. For example, why can't a recursive routine be inlined?
Why is parallelization restricted to loops? Why did compilers make
RISC a more viable technology?
- Data structures.... Very few students are exposed to a complex system
of data structures that must interact with each other. With a compiler
course, they see how to build a AST, walk it to build a symbol table,
linearize it into an assembly language, etc.. In fact, didn't Knuth
write a compiler to prepare for his books, "The Art of Computer Programming".
[No, actually, he used a pseudo-assembler. Maybe in the later books. -John]
In a 6 hour course, you CANNOT cover all 3 areas well. Probably, you
can cover the following well...
- Compiler Architecture (1 hour)... Flow from source to executable.
- Lexical Analysis and Regular Expressions (2 hours)
- Grammars (1 hour)
- Parsing very high level difference between recursive descent and
LR parsing (2 hours).
It would be nice to slip optimizations in there somewhere; however, you
would be pushing it...
Return to the
Search the comp.compilers archives again.