Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

The three virtues of Perl are CONFLICTING!

by wombat (Curate)
on Dec 10, 2000 at 22:46 UTC ( [id://45958]=perlmeditation: print w/replies, xml ) Need Help??

Help help! I've encountered something in the perl doctrine which I could not get my mind around! It's the kind of doctrinal conflict that causes religions to schism!. Background information. My roomate and I are playing out a bit of a holy war on the gateway server in our apartment. He cripples pico using a variety of methods and tries to force me to use vi. I in turn have been figuring out ways to continue to access the pico binary no matter what he does with it. (Note this is not the roomate I've mentioned in some of my previous posts. This roomate is geek, and I actually do share a room with him as opposed to just the house)

But we were walking somewhere yesterday, and we got to the discussion of why we are waging the fun little war of "hide the binary". He said that vi was extremely convenient, and though it had a steep learning curve, it allowed one to do exactly what is needed, no more no less, I countered that I was too LAZY to go through the steep learning curve. He countered that he was too IMPATIENT to do anything less than press three keys when he wanted to move to the next paragraph. I again called LAZINESS when I stated that 99 times out of 100, pico could do exactly what I wanted it to and that moving by pages, and then holding the arrow keys to move wasn't that bad. I further acknowledged that pico was a shotgun approach to solving the problems but that was okay because it still got the job done adequately. In addition to laziness above, I called IMPATIENCE on the grounds that I usually didn't have time to do an elegant job of things, and usually once the job got done, I could clean it up later if it really mattered. He then called HUBRIS by saying he wanted the job done better than anyone else. He tried to counter my IMPATIENCE by offering me hypothetical infinite time, but I said that wouldn't matter since my patience is not linked to how much time I have, and that had I infinite time, I'd merely jump and do other things. He would need to offer me infinite patience, which would be quite a heretical thing to do. :-)

So which are the correct application of the virtues, and which are the heretical standards? How do we resolve this!?!

~W
(BTW, I will eventually learn vi. I admit it is a superior editor. However I cannot learn it now, because that would be conceding defeat in the skirmish. :-)

Replies are listed 'Best First'.
Vice to virtue and back again
by tilly (Archbishop) on Dec 10, 2000 at 23:50 UTC
    Consider for a second self-interest. Is it a virtue or a vice? It can be either. In the form of greed it is a vice. But enlightened self-interest is a virtue.

    Larry's points is that traits which are traditionally vices like laziness, impatience, and hubris, are really virtues when you look at them with the view of enlightened self-interest. Doing things right is not just done for an abstract reason, it is done for the reason that you expect to reap the benefits of it again and again.

    A true experiment to ponder. At one point a group of researchers took a group of kids and collected a bunch of data on them at 6. Then when the kids were all grown up they did a follow-up study. One of the questions that the follow-up study asked was what characteristics at 6 affected the eventual income level.

    The single biggest factor did not turn out to be the result of a question on an IQ test, family income, or any of a number of factors you might expect. Instead it turned out to be a demonstrated capacity for delayed self-gratification.

    Their test was simple. What they did is put the kid in a room with a piece of candy. Then told the kid, "The candy is yours if you want it. But if it is still here when we come back, we will give you another as well." Then left for 20 minutes. The kids with the control to leave the candy wound up making more. It is as simple as that.

    Well read Larry's descriptions of his virtues again looking for the following. In every single description of why each trait can be a virtue the trait is combined with a capacity for delayed self-gratification. Without that ability to recognize and apply enlightened self-interest the trait remains a disgusting vice. With that capacity you wind up (like the kids) always winding up ahead.

    Now read your argument. Whose arguments pre-suppose an ability to delay your gratification, and whose do not? None of your arguments have caught the spirit of what Larry Wall said. Every one of your roommate's arguments did.

    I call that a slam-dunk.

    And for a related note, whenever you disagree with someone then learn something useful from their explanation, that is a win for you. Learning opportunities only count as losses in my book if you refuse to admit that you had something to learn. Sure it isn't easy to say, "You are right, I was wrong." But being willing to do that and take it to heart will wind up with your being right more often in the end. And so again we see the difference between hubris without enlightened self-interest and with. Without you hold to a ridiculous position which you know you have lost. With you learn to deserve that pride and ultimately earn more respect because of it!

      I wish I could vote more than once for this post.
      This is a very well-written, thoughtful, and beneficial (to everyone) post.

      If anyone is interested in the experiment tilly is talking about, there is a link here :
      http://www.library.unisa.edu.au/newslet/soc12-99.htm
      It might not be exactly the same thing, but a very interesting case study none the less. Apologies for not writing anything about Perl, but I wanted to write something about this fantastic post.

      Azatoth a.k.a Captain Whiplash

      Get YOUR PerlMonks Stagename here!
Re: (Wombat's conceptions of) The three virtues of Perl are CONFLICTING!
by Petruchio (Vicar) on Dec 11, 2000 at 00:11 UTC
    Here I am, planning on complimenting you on being a clever monk and making an outstanding post, and I find that you use Pico. Talk about cognitive dissonance!

    I'm afraid your friend is right, and that you are practicing False Laziness. By refusing to do the required work up front, you are damning yourself to more work overall. If you learn Emacs, you'll be more truly Lazy, for you'll save yourself work overall. If you learn Vi, you'll be even Lazier, because Vi requires fewer keystrokes for a given task. (Quoth Petruchio, the grinning troll)

    Your Impatience, too, is False Impatience. True Impatience is the anger you feel when your computer tries to make you do its work for it. Pico is one of your computer's devious tools, with which it makes you its willing slave. I know; I used to be a Pico user... though from ignorance, not willfulness.

    Unfortunately, you've really painted yourself into a corner, now. The Honest thing to do would be to admit defeat... but Honesty isn't one of the virtues of a programmer, and it can be terribly annoying. Your alternatives are limited... you may:

    • *sigh* Learn Emacs
    • Learn Vim, and insist that that's different than learning Vi
    • Make some bet which you can honorably lose, and switch to Vi to fill your end of the bargain. I suggest betting that your roommate can't do something really unpleasant.
    • cp vim pico or ln vim pico Another win on technicality, because you're running a program called pico. Having to type an extra two letters (as vi is often a link to vim or another clone) to invoke your editor, though, remains a serious compromise.
    • Move out

    There are probably some other good options. Be creative, but realistic; your objective is not to continue flogging yourself with Pico, but to save face. In any case, take solace in knowing that Vi isn't actually hard to learn at all, and you can extend it to do cool things using Perl.

    Now say 20 Hail Larrys, write a script of contrition (using a real editor), and next time you come back it'd better just be fornication or something.

Re: The three virtues of Perl are CONFLICTING!
by quidity (Pilgrim) on Dec 10, 2000 at 23:11 UTC

    Laziness

    A programmer does not want to type anything more than is absolutely required (where the value of required depends on your circumstances). This means they like reusable components, like modules, subroutines or even a quick way to write a loop over the elements of an array.

    Impatience

    A programmer wants to do things now, quickly and doesn't want to spend ages implementing a solution to a problem. This is closely related to laziness.

    Hubris

    Pride in a job well done. A programmer does not want to produce shoddy tools, he want his programs to Do the Right Thing and be bug free. This might seem to conflict with the other two, but it doesn't, not when you think about it.

    Once you've finished your program (ie. once it can send email), you can stop writing it. A program isn't finished until all the bugs are squashed (hubris) and you want this to happen as quickly as possible (impatience) through the minimum of work (laziness). See?.

(redmist) Re: The three virtues of Perl are CONFLICTING!
by redmist (Deacon) on Dec 11, 2000 at 00:38 UTC
    See, the thing is that sometimes, a Monk is too Impatient to be Lazy. You want to get something done, but it requires alot of work. At this point, the road diverges:
    • Impatience outwieghs Laziness (this is the Right Answer)
    • You fall prey to False Laziness (this is the Wrong Answer)

    False Laziness is a demon that every young Grasshopper should avoid like an unchained tiger!

    redmist
    Silicon Cowboy
Re: The three virtues of Perl are CONFLICTING!
by turnstep (Parson) on Dec 10, 2000 at 22:57 UTC

    No, no, no, no, no. You've got the whole argument wrong. It's not vi vs. pico it's vi vs. emacs!!!

    Not that I will even dare to start a debate here in the monastery on which *cough*emacs*cough* one is "better." :)

      Ehr...I prefer graphical editors like Notepad+ in KDE or Ultra-Edit 32 (the best IMHO) in M$ Windows. Very simple, very basic, but it gets the job done. I prefer to edit files on a unix machine running Samba from a windows machine with Ultra-Edit. UE is great, initiutive interface, many features which are easy to kick when you don't need them.

      Vi is too hard, awkward to use and Emacs is overkill.

      If you disagree to the point of feeling an urge to strangle me, you can disregard this information :).

      "Let's not include text here.."
(jeffa) Re: The three virtues of Perl are CONFLICTING!
by jeffa (Bishop) on Dec 11, 2000 at 02:09 UTC
    Remember, there are two kinds of people in the world of computer science:
    • pico folk
    • vi folk
    Them emacs folk are aliens - don't alert them to this fact. They know too much as it is. They'll claim that Free Source cannot be written without a GNU editor.

    But enough about that - as for the original virtues, best to only apply them to Perl. Mixed metaphors can result in laboratory explosions - ever think about applying Hubris to COBOL???

    Jeff (vi till the day I die . . . )

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    F--F--F--F--F--F--F--F--
    (the triplet paradiddle)
    
      vi till the day I die... I get it! As soon as you become a transient, higher-order being (via death), you'll use emacs. Excellent. Many folks like me have already caught on to this and are using emacs before they die. :-D
      AgentM Systems nor Nasca Enterprises nor Bone::Easy nor Macperl is responsible for the comments made by AgentM. Remember, you can build any logical system with NOR.
      <sigh> I'm an emacs sort of person myself. I do not, however, claim that open source cannot be written with anything but a GNU editor, however, I find it the best editor for my "style of stuff", whatever that may be. I hope to die and continue to use emacs; I currently use it for all but the tiniest of jobs, for which I use pico -- never vi(m).
        You may want to look at jove for small jobs, it's roughly the size of vi but with the common macros and a minimalist feature-set of emacs. There's also jed and µemacs; the latter does not default to a decent usable set of macros though.

        --
        perl -pew "s/\b;([mnst])/'$1/g"

Re: The three virtues of Perl are CONFLICTING!
by chromatic (Archbishop) on Dec 11, 2000 at 09:50 UTC
    The virtues are surprisingly similar to some of the values of the Extreme Programmer:
    • Build for today -- write the simplest code that will fulfill the required objectives
    • Don't add complexity you can add later (for the same or slightly higher cost)
    • Refactor mercilessly -- keep improving your code
    On the other hand, Larry went a little overboard with the laziness. Thirteen or fourteen years later, he's still working on Perl while he's no longer connecting the two machines cross country.

    Sometimes you've just gotta do the best you can.

Re: The three virtues of Perl are CONFLICTING!
by Anonymous Monk on Dec 11, 2000 at 02:04 UTC
    If you were LAZY you would want to learn vi so as to save yourself time and trouble over the long haul. If you were IMPATIENT, you would want to learn vi as soon as possible so as to start reaping the benefits sooner rather than later. Finally, with HUBRIS you would not want just to learn vi but instead not be satisfied with less than complete mastery of vi. Admitting that vi (or some other programmer's editor) is superior to pico for your tasks, but then not making the effort to learn it is neither Laziness, Impatience, nor Hubris.
Re: The three virtues of Perl are CONFLICTING!
by extremely (Priest) on Dec 11, 2000 at 03:06 UTC
    Here is a Pico story for ya. Years ago, on an SGI IRIX machine, the version of Pico on there had a nasty habit of truncating lines. I had a script that ran off of a data file we selected special out of a DB. The select was done at a particular time and then the DB moved on. The last field was a number and each line was about 255 characters wide. With the return on the end, the line was 1 chracter too long so it chopped one digit off the end of every integer and put the return back on. OUCH! That is a high price to pay for quickly fixing the spelling of someone's name

    It also took the else {} chunk off of a giant long line once but I pretty much blame that on the author not the editor. =)

    --
    $you = new YOU;
    honk() if $you->love(perl)

Perl is cohesively cool.
by frankus (Priest) on Dec 11, 2000 at 22:58 UTC

    I see no disparity:

    • Perl advocates Hubris, Laziness and Impatience.
    • There is more than one way of doing it.
    Ergo: there's many ways to be lazy, impatient or hubristic.

    --
    
    Brother Frankus.
(brainpan) Re: The three virtues of Perl are CONFLICTING!
by brainpan (Monk) on Dec 13, 2000 at 14:09 UTC
    I'd malign you, but I'm just now resolving to move from pico to vi myself. Thus far the best resource I've found to help me through this process is the vi quick reference card, (thanks to jepri for recommending this).

    This site might also prove useful (thanks to crazyinsomniac for this link).

    More links to helpful reference material coming $soon = localtime + undef.

    And no, I don't own 27 pairs of sweatpants.
Re: The three virtues of Perl are CONFLICTING!
by yakko (Friar) on Mar 10, 2001 at 09:44 UTC
    I started with pico. Coming from the MS-DOG world back then, I found it to be as easy as (new) edit. Then, having come from a WordStar-ish background before, I found joe to be the editor of choice.

    This is where my paradigm began to suffer a major shift.

    One of the first Unix systems I administered was a crufty HP9000/750 running HP-UX 9.03. There was NO joe, and NO pico... only vi. "Laziness" checks out of that hotel, and "Impatience" checks in. I try compiling joe, to no avail. I ended up learning vi instead.

    As time marched on, I was finding myself typing :wq in joe, and missing all the neat tricks I could do to get places fast. "Laziness" checks back in as I make vi my default editor for EVERYTHING, not just on that one system, but for my Linux boxen at home.

    This turned out to be a big win, as I now was able to take on most any Unix system and actually edit stuff without trouble, thus reinstating "Laziness" and "Impatience" to their rightful positions on the totem pole. "Hubris" then came naturally.

    (Though I'm not above using ({word,note}pad on) win*, I have put vim on there, as well, as the ":wq!" problem manifests itself even in Word... even at the command line... even in PowerPoint and Outhouse!)

    --
    Me spell chucker work grate. Need grandma chicken.

On The Subject Of Holy Wars...
by BlueLines (Hermit) on Dec 12, 2000 at 00:49 UTC
    The editor battle is already over at our work (Xemacs is the champion), but we're treading on new holy war ground. Some here use bash, and some use tcsh. This causes many nightmares for shell script writers, as some refuse to install the shell which they don't run. Or they may (in the case of my boss) have a binary named "bash" and "/bin/sh" which are both just copies of tcsh. Ughhh...

    BlueLines

    Disclaimer: This post may contain inaccurate information, be habit forming, cause atomic warfare between peaceful countries, speed up male pattern baldness, interfere with your cable reception, exile you from certain third world countries, ruin your marriage, and generally spoil your day. No batteries included, no strings attached, your mileage may vary.
      Hmmmm... I'm a firm believer that bash is the one true shell. However, I usually install tcsh on all the boxes I setup, just for those people who prefer tcsh, and so that any shell scripts written in tcsh still work. As with most things I take the approach of each to his own.

      I think it's just plain idiotic to have /bin/sh point to /bin/tcsh (it's probably worse than not having bash installed at all) - it will break scripts bad, real bad!

      I have come across some system scripts written in ksh. That was kinda nasty, not exactly a standard shell, I had to install it on 30 odd machines once they had been deployed. Just as well I had written an automatic software distribution system! (Yes, I rewrote the wheel...)

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (6)
As of 2024-03-19 08:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found