Download PDF of this issue.
Welcome to the forty-third issue of De Programmatica Ipsum, dedicated to the subject of Types. In this edition, Graham crafts a Motorola 6809 CPU emulator to show that types are useful, but not needed; Adrian reviews history and literature to show that types are useful, but should not be abused; and in the Library section, Graham reviews "Recoding Gender" by Janet Abbate.
We go back and forth, if you will pardon the pun, on whether programs have types or not. In the very early days of digital computers you had digits (as likely to be decimal or octal as binary), and that was your lot. But then still in the very early days of digital computers you had LISP, which has two types: atoms and lists. In the sort of early days of digital computers you got BASIC which has a whopping three types: numbers, strings, and arrays.
Stanford Professor Jerry Cain spent the first 17 lessons of his 2007 Programming Paradigms lecture (CS107) explaining how to build a generic set of data manipulation functions using plain C, carefully showing how all those "bit patterns" are represented in memory. The resulting code, featuring a relatively large amount of casts to and from void * pointers, can sort and search arrays of integers, strings, floating point numbers, and pretty much anything that can be referenced with a pointer. Which is the same as to say, a lot.
We are told that history repeats itself, first as tragedy, then as farce. This is certainly true of the history of computing, at least as far as its telling is concerned.