Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.compilers > #3759
| From | Michael Lehn <michael.lehn@uni-ulm.de> |
|---|---|
| Newsgroups | comp.compilers |
| Subject | Re: A tiny self-hosting compiler used for teaching |
| Date | 2026-09-05 19:47 -0700 |
| Organization | Compilers Central |
| Message-ID | <26-09-007@comp.compilers> (permalink) |
| References | <26-09-003@comp.compilers> |
> On 5. Sep 2026, at 17:17, ram@zedat.fu-berlin.de wrote: > Michael Lehn <michael.lehn@uni-ulm.de> wrote or quoted: >> In practice, we have seen the opposite. Since introducing ABC, students who >> come to the course without previous programming experience have had a >> noticeably easier time. They can first learn the programming concepts without >> having to deal with some of C's syntactic peculiarities, and the later >> transition to C or C++ has not been a problem. > > Writing a compiler requires implementing complex data structures > (like symbol tables) and managing memory. If students have no prior > programming experience, they must learn basic control flow, data > structures, memory management and compiler theory simultaneously. > This creates a steep learning curve, even with a simplified language. > > The claim that transitioning to C or C++ later "has not been a > problem" is the most debatable point. While learning concepts > first is beneficial, C requires a deep understanding of hardware > interaction, manual memory management, and pointers - areas where > students taught via idealized languages frequently struggle. > [What language to teach first is an old and insoluble problem. When > I was in school most places started with Pascal while MIT started > with Lisp. That meant they were dealing with interesting data > structures and introspection while we were still explaining how > big to make an array. -John] > I think this assumes that students are asked to learn all these things at once. That is not how the course is structured. The compiler is developed incrementally over an entire semester. Students begin with small ABC programs and basic experiments with control flow, variables, and functions. Data structures, recursion, pointers, memory management, parsing, and code generation are introduced step by step. Each assignment contributes one small, reusable component. By the time the components are assembled into a compiler, most of them have already been implemented and understood separately. Nor is ABC an idealized language that hides the machine. It deliberately includes pointers, pointer arithmetic, recursive data structures, and manual memory management with `malloc` and `free`. What it removes is mainly some of C’s historical and syntactic complexity. The course uses a flipped-classroom format: students prepare with short English videos containing live programming, and the actual exercises are completed in two-hour classroom sessions with individual assistance. No previous programming experience is assumed. The first English worksheets, lecturer notes, and links to the lecture videos are available here: https://github.com/michael-lehn/not-abc/tree/main/hpc0-sessions So the statement about the transition to C and C++ is not a general theoretical claim about first languages. It is an empirical observation from several iterations of this particular course: the transition has not caused the problems one might expect, while beginners have found the initial introduction noticeably easier.
Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: A tiny self-hosting compiler used for teaching Michael Lehn <michael.lehn@uni-ulm.de> - 2026-08-25 08:05 +0200
Re: A tiny self-hosting compiler used for teaching Cóilín Nioclásín Glostéir <thanks-to@Taf.com> - 2026-09-04 21:12 +0000
Re: A tiny self-hosting compiler used for teaching ram@zedat.fu-berlin.de - 2026-09-05 07:02 +0000
Re: A tiny self-hosting compiler used for teaching Michael Lehn <michael.lehn@uni-ulm.de> - 2026-09-05 19:47 -0700
Re: A tiny self-hosting compiler used for teaching George Neuner <gneuner2@comcast.net> - 2026-09-05 14:02 -0400
Re: A tiny self-hosting compiler used for teaching Michael Lehn <michael.lehn@uni-ulm.de> - 2026-09-05 19:50 -0700
Re: A tiny self-hosting compiler used for teaching ram@zedat.fu-berlin.de - 2026-09-05 07:02 +0000
Re: A tiny self-hosting compiler used for teaching George Neuner <gneuner2@comcast.net> - 2026-09-05 14:02 -0400
Re: A tiny self-hosting compiler used for teaching George Neuner <gneuner2@comcast.net> - 2026-09-07 15:23 -0400
Re: A tiny self-hosting compiler used for teaching Michael Lehn <michael.lehn@me.com> - 2026-09-05 22:58 -0700
csiph-web