Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^3: Worst blog post ever on teaching programming

by dragonchild (Archbishop)
on Apr 03, 2006 at 18:19 UTC ( [id://540992]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Worst blog post ever on teaching programming
in thread Problematic post on teaching programming

Understanding the concept of a Turing machine is actually quite important in real-world programming. A little digression -

Nearly everyone on this site will be able to point to an experience in their careers where they wrote something in Perl and it took them a couple days. Turned out to be really really useful and the PHB had it rewritten in Java. Took 15 people 6 months and it still doesn't work right.

Why is that? Perl isn't inherently a better language than Java. In fact, there are many things Java has better support for than Perl. However, Java projects generally take longer than the equivalent Perl projects and generally require more people.

My feeling is that Perl programmers tend to be more capable than Java programmers, precisely because we tend to have a stronger grasp of the fundamentals. Things like a Turing machine. In fact, I once implemented a Turing machine in production code because it was the correct and cost-effective solution to the requirements. It's easy to deride the theoreticals, but they're extremely useful, just not as presented. You actually have to think about how to apply them. :-p


My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?

Replies are listed 'Best First'.
Re^4: Worst blog post ever on teaching programming
by BrowserUk (Patriarch) on Apr 03, 2006 at 19:45 UTC
    I once implemented a Turing machine in production code because it was the correct and cost-effective solution

    I think it is all too easy to forget how much practical experience it requires to be able to reach that determination.

    Just as theory without practice--real-world practical application--is just so much hot air; so you can practice as much as you like, but without the theory to back you up and allow you to choose the right starting point, the likely outcome of your practice is that you will become very good at doing the wrong thing.

    From previous discussion, I think that you are likely in tune with the theory and practice of 'balance in all things'.

    In programming as in life, balance is everything, and inbalance--the over concentration on one aspect to the exclusion of others--is the source of most woes.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
Re^4: Worst blog post ever on teaching programming
by Anonymous Monk on Apr 04, 2006 at 16:20 UTC
    In fact, I once implemented a Turing machine in production code because it was the correct and cost-effective solution to the requirements.

    Really? Please explain where you got the infinitely long tape, and how your software made markings on it. If you didn't do that, then you didn't make Turing's machine; and any computing device with an infinite datastore that we can concieve of is computationally equivalent to a Turing machine.

    Turing machines are just a theoretical device for discussions of computational equivalence; you can't "implement" one in any sense of the word. You can create a state machine with an associated finite datastore, but we tend to call those devices "computers"; the hardware already does that for us.

    There's no sense of the word in which I can find it meaningful to claim one has "implemented" a Turing machine; it's a thought experiment, not a device you can actually build. --
    Ytrew

      There's no sense of the word in which I can find it meaningful to claim one has "implemented" a Turing machine; it's a thought experiment, not a device you can actually build.

      A thought experiment? You mean like Schrödinger's half-dead cat in a box?

      Please explain where you got the infinitely long tape...

      You are mistaken. There is no requirement in the definition of Turing machine that the tape be actually infinite in size. It merely needs to be unbounded. As long as an implementation, in its execution, doesn't exceed the limits of its "tape", there's no reason it can't be a Turing machine.

      We're building the house of the future together.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://540992]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (6)
As of 2024-03-19 10:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found