Skip to main content

Recipes for What?

  • Chapter
  • First Online:
The Seductive Computer

Abstract

Programming demands mastery, on a massive scale, of fine grained complexity springing from a network of constraints: some logical, some stylistic and some an ill-defined combination. Principles of program style and structured programming – such as, modularity, encapsulation, and localization of scope – minimize complexity and so facilitate program understanding through flow-structure visualization. Principles of program style, naturally developed through stepwise refinement, are made manifest through layout conventions, and can significantly facilitate understanding of the all-important flow structure. Poor, incomplete and outdated stylistic aids, a natural consequence of the Happy Hacker Syndrome, can seriously misdirect program understanding. IT-system documentation, such as design diagrams and notes, can similarly assist program understanding, or misdirect it. Programming in the small is totally different from large IT system development – size really does matter. Whiz-kid hackers are the worst IT-system developers. IT-system maintenance is first introduced as a further aggravation in our quest for high-quality IT systems. A lot of IT-system maintenance is debugging, i.e., finding and fixing errors.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Another snippet from Leonard Lee’s collection The Day the Phones Stopped (Primus: New York, 1992).

  2. 2.

    For those who like to check their grasp of the relevant details, I’ll explain why these changes will cause the robot to always overlook the first item on the shopping list. Below is our program with the proposed exchange of instruction positions.

    When the execution of the program begins, “alpha-letter” is set as “A” (i.e. to point to the first item on the shopping list), but on first entry to the loop, the SET-NEXT instruction moves “alpha-letter” along to point to “B”. This means that the first jump to SUBPROGRAM READ&FIND will be with NEXT-ITEM aliased to box B, and not box A as it should. So the first item shopped for will be the item in box B, the second item on the shopping list. On next re-entry at the top of the loop SET-NEXT will move “alpha-letter” along to box C, and so all will proceed as intended with just the first item missed.

    A further error is to be expected with a shopping list containing only one item, because that will be skipped and the robot will be required to read and locate a second item that does not exist. This is a special case of another probable general error (‘probable’ only because we have not clarified what the “list is empty” stopping condition will be, nor what the shopping-list boxes contain beyond the designated items). With all shopping lists, the robot will be trying to shop for a final, non-existent item (as the result of a jump to SUBPROGRAM READ&FIND after SET-NEXT has moved “alpha-letter” on from the final list item) before it reaches the test “list is empty” at the end of the loop (part of the UNTIL instruction).

  3. 3.

    Formal logics are precisely defined reasoning systems, but they are not formalizations of our everyday logical or commonsense reasoning. To take a very basic example: logical inference from known facts to new ones. We might have the logical reasoning rule that ‘if A is true then B is also true’, perhaps written within the logical formalism as: if A then B. Let’s turn this into a concrete example by choosing A and B as things that can be true or false (indeed must be only either true or false): A could be ‘you are hungry’, and B could be ‘there is food in the refrigerator’, both of which may independently be true or false. So, our specific reasoning rule now becomes: if you are hungry then there is food in the refrigerator . Now how does formal logic stipulate that we reason with this rule? If it is true that you are hungry then the rule permits you to infer that there is food in the refrigerator . This line of reasoning fits perfectly with commonsense reasoning. All well and good, but what about when you are not hungry? In formal logic terms: you are hungry is false. Is there still food in the refrigerator? In the world that you and I inhabit: of course there is, but formal logic insists that we cannot conclude this. There might be food in the refrigerator, and there might not be. We just do not know. If A is false in the logical rule then, in formal logic, we are not entitled to conclude anything about the truth of B.

  4. 4.

    Or young woman if only she could work up enough enthusiasm for the activity.

  5. 5.

    Some of the following IT disasters were mentioned in the introductory chapter, but I’ll recap here because this list is barely credible. The list of abandoned IT systems is long, some abandoned (or redirected) during development and others similarly treated after delivery. Many large IT systems are in use, only after rescaling and retargeting, changes that are not usually publicized (for obvious reasons). In March 2009, the UK’s Ministry of Justice abandoned its IT project to track criminals from sentence to release after 5 years of development costing hundreds of millions of pounds (BBC News, 13/03/2009). Also in the news (and likely to run and run for some years yet) is the UK government’s IT system for the National Health Service in which additional to all the usual program-correctness issues there is the massive extra complexity of constraints introduced by privacy issues surrounding personal medical records. Aaron Sloman ( www.cs.bham.ac.uk ) uses this system as an example of why such large IT system projects “are almost all doomed to fail.”

    This is not a new phenomenon: in the1990s, the London Ambulance Service system (In 1994, P. Mellor wrote an article called “CAD: computer-aided disaster” and published it in a journal called High Integrity Systems vol. 1, no. 2, pp. 101–156), and the International Stock Exchange: Taurus project were both abandoned after repeated simplifying ‘redesigns’, repeated failure to meet development deadlines and costs escalating by tens of millions of pounds ( www.scit.wlv.ac.uk accessed 03/02/2009); the Prison Service scrapped a £350 million project “in favour of two smaller ones”; a welfare benefits IT system was abandoned after £25 million spent on it; and so on.

  6. 6.

    Actually, it’s worse than this because inside the computer the nice line-by-line separation of instructions that we still see in the right panel of Fig. 5.3 is also removed. It is replaced by a ‘newline’ character, say “ % ”. In which case the computer is actually executing :

    SHOP %SET alpha-letter AS A %REPEAT%DO READ&FIND WITH alpha-letter AS NEXT-ITEM % 3. place item in trolley%SET-NEXT alpha-letter%UNTIL list is empty%SUBPROGRAM READ& FIND%PUT NEXT-ITEM INTO CURRENT-TASK %PUT 0 INTO NEXT-ITEM %categorize item in CURRENT-TASK %consult supermarket layout plan%find desired category of items%plan route to where desired category located%go to this location%survey items until item in CURRENT-TASK found.

  7. 7.

    During the recent decades in which Computer Science has become a recognized degree course in most Universities the intake has grown and grown. But sometime around the turn of the millennium applications to read Computer Science at Universities suddenly slumped. This triggered considerable consternation and consequent searching for the reasons. One of the popular explanations that emerged was that a general misconception that whiz-kid programmers were just what was needed for IT system development resulted in the view that three years spent at a University getting a degree in Computer Science was a waste of time for the self-taught competent programmer. As a committed Computer Science teacher, I like to believe that this explanation is a significant contributor to the dire state of IT-system development, and it just might be.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Derek Partridge .

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag London Limited

About this chapter

Cite this chapter

Partridge, D. (2011). Recipes for What?. In: The Seductive Computer. Springer, London. https://doi.org/10.1007/978-1-84996-498-2_5

Download citation

  • DOI: https://doi.org/10.1007/978-1-84996-498-2_5

  • Published:

  • Publisher Name: Springer, London

  • Print ISBN: 978-1-84996-497-5

  • Online ISBN: 978-1-84996-498-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics