August 2004 Archives

Swallowed Exceptions: Not Just for Java

| No Comments

Did I mention swallowed exceptions are evil?

Well, guess what I found in PL/SQL triggers all over the place?

CREATE OR REPLACE TRIGGER  TR_FOO
 BEFORE INSERT ON FOO
 FOR EACH ROW
DECLARE
 bla NUMBER;
BEGIN
   bla := 0;

   SELECT -- [etc., etc.]

   EXCEPTION
     WHEN OTHERS THEN
       Null;

END TR_FOO;

Yep, if that trigger should fail for any reason I'll never know about it.

*Shakes head*

Why I Still Like Perl

| No Comments

It's all about using the right tool for the job.

For batch processing, Perl is often a great tool. Get the data, swizzle it about, spit it out, send a notification to someone. That kind of stuff is bread-n-butter, that's what Perl was originally designed to do.

It helps that I have the right mindset. Before I found out about Perl some time in 1994 or 1995, I was using Bourne shell scripts with sed and awk. That could be fun but

lots of braindead vendor limitations and incompatibilities
Sometimes you had to use nawk instead of awk, sometimes you could expect to see a GNU version (gawk). Different versions of the Bourne shell handled functions differently. And so on...
terrible error handling
When a tool like awk or sed failed, you were liable to get a minimal message written to standard out. It was hard to persuade shell scripts to halt when there was a problem: by default, they would just sail on regardless. And again, you couldn't rely on things to work across different versions of Unix.
lack of documentation
All you had, usually, was the man page. This would devote inordinate amounts of verbiage on the command line usage of a tool like awk, with hardly anything for the language itself. There were O'Reilly books, but they were hard to get and often superficial themselves.

It really helped that Perl 5 came out before I had to learn too much of Perl 4. The first real programming language I learned was Modula 2, so Perl 5 modules felt natural to me. The OO stuff, at least at the start, was mostly syntactic sugar for me...

Many years later, I can still write idiomatic Perl. For a language that is so disdained as write-only and line noise, it feels remarkably natural. Maybe I would be an APL fan if I were of a different generation. Perl, though, has a distinctly practical edge: I use it to get stuff done quickly. It's true that it's my first choice when I have data that isn't quite what I want: sometimes it's just doing what I would do in a text editor if it wasn't too much keyboarding. It sure beats m4.

Now Perl 6 is on the horizon, I may have to go back to the books and learn some more. From what I read, it looks like they're addressing some of the shortcomings that Perl 5 does have. The object model is a bit ugly and a bit fragile too. For simple stuff, not such a problem, but, after all, I want to be able to use Perl comfortably in the large too.

In the mean time, as someone wrote over on Hani's comments:

for real, java vs perl arguments are such bs, I can't believe that people don't find occasion to use both in tandem all of the time