Category Archives: Computer Science

Computer Science

Turing Award Winner Peter Naur Disses…Everyone?

The ACM’s A.M. Turing Award is the Computer Sicence equivalent of the Nobel Prize or the Fields Medal in Mathematics. In 2005, the winner was Peter Naur “For fundamental contributions to programming language design and the definition of Algol 60, to compiler design, and to the art and practice of computer programming.” Naur’s essay “Programming as Theory Building” is one of my personal favourites (try using it as ammunition any time some client starts blathering on about how they’re going to build a “software factory” to build IT Systems just like they build cars—with programmers as completely interchangeable, disposable parts!)

But what’s weird is the Turing Lecture he gave, called “Computing Versus Human Thinking”. In it, he manages to trash Alan Turing, philosophy in general, all of psychology (especially cognitive psychology), and to accuse the ACM (among others) of censorship for declining to publish his papers on his theories of mental life. The lecture itself is a little hard to get a read on. He claims to have created a whole new model for human thinking, based almost entirely on the psychological works of William James (1890) and the neurological work of Charles Sherrington (1906). Everything studied or written since then he implies is hopelessly defective.

Hmmm…. Well, I suppose he could be right. Geniuses often see what others don’t. But I can’t help but be reminded of Stephen Wolfram’s “New Kind of Science”, in which he claimed that every scientist and mathematician who ever lived before him was completely blind and wrong and he alone of all humanity was brilliant enough to discover the truth of the universe. Ummm… ok. Possible, but not too plausible, doncha think?

Update: BTW, you can read the gory details of Naur’s Synapse-State Theory of Mental Life (pdf) and judge it for yourself.

Network Applications of Bloom Filters

“A Bloom filter is a simple space-efficient randomized data-structure for representing a set in order to support membership queries.” The survey paper Network Applications of Bloom Filters is a great technical overview of what they are and what you might want to use them for. Examples include distributed caching, distributed hash tables (DHTs), resource routing, more efficient multicast, and traffic measurement. For a quickstart, see this helpful tutorial on using Bloom filters in place of lookup hashes in Perl. The author also describes how Bloom filters may be applied in social software systems to allow people to share information about their networks without revealing who their friends are to the world or to a central authority.