9 Comments
User's avatar
Gary Nelson's avatar

SDC certainly had the major load for programming and ongoing training for SAGE. Search You-Tube for an interesting video that documents that work. However there was some initial programming of the operating system done by Lincoln Labs who took over the Whirlwind development and then turned that over to Mitre. There is a memoir on that by John Jacobs [The SAGE Air Defense System, a personal history, Mitre, 1986]. John was there when I joined Mitre in 19984 and was handing out the book.

Expand full comment
Ira Bloomgarden's avatar

In the middle 70's the City University of New York offered programming courses to interested faculty. I attended a session and discovered that Fortran wouldn't help me teach Freshman Composition, or develop a program that would. About an hour into the session a knowledgeable attendee pointed out that the sample program couldn't run. The instructor looked at it for a moment and said, offhandedly, 'Yeah, it's a fake." I didn't return for the afternoon session, but eventually an application was developed that I and my colleague could use to create a 1st draft revising application that proved helpful. Then, of course, came the information revolution which proved immensely useful but which depended on processing and communication powers that were non existent in the '70's.

Expand full comment
Emma Hawis's avatar

Great read — it’s eye-opening to remember how much of modern computing traces back to early public-sector work. The article does a nice job connecting those origins to what we take for granted today. https://www.insulationvictoria.com/new-commercial-construction

Expand full comment
Nick E.'s avatar

Outstanding! 🤩

Expand full comment
Sam Penrose's avatar

Wonderful, thank you. SAGE anticipated other later aspects of the computer industry:

- need for dedicated power

- distributed systems

- real-time displays of the world

Expand full comment
suman suhag's avatar

Anything that is an advanced form like polymorphism can be expressed in more primitive forms. That is why machine code is really primitive — control is done by primitive tests with branch (close by) or jump (further away — although the two forms are probably over-complication). Data must be manually moved around from store to register, etc. Being able to say ‘3 + 4’ is much easier and more sophisticated.

This is abstraction — it makes the programmer’s job easier.

Polymorphism provides an abstraction over dispatch. Whenever there is a code selector, such as if or case (switch in more primitive languages, expressing in more imperative terms), this is really a means to dispatch the correct code.

We have two cases: where dispatch is done on a data value, or where it is done on type. Polymorphism covers the type case. Using polymorphism the programmer thinks in terms of types — the system automatically dispatches the correct code based on type.

This is more abstract thinking and it means there is a whole lot less code in a program to implement dispatch. That is dispatch is implicit rather than explicit.

This saves programmers thinking about a lot of detail which is required by implementation in terms of primitive mechanisms.

The more abstract and sophisticated forms cover anything primitive forms can do. This is why there are cautions against using primitive such as gotos (they cause a mess of control structures) and pointers (they undermine data structures and even security).

The problem is that primitives are easy to understand, beginning programmers can get them straight away. The sophisticated abstract mechanisms take more understanding and appreciation of how they make the job of creating large-scale complex software easier in the long run.

Now most people like to know how things work underneath. That is good, but the real lesson in understanding is that lower levels are not needed for programming, except for the system levels that implement the abstract levels.

In this answer is the key to understanding everything about programming!

Expand full comment
Family Budget's avatar

RAND has produced an impressive amount of influential research. One of my favorite areas to explore is the mathematical technique of dynamic programming, developed by Richard Bellman, a mathematician at the RAND Corporation. Dynamic programming has become a classic topic in computer science interviews, perhaps because its development was closely connected to the early days of software engineering.

Expand full comment
Antoinette Uiterdijk's avatar

What I miss in his story is how many women were hired/trained in that "first wave" of programmers.

The ENIAC was programmed by women, as was the Colossus. In the early years many females were involved in the development of computers, programming, etc.

But nowadays barely 20% of workers in software-engineering are female.

Expand full comment
The European Polymath's avatar

Had no idea ! Super interesting!

Expand full comment