The Thing About Constants

Tags

, , , , , , , , ,

Along with “always use less-than” is another great piece of always advice, except this one is a prohibition, a never rather than an always (same thing, really, from a programmer’s point of view).

It has to do with never having literal values embedded in your code!

Continue reading

Counting From Zero

Tags

, , , , , , ,

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!

Continue reading

Rare Languages

Tags

, , , , , , , , ,

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…

Continue reading

Blast From the Past #1

Tags

, , , ,

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:

Continue reading

State Engines, part 3

Tags

, , , , , ,

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.

Continue reading

State Engines, part 2

Tags

, , , , , ,

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.

Continue reading