The article, "Trains, Elevators, and Computer Science", begins with a brief history of trains and elevators and specifically their braking systems. The writer, Dick Lipton, a computer science professor at Georgia Tech university, positions his article as practical by first stating that George Westinghouse was "not a theoretician, but was one of the great inventors of the 1800's", then fully explaining the braking problems and adding little comments such as "Pretty neat" and "extremely clever" after some engineering idea.
After 10 paragraphs of history we finally reach the point where Lipton explains the "general principle" behind both and the relation to computing science. This principle is
...do not rely on an action, but on the structure of the system. Make the default, a passive state, a safe state so that when the system fails, it gets to the safe state by default.
He suggests that inline comments are unnecessary when method/function/procedure names are specific and they have one specific purpose.
Ford may be onto something here but he obsesses over the latest and supposedly greatest software methdologies. Some of the obsessions are dynamic languages, "agile" methodology, and "test/behaviour-driven" development. What I found worse was the re-labeling and mis-crediting of an old software development idea. Ford credits Kent Beck and calls it the "compose method" pattern but everyone else (at least those who know their history) will recognize it as a central idea in structured programming. This apparent pattern, really an old idea given a new name, describes the writing of smaller functions/methods with a clear, specific purpose. The beauty of structured programming is that it gives us a way to convert blocks of code into smaller functions.
A few weeks ago I picked up the books A Discipline in Programming and Structured Programming. The first is by E. W. Dijkstra and the second includes a large section written by him. I became interested in these books after reading a few of Dijkstra's other papers and about Donald Knuth's great works. The computer science field could stand to have a bit more formalism in it and less hand-waving about "real-world" tools and methodologies.
Here are some quotes that I found especially good.
Yesterday I was looking at a listing of updates for free software projects.
I commented that the package moe could be used as a replacement for
nano or zile, that is, when you need to quickly edit files from the
command-line.
So today I'm giving it a go. I downloaded moe via the GNU project's FTP server and installed it. The compilation was insanely fast, I think it took less than 10 seconds to get it all built and installed.
Free Software Supporter is a newsletter run by the FSF (Free Software Foundation) and in it they have a section announcing a few software releases from the GNU project. However, they do not seem to provide any description of the projects aside from their name and version.
It can be found here.
Here is a mirror hosted on this web server just in case.
I bet there are a few gems in this manual. History is awesome ;-)
The first thing I would add is a way of linking to specific paragraphs or sentences. The second thing I would add is a proper discussion board system and possibly add an IRC chat component. For the chat component, I would also make it easy to paste snippets of the conversations into the discussion board. This is useful because you may have discussed an article with someone and then made changes to it, but everyone else would be unaware of your discussion unless they checked the discussion board and the discussion may have provided a rationale for why you made the change.
Java applets and more interactivity would be a fine addition to Wikipedia, but this is solving the wrong problem.
INS and DEL elements re-discovered and used for version control. HTML document's version
history kept within itself.
HTML pages as containing structure and storing their contents in separate files. Easier for everyone to deal with and splits up your page into logical pieces.


Recent Comments