User:Shlomif/Criticisms of Perl

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Introduction to the Article[edit]

This is an article that aims to be a coverage of the criticisms raised for the Perl programming language which would be comprehensive, and written from a Neutral Point of View, but still mostly concise. One note that in order is that User:Shlomif that originally created this page and hosts it, is actually an active user and aficionado of Perl, yet still wants to see some coverage of its criticisms on the Wikipedia.


The Perl programming language has received many criticisms in its history. TODO FILL IN.

Some of these are taken from:

  1. Simon Cozens' Ten Perl Myths
  2. Tim Bunce's Perl Myths
  3.'s Perl Myths
  4. Perl Begin's "Why Perl is Good?"

The Criticisms[edit]

Perl code is too hard to understand[edit]

Perl code can easily become unmaintainable[edit]

Perl encourages bad practices[edit]

The "strict" and "warnings" pragmas are not enabled by default[edit]

Perl code is unaesthetic[edit]

In a message sent to the Hackers-IL mailing list, Moshe Zadka (a Python aficionado who is proficient in many other languages) said:

What Perl syntax? That horrible mess of characters?

His sentiments are not original and a Google search for the terms "perl" and "ugly" can yield many other similar results.

Some of the rebuttals of this are:

  • Perl's syntax is intended to convey the meaning of the operation, and to ensure better extensibility into the future. Putting the so-called "sigils" ($, @, %, etc.) in front of variables allows to add new keywords without breaking compatibility.
  • Paul Graham wrote in his short essay "the Python Paradox" that:

At the mention of ugly source code, people will of course think of Perl. But the superficial ugliness of Perl is not the sort I mean. Real ugliness is not harsh-looking syntax, but having to build programs out of the wrong concepts. Perl may look like a cartoon character swearing, but there are cases where it surpasses Python conceptually.

Perl violates the UNIX philosophy (do one thing and do it well)[edit]

Some UNIX enthusiasts claim Perl is too large, monolithic and complicated for a unix tool, which according to the unix philosophy should perform one task and perform it well.

Larry Wall talks about it in his speech "Perl, the first Postmodern Language":

Or think about shell programming, and reductionism. How many times have we heard the mantra that a program should do one thing and do it well?

Well...Perl does one thing, and does it well. What it does well is to integrate all its features into one language. More importantly, it does this without making them all look like each other...

Rob Pike in a Slashdot interview with him answers one question about it:

Question: Given the nature of current operating systems and applications, do you think the idea of "one tool doing one job well" has been abandoned? If so, do you think a return to this model would help bring some innovation back to software development?

(It's easier to toss a small, single-purpose app and start over than it is to toss a large, feature-laden app and start over.)

Pike: Those days are dead and gone and the eulogy was delivered by Perl.

"whoppix" noted on IRC that he doesn't consider the /usr/bin/perl executable a Unix shell tool in the traditional sense of the word, but that 1. perl is a software platform or software environment, that is a host to many such tools (implemented as the APIs of CPAN distributions) and 2. that it often greatly facilitates writing such UNIX utilities when their need arises.

"Perl 6 will be a nice language, but it's not going to be Perl"[edit]

Some people claimed that Perl 6 is so radically different from Perl 5 (which is still mostly backwards-compatible to all Perl versions down to Perl 1), that it should not have been called "Perl". Similar claims have been voiced saying that "Perl 6 prevented Perl 5 from becoming Perl 6" and that there is going to be perl-5.12, perl-5.14, perl-5.16, etc. up to perl-5.100 or beyond.

Perl has poor support for Object Oriented Programming[edit]

Perl 6 has been taking too long[edit]

There have been some criticisms saying that it has been taking too long for a Perl 6 implementation to materialise, and that it is an example of the so-called "Second-system effect". Larry Wall said in reply that the unoffical slogan of Perl 6 is "Perl 6: second-system syndrome done right".