Solving bugs is nice, but for me, the greatest pleasure in coding is reserved for those occasions when you suddenly see a way to simplify a piece of existing, working code.

I was recently working on a piece of code that operated on overlapping substrings of a string, involving two nested for loops and 3 position counters. Getting it to work right took an inordinate amount of time trying to cater for all the overlaps and edge cases.

Then the realisation dawned that Perl's habit of padding shorter arguments to match the longer ones in many of it built in routines and operators meant that all my carefully crafted edge detection and correction was unnecessary. I removed it and everything still worked. That was a distinct pleasure.

Somemonk, I forget who, has or had a sig. that said something about knowing that you were moving in the right direction when you were throwing stuff away. That was the case here. Perl's default behaviour meant that a bunch of complicated tests and corrections could be eliminated.

I like that. And it happens much more in Perl than any other langauge I've ever used. (With the possible exception of PL/1 (actually PLS-86) which had more options to every library call than any other I ever used, and most of them had defaults that usually meant you could skip them. The only trouble was trying to remember which optional arguments had which defaults)


Examine what is said, not who speaks.
"But you should never overestimate the ingenuity of the sceptics to come up with a counter-argument." -Myles Allen
"Think for yourself!" - Abigail        "Time is a poor substitute for thought"--theorbtwo         "Efficiency is intelligent laziness." -David Dunham
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon

In reply to Re: how do you express coding-pleasure? by BrowserUk
in thread how do you express coding-pleasure? by zetetes

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



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.