Thursday, 10 December 2015

Ada Lovelace' 200th anniversary

I have the impression that computer people have little awareness of, or interest in, their own history. So, time for a very short lesson.

Today, December 10, 2015, is the 200th anniversary of the birth of Augusta Ada Byron, Countess of Lovelace, credited as the first computer programmer. Her claim to that title comes from an article she translated an article on Charles Babbage's Analytical Engine from French to English, to which she added copious notes three times longer than the article itself. In it she described how the Engine could handle letters and symbols, not just numbers, and described a method for getting it to repeat instructions; the concept of looping is one of the things a lot of beginning programmers struggle to understand.

In note G, she analyzed several methods by which people could compute Bernoulli numbers, observed that one was particularly suited to calculation on the Analytical Engine, and proceeded to describe how to get it to do so. At this point Babbage thought the Engine was impossible to build with the technology of the time (he was wrong), so she would have had no hope of an actual implementation.  I am told that when people got around to actually building one in 1991 (using technology available to Babbage), they finally implemented Ada's description, and it worked perfectly, the first time. I doubt I've written more than a handful of programs in 45 years that worked perfectly, the first time.

I started programming in the fall of 1970 in Grade 13, and never heard of her until 1979, when the US Department of Defense named a complex and not-especially-successful programming language after her. I'd already been through an Honours Bachelor of Mathematics in Computer Science at the University of Waterloo, and had been in a graduate Computer Science at Carnegie-Mellon (one of the best in the world for the subject) for five years.  I wish someone had told me about Ada; she is an inspiring figure.