Entries in Computing (187)

Sunday
Jan082006

Advice to Beginner Programmers

 From Beginning Python by Peter C. Norton et al. (Wrox, 2005):

The trend in personal computers has been away from reliability and toward software being built on top of other, unreliable, software.  The results that you live with might have you believing that computers are malicious and arbitrary beasts, existing to taunt you with unbearable amounts of extra work and various harassments while you're already trying to accomplish something.  If you do feel this way, you already know that you're not alone.  However, after you've learned how to program, you gain an understanding of how this situation has come to pass, and perhaps you'll find that you can do better than some of the programmers whose software you have used.

This make a refreshing change from the gee-whizzery that seems to infect most beginners books.

Saturday
Dec242005

State the Problem Before Describing the Solution

Today I came across the following short note on Leslie Lamport's site:

State the Problem Before Describing the Solution, Leslie. Lamport, ACM SIGSOFT Software Engineering Notes 3, 1 (January 1978) 26

The idea is that, when writing a paper, you should precisely state the correctness requirements for any solution before you present your proposed solution.  Lamport points out that this idea can also be used when writing programs.  The separation of the requirements from the solution is similar to Michael Jackson's insistence that requirements be written in terms of domain concepts rather than solution concepts.

Thursday
Dec152005

Reinventing Zero (the hard way)

In a recent paper, Eric Hehner gives the following beautiful example of people reinventing the concept of zero the hard way:

In the 1991 Toronto phone book, there is a page that helpfully gives the time difference to various places in the world; to the U.K. it says "+5", and to Costa Rica it says "-1". But to Cuba it says "NA", and the legenda explains "time difference not applicable". By 1996 they tried to correct it; for Cuba it says "=", with the same explanation. In 1997 they discovered the number 0 , but they felt the need then, and still do today, to explain that 0 means "no time difference".
Wednesday
Dec142005

Not Part of the Conversation

Paul Graham is really a very good writer: he has interesting things to say and he says them clearly.  Here is an example I came across today:

On the web, articles you have to pay for might as well not exist. Even if you were willing to pay to read them yourself, you can't link to them. They're not part of the conversation.

 Exactly.

Wednesday
Nov302005

Logic for Computer Science

Today, in my reading,  I came across the following:

The only kind of logic necessary in computer science is the predicate calculus, used in the rigorous yet "informal" way of the working mathematician, but perhaps reformulated and extended by useful theorems in the direction presently being investigated by Dijkstra. Formalisms requiring a separate "proof system" or bearing the "formal logician's trademark" should be viewed rather critically.

R. T. Boute, On the Shortcomings of the Axiomatic Approach as presently used in Computer Science, Proc. IEEE COMPEURO 88, System Design: concepts, methods and tools, pp. 184-193, April 1988.

[By the "formal logician's trademark" Boute means the turnstile symbol.]