Re: why teach about compilers, was Java compiler courses
- From: Karsten Nyblad <148f3wg02@xxxxxxxxxxxxxx>
- Date: 29 Apr 2007 09:18:24 -0400
George Neuner wrote:
On 25 Apr 2007 04:14:58 -0400, Karsten Nyblad
Finally, a curse on on compiler design should not be a curse on
debugging code or data structures. There is no reason why students
should fight memory leaks in C code or reimplement stacks, maps, etc.,
when they can use library functions in other languages. The students
have only so much time for their student projects, and there is a lot of
compiler theory they will not have time for trying in practice.
Like it or not, programming skills are an integral part of a CS
education. We can debate endlessly what are appropriate teaching
languages, but in the end the students must somehow get practical
programming experience to gain certain skills and master certain
concepts. You can argue that the student may never again use those
languages, but you can't reasonably argue that she will never design
or write software or manage people who do - that's the whole point of
her education. Most of the skills are portable to any environment the
student may find herself in later. Debugging is a skill for life, not
just for programming.
To that end, compilers are complex programs that intersect many skill
areas. A professional developer will certainly need to successfully
read and write files, parse input, format output, manipulate complex
data structures, manage resources, plan strategy and schedule
operations. Even a simple compiler touches on all of these things.
Certainly, the student should be able to use any facility of the
implementation language to help herself - but debugging comes with the
territory.
[...]
The student's ability to design and implement a halfway decent
compiler for a reasonable language is a practical test of the CS
program's ability to impart concepts and skills. A compiler is one of
a handful of senior level projects I can think of that does encompass
virtually everything the CS program is supposed to teach.
George
It is very true, that designing a large program is a valuable lesson
for students and it is also true that a compiler curse is a good
chance for giving the students that experience. However, your are not
telling us, why you think it is important that students learn fighting
low level bugs or learn about data structures in a compiler curse.
Data structures are better taught in a separate curse preceding the
compiler course, and low level bug hunting is better taught in curses
where you need to program at a low level, e.g., the data structure
curse or a curse in real time programming. If the students do not
learn it, then they will get a crash curse at their first employer.
However, most of the students will never again get the chance for
learning about the internals of a compiler, and thus a compiler curse
should center on that topic.
Programming at a higher level will allow the students to implement a
larger language, implement more optimizations, or get closer to
generating real code.
Karsten Nyblad
148f3wg02 at sneakemail dot com
.
- Follow-Ups:
- Re: why teach about compilers, was Java compiler courses
- From: George Neuner
- Re: why teach about compilers, was Java compiler courses
- References:
- Java compiler courses
- From: wooks
- Re: Java compiler courses
- From: Karsten Nyblad
- Re: Java compiler courses
- From: George Neuner
- Java compiler courses
- Prev by Date: Compiler positions available for week ending April 29
- Next by Date: Re: rules to generate a context free grammar
- Previous by thread: Re: Java compiler courses
- Next by thread: Re: why teach about compilers, was Java compiler courses
- Index(es):
Relevant Pages
|
|