Stories
Slash Boxes
Comments

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Ovid (2709)

Ovid
  (email not shown publicly)
http://publius-ovidius.livejournal.com/
AOL IM: ovidperl (Add Buddy, Send Message)

Stuff with the Perl Foundation. A couple of patches in the Perl core. A few CPAN modules. That about sums it up.

Journal of Ovid (2709)

Tuesday October 18, 2005
02:00 AM

My programming sifu can kick your programming sifu's ass

[ #27221 ]

Motivated by the latest silly comments on Slashdot, I decided to write a little bit about programming language wars.

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • There is another class of languages besides Perl, Java, and C++: statically-typed functional languages. In particular, ocaml [ocaml.org] hits a terseness/performance spot that is great for many applications in my opinion, including most current uses of C++.

    Also, ocaml's option type is way better than perl's undef. We hates undef!
    • I think undef would be fantastic if Perl better supported three-value logic. Right now we have true or false. If Perl natively supported "true", "false" and "unknown", many problems could be made simpler.

      I did allude to other paradigms (logic programming, to be specific), but I confess that I don't know much about OCaml.

      • My unhappiness with undef is that I can never remember whether my functions return undef or not, and what the behavior of the function is when given an undef arg, etc.. In the end, I always end up having to write comments.

        Ocaml has a nice distinction between a type "foo" and a type "foo option" -- the latter can be undef, whereas the former is guaranteed to have a value:

        let succ_int i = i + 1;;
        let succ_int_option o = match o with
        | None -> 0
        | Some i -> i + 1;;
        • Keep to a strict convention and it's easier to remember. Don't return undef or a false value when you mean false, just return. A bare return will return undef in scalar context and an empty list in list context. By keeping to this convention, you can simplify your code. If you're returning from a ternary operator, use parens:

          return;
          # or
          return $val ? defined $val : ();

          Personally, I usually return as soon as I know a function will fail and I don't get to the ternary operator too often (though that's n

  • In your post, you have a few arg's on why Java has problems. IMHO, you weaken your argument when you say things like:

    Java languished for a long time without regular expressions.

    That's past tense - it doesn't matter unless the current set of regular expression functionality isn't stable or as fully-featured. If it is, say that, instead of talking about how Perl was great against Java v1.0 (or whatever).

    I liked how one /. poster [slashdot.org] said:

    The regular expression support of languages like Python, Ruby, and even

  • few times i don't see people bashing perl on slashdot. this is one of them. is perl 6 development shutting down those trolls or what ;-)