In his brief 1982 essay (EWD831), computer science giant Edsger Dijkstra examines a topic that (inappropriately, as it turns out) vexes some programmers: Why in the world do computer people count starting at zero? Everyone knows that counting starts at one!
As it turns out, there are two very good reasons for counting from zero!
Cleaning out some old boxes of papers, I came across one of those humor bits that circulate in any profession. Back in the day, it was usually by fax. Then it was email, and now Tweets and other social platforms. (The song remains the same.)
This one concerned “rare” (i.e. made up) languages loosely based on existing languages. The humor depends, mostly, on recognizing parodied languages and certain other topical references (like “Valley Girls”).
In other words, a lot of the funny has sailed, but I found parts of it cute enough to record here…
In the process of cleaning out boxes of old paperwork, I found this company memo, circa early 1980s, that describes a “simpler” way to send email. At the time, email systems were mainframe-based text systems you logged onto and typed at — actually not terribly unlike the web-based email systems today.
The memo reminds me of how it was back then and of how far we’ve come since. Here it is, reproduced as is:
The Hard-Core Coder (blog) just went WordPress Premium. No more ads!
Hate — really truly deeply hate — the damn ads.
Happy Christmas and a Merry New Year!!
In the first two parts of this series I’ve introduced state engines and taken apart a specific instance of an engine. Now it’s time to tie together the design idea with approaches to building a variety of such engines.
Because the programming logic is in the state table, the engine can be fairly generic. That means it’s possible to create a state engine framework you can reuse for a variety of applications.
Last time I introduced state engines and state tables. I showed parts of a simple implementation of one in Python. It parsed the language introduced in Little Programming Languages. This post continues that, so be sure you’ve read that first article.
I got as far as the state table implementing the process, and that’s where this post picks up. I’ll also get into the
SourceReader class that does the heavy lifting.