3 ms·
As a freshman in CS, I took a course where we reimplemented several of the standard Unix commands (like date, ls and cut) and much of the standard C library. W
by mattmight 16y ago
As a freshman in CS, I took a course where we reimplemented several of the standard Unix commands (like date, ls and cut) and much of the standard C library.
We also had to implement a subset of the bash shell, a lynx clone, a GNU make clone, a Lisp interpreter and a Lisp-to-C translator.
Having to implement many of the tools I've come to use on a daily basis was a transformative experience for me, and a great way to learn how to write efficient yet safe C code.
That experience inspired me to take the compilers class the next year, where I programmed in a functional language (Standard ML) for the first time. I was impressed with the expressive power and robustness of functional programming, and I've clung to it ever since.
These two experiences also set me on the path to becoming a professor. Now I teach and research compilers and programming languages for a living. I find hardly a day goes by where I don't learn something to improve my programming skills.