Monday, July 25, 2022

Spelunking CACM, vol. 11 (1968): Operating Systems Bonanza and Ethics, but not the ARPAnet!

If 1967 was a little dry, 1968 more than made up for it. The May issue is worth reading end-to-end! As it happens, that issue contains retypeset (and possibly updated?) versions of papers from the first Symposium on Operating Systems Principles (SOSP), which took place in 1967.  That first SOSP includes Larry Roberts's description of the ARPAnet, though that paper doesn't seem to have made it into CACM. (Some of the links below may be open access via the second link above, if the links below take to you the paywall.)

The year was just chock-full of operating systems papers by names such as Jack Dennis, Butler Lampson, and Edsger Dijkstra, and a comprehensive view of systems by E.L. Harder and another view of things by Jack Dennis, many but not all of them from that SOSP. This year also provided the first proposed ethics guidelines for ACM members, to the best of my recollection.

Donn B. Parker's article, "Rules of Ethics in Information Processing," presents the ACM's Guidelines for Professional Conduct in Information Processing. The article begins with three major points we still debate today, and a fourth (fraudulent programming schools) which seems to have been more transient. It begins:

There are a number of serious ethical problems in the arts and sciences of information processing. A few of these are: invasion of privacy by use of the computer; implications of copyrighting computer programs; and fraudulent programming trade schools. The "little" problems of personal ethics are of equal importance and are often closely related to the more imposing problems.

The original version filled less than a page, divided into rules for relations with the public, with employers and clients, and with other professionals. I can't help but notice the continuous use of the pronoun "he" to describe an ACM member, though honestly that probably would have been not so different even a decade ago.  This set of guidelines has now grown into ACM's Code of Ethics, which everyone in the field should read.

As a Caltech grad, this paper on a means of recovering an on-disk structure after a system crash, caught my eye. Of course it's a systems paper, so I'm naturally interested, but otherwise maybe not so remarkable by today's standards. It's the first non-Knuth-sensei Caltech paper I remember spotting, but I haven't checked the affiliation of every single author. (Knuth-sensei's first paper with a Caltech affiliation might be 1961.) I don't recognize either of the authors, Peter C. Lockemann and W. Dale Knutsen. Caltech punches far above its weight in almost every scientific field, and many Caltech alumni have made major contributions to computing, but computing seems to be relatively weaker than fields like physics and chemistry.

The April issue has a breathtaking, simultaneously contemporary and prescient view of how the need for computers was broadening. "Perhaps the computer is too big for the space vehicle, or to put in your vest pocket," Harder posited. It serves as a harbinger of the papers to come in May.

Daley and Dennis described virtual memory in MULTICS, one of the three or four most influential systems in history. Oppenheimer and Weizer presented their resource management in mid-sized systems. Van Horn of GE described a set of formal criteria for reproducibility in debugging. Interestingly, he used the term "virtual computer", essentially describing a process as an instance of a virtual machine, language very similar to what I use today. And Dennis shows up again, with a position paper arguing in favor of timesharing machines over networks that is well worth a read.

But the star, the paper for the ages, is Dijkstra's "The Structure of the THE Multiprogramming System", which features the observation that "an interrupt system to fall in love with is certainly an inspiring feature." Part of what makes the paper spectacular is that Dijkstra describes their failures and mistakes. We could all learn from this approach! Although perhaps his claim that the delivered system would be perfect should be taken with a grain of salt? The paper doesn't have references(!), but this is a real-world implementation of Dijkstra's Cooperating Sequential Processes, the idea he was developing in the mid- to late-1960s that would become one of the foundations of theoretical work on computing systems. The clever language also makes the paper a pleasure to read. All systems people should read this paper!


Sunday, July 10, 2022

Spelunking CACM, vol. 10 (1967)

In 1967, not a lot caught my eye but these.
Parallelizable arithmetic expressions shows how to take a linear expression and convert it into a tree for maximum parallelizability, assuming you have multiple ALUs, Ina single pass.
4-D hypercube includes some nice b&w wire frame drawings of a rotating hypercube done for a stereo animation. The author noted that he didn't feel that it gave him better insight into actual 4-D geometry.
Simulating a computer system is helpful in designing new systems. This simulation of an S/360 seems pretty sophisticated, including a careful job generator.
QED editor by Peter Deutsch and Butler Lampson, at Berkeley at the time, is a line editor for a teletype terminal. It mentions a few similar programs at other institutions, as well. This one includes search functionality, and the ability to store sequences of commands in a way we would later call editing macros.
This completes my spelunking of the first decade of CACM! Names (like those last two) who would go on to lead the 1970s and become legends have begun to appear.
I'm doing CACM since it seems central to the conversation, but there was also a note back in January about scope. CACM, they say, is mostly about systems, with less about numeric computation and theory. More theoretical work appears more in ACM's Journal and Reports. I'm not even going to attempt to spelunk those, though, just CACM is enough!