Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: Golf Challenge: FizzBuzz

by shmem (Chancellor)
on Mar 03, 2007 at 00:34 UTC ( [id://602997]=note: print w/replies, xml ) Need Help??


in reply to Re: Golf Challenge: FizzBuzz
in thread Golf Challenge: FizzBuzz

Mind to elaborate on "Perl Golf is hurting the Perl community"? What kind of aches?

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Replies are listed 'Best First'.
Re^3: Golf Challenge: FizzBuzz
by perrin (Chancellor) on Mar 03, 2007 at 06:02 UTC
    It contributes to the notion of perl being obscure and hard to read. It's not fair, since golf is a game, not a normal way to write code, but it still reinforces stereotypes for outsiders.
      It contributes to the notion of perl being obscure and hard to read. It's not fair, since golf is a game, not a normal way to write code, but it still reinforces stereotypes for outsiders.

      Well, "outsiders" sometimes still confuse Perl and CGI, or even web server stuff. Who cares anyway? Some C programmers like to play obfu games too. That doesn't give C a bad reputation, though.

        Who cares anyway?
        Managers who are selecting technologies care.

        People who make their living selling corporate america the idea that Perl is a strong architecture choice care.

        So, yes, it matters to me. When the discussion of "Perl vs $other_tech" comes up, and the discussion quickly (and I mean very quickly) devolves to "Oh, Perl is unreadable", and they point to JAPHs and Golf because that's google-able, my heart saddens a bit. Even if we've lost the battle for entirely the wrong reasons, we still lost.

      It contributes to the notion of perl being obscure and hard to read

      or it gets the hose again.

        Sorry. :-D

        Here's my fun solution to the problem. It's not golfed, but is intended to show a different approach from the usual modulus operator based solutions. Instead, this uses a "generator".

        use strict; use warnings; $\ = "\n"; my %label = ( 3 => 'fizz', 5 => 'buzz', ); my $end = 100; my %queue; $queue{0}{$_} = 1 for keys %label; my $i = 0; while (1) { my($n) = sort { $a <=> $b } keys %queue; # "shift" the next genera +ted number while ( $i < $n ) { print $i++; } # print any "non-special" number +s before it last if $i++ > $end; my @why_its_special = sort { $a <=> $b } keys %{ delete $queue{$n} + }; print @label{ @why_its_special }; $queue{ $n + $_ }{$_} = 1 for @why_its_special; # generate the ne +xt succeeding number(s) }
        I reckon we are the only monastery ever to have a dungeon stuffed with 16,000 zombies.
      It contributes to the notion of perl being obscure and hard to read.
      For me, it contributes also to the notion that perl is hard to write - summing both: that perl is very sophisticated.

      I like golf not only because it reveals dark corners of perl; it also reveals perl's tremendous ability to eliminate noise and produce dense expressions. Ultimately, golf tends to be noise, when shorter statement can not anymore be contrieved, but even those constructs - add a bit of air (white space) to them, a bit more verbosity, and many of them expand into beautiful, perfectly understandable nailing-downs of solutions to the problem at hand.

      Compare

      %hash = (); { my @keys = qw ( a, b, c); my @values = 1..3; for ( my $c = 0; $c <= $#keys; $c++ ) { $hash { $keys [$c] } = $values [ $c ]; } }

      which is a common idiom in many languages, to

      @hash { qw (a, b, c) } = 1..3;

      of which the latter is the golfed code version, useable in production code, and you must admit that perl to some extent is golf - well, compared to Java anyways ;-)

      Any language is "obscure and hard to read" for those that don't venture into it; and no matter whether that "obscure and hard to read" judgement is uttered as a pretext to not do so, or as a disinformed dismissive, it is just prejudice - and there being perl golf or not doesn't change that in the least.

      --shmem

      _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                    /\_¯/(q    /
      ----------------------------  \__(m.====·.(_("always off the crowd"))."·
      ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (5)
As of 2024-04-18 13:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found