Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

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
01: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 ;-)