Today is Ada Lovelace Day, a day of blogging to draw attention to the achievements of women in science and technology. I'm not sure exactly how long Ada Lovelace Day has been around, but I do remember my brief yet fascinating study in 1989 of the machines she programmed - the Analytical Engine of Charles Babbage. As a student of electrical/computer engineering, I also studied the history of technology and its impact on western culture. This excellent course, instructed by Dr. John Lienhard at the University of Houston, gave me some perspective on the social consequences of technology. It also required me to write some papers, and for one I chose Babbage's Analytical Engine.
Today computers are all around us - in our cars, phones, hospital equipment, weather monitoring, flight control, music and video systems, and of course web servers. Many people, like me, program them for a living. As a student, I was amazed to discover that over a century before all our electronic advances produced what we thought was the first computer, Ada Lovelace was programming a mechanical device not unlike a modern computer.
In honor of that achievement I'm putting my paper, The Philosophy of Babbage's Analytical Engine, online. The paper shows how the philosophy of operation of the Analytical Engine is similar to that of a modern computer, and also contains a nice quote from Ada Lovelace - who like Babbage was way ahead of her time. I hope the paper conveys the depth of understanding that would be required to program such a device.
Wednesday, March 24, 2010
Friday, March 12, 2010
AVL Tree for Google's New Go Language
Anyone interested in Google's new Go language should check out my open-source AVL Tree. It was originally crerated as a C++ class and a template, used in my HERMIT program. Porting it to Go was an interesting exercise. First, I didn't need my heap allocator because Go's garbage-collected memory manager already does block allocations. Perhaps the most interesting part of the port, however, was moving from a class hierarchy way of thinking to Go's interface-based programming, which is more akin to "duck typing." I was able to add some interesting iterators similar to those in other Go containers, but until Go has generics I can't add that. Overall, it was an interesting study in simplifying the code. Assuming that Go grows and scales, it is shaping up to be a powerful programming tool with much of the simplicity of script languages.
Subscribe to:
Comments (Atom)