I've gone back to school for Programming and Web Programming certifications. This is a mixed bag so far, as I've been programming since two years before the Web was invented, and yet the admins won't allow me to test out of any of the "how do I program?" classes. Because apparently all my programming courses from the last time through college have expired or something. Whatever. The point is, this entire first semester is all review before I can take courses in newer languages and technologies, and as such, despite the professors being nice and overall pretty solid teachers, I am so bored.
To keep my ADHD brain from running rampant, I've started relearning Scheme. There are a number of textbooks on the subject available for free online, among them:
- SICP: Structure and Interpretation of Computer Programs
- How to Design Programs
- Essentials of Programming Languages
- The Scheme Programming Language, 4th ed.
- LISP In Small Pieces
I've learned Scheme before, back in high school, but that was years ago (I won't say just how many ^^; ). And just like then, I find myself stuck at the same point. Continuations. Despite my best efforts, I just can't wrap my head around them.
TSPL4 says that continuations are a way to store and continue evaluation at an arbitrary point, which sounds pretty cool. But the examples given don't seem to actually do anything, and then suddenly they're being used to implement a lightweight multi-process asynchronous non-pre-emptive threading system. Just. What!?
Like, I sort of understand what it's doing, but the actual use of (call/cc) is a very distinct special form, and so actually using it myself is... not happening. I guess I just don't understand how or when to use it, despite working through the given examles. It's really too bad that I never got to take a full-fledged class on Scheme; I feel like having someone to walk me through it would really help here, and that's something I don't say very often.