Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Thank you for the link to Knuth's paper.

I have read about it before, but not read it. As normally happens, there are insights in the original that are forgotten later. One of the best ones so far for me is the note on p277 which points to a proof by Rao Kosaraju that implies that the normal structured programming constructs, with loop control, with named loops is sufficient to replace any algorithm using gotos with an equivalent one without goto which does no extra computation. (The key point being no extra computation.) I find this an interesting theoretical validation of the point that loop control and named loops in Perl is sufficient to replace the vast majority of reasonable gotos in other languages.

And if you go on to p282 you will find the following quote:

Certain go to statements which arise in connection with well-understood transformations are acceptable, provided that the program documentation explains what the transformation was.
The example that he demonstrated this with was taking an obvious recursive algorithm, recognizing tail-recursion, and rewriting it for efficiency. This involved introducing gotos. In my note to Ovid above I used the examples of implementing a finite state machine, and TheDamian's Switch.

And then there are the comments which are fascinating in hindsight. For instance the one on p295 about how a given level of abstraction often defines several related routines and data definitions. His example is how the representation of a table is tied to the routines you need for storing to and fetching from it. His assertion that the next generation of languages will probably take into account such related routines seems to me to be an excellent anticipation of OO programming...

And his closing note about the future seems to be an excellent description of the present. Higher level languages like Perl often contain goto, but people just don't see the need to use it, and so the issue faces away. However, as he said, it remains true that if you let beginners know about goto and leave them with the opinion that it is OK to use the feature, they will discover many cases where they "need" goto, but the cause of the need is poor planning on their part, and they would be better off hitting the roadblock, backing off, and then rethinking rather than working their way forward into more trouble by adding gotos...

In reply to Re (tilly) 2: Would you use 'goto' here? by tilly
in thread Would you use 'goto' here? by Ovid

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or or How to display code and escape characters are good places to start.
Log In?

What's my password?
Create A New User
Domain Nodelet?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (2)
As of 2021-09-26 22:26 GMT
Find Nodes?
    Voting Booth?

    No recent polls found