Planet Geek!: Perl GRRRR.
Sep. 4th, 2008 11:52 amWarning. I'm ranting. I'm annoyed. I'm frustrated. You might want to put on your rant-proof galoshes before proceeding.
Ready?
Perl should be considered a Write-Only Language.
Code that is written in it is generally incomprehensible by anyone but the person who wrote it. It's great for one-offs, quick simple jobs, and low-scope tools. But anyone who says it's appropriate for an enterprise level application (and I mean anything over about a thousand lines) should be strung up, draw, quartered, glued back together, and shot into space.
The main problem is Perl is so weakly typed, it should be considered not to have any. That means that parameters passed to methods are not type-checked, and therefore there's no way to tell if you're calling a method correctly, except to see if the app blows up when you run it. Editors and IDE's cannot magically determine that "such and such a method requires an integer, a string, and a hashmap containing such and such values. You're doing it wrong."
Because of this weak typing and lack of structure, Perl libraries become worthless. Let's leave aside the fact that Perl OOP implementations are complete and total trash (OOP is designed to organize your data into object form, and stabilize how components are used, defining a rigid structure so that when you use the component, you must use it correctly). In the case of libraries, it's impossible to use a library unless you understand how it works. Libraries are not self documenting, they don't even have a standard method of organization. They're just loose collections of Perl code, again, with very little defined structure.
Therefore, people who come along to maintain code after the first person has suffered the above fate has no clue how a method is supposed to work, unless the original coder documented it, or built in type checking in their code. I have seen NO Perl code that actively makes sure the parameters being passed in are of the correct type. At best, they make sure the parameter are not null. And if they're super-advanced, they even use prototypes.
And yes. I am in the unenviable position of maintaining thousands upon thousands of lines of undocumented, badly maintained, incomprehensible Perl code. Yes, the developers could have documented, formatted, and put the code into a form that's easier to maintain. But they didn't, and to me that's the languages fault, not the developers. A language should have some element of maintainability, and not require the programmer to make up for it's inherent ambiguity. If it does, it's doubling the burden on the programmer. They not only have to write the code, they have to document it, and make it maintainable.
In my opinion... Perl by its very nature encourages sloppy organization and unmaintainable code.
And now, back to the trenches.
Cloned from: Planet Geek!
Category: Geekitude
Full article & comments: Link (Comment ticker: