Perl Needs Better Tools
by Matisse Enzer
August 25, 2005
Perl is in danger of becoming a fading language--new programmers are
learning Java and Python in college, and companies like Google hardly use Perl
at all. If you are afraid that Perl may be in danger of becoming irrelevant
for medium-to-large projects, then read on.
The Scary Part
I have discussed the future of Perl with managers from companies that
currently use it and find that they worry about the future of Perl. One company
I spoke with here in San Francisco is rewriting their core application in Java.
Another company worries they will not be able to find new Perl programmers down
the road. Yet another uses Perl for major projects, but suffers from
difficulty in refactoring their extensive code base.
There are many reasons why companies care about the future of Perl. I offer
a part of a solution: better tools for Perl can be a major part of keeping Perl
relevant and effective as the primary language for medium and large
projects.
When measuring the effectiveness of a development environment (people,
language, tools, processes, etc.), a key measure is how expensive and painful it
is to make changes to existing code. Once a project or system has grown to
thousands of lines of code in dozens (or hundreds) of modules, the cost of
making changes can escalate to the point where the team is afraid to make any
significant change. Excellent tools are one of the ways to avoid this unhappy
situation, or at least reduce its impact. Other factors are excellent
processes and, of course, excellent people.
21st-Century Integrated Development Environments for Perl
I propose that more, high-quality development tools will help keep Perl
relevant and alive in medium and large project environments. My focus in this
article is on IDEs, or Integrated Development Environments, and primarily those
with a graphical interface.
An IDE is an integrated set of tools for programming, combining a source
code editor with a variety of other tools into a single package. Common
features of modern IDEs include refactoring support, version control,
real-time syntax checking, and auto-completion of code while typing.
I want to make it clear right at the outset that a team of highly skilled
Perl programmers, using only tools that have been around for years (such as
emacs, vi, cvs, and make)
can and do build large, sophisticated, and successful projects. I am not
worried about those programmers. I am worried about the larger population of
programmers with one to five years of experience, and those who have not yet begun to
program: the next generation of Perl programmers.
Great tools will not make a bad programmer into a good programmer, but they
will certainly make a good programmer better. Unfortunately, the tools for
Perl are years behind what is available for other languages, particularly
Java.
One powerful example is the lack of graphical IDEs for Perl with excellent
support for refactoring. Several IDEs for Java have extensive refactoring
support. Only one for Perl, the EPIC plugin
for Eclipse, supports even a single refactoring action.
For an example of how good IDEs have inspired at least one Perl developer,
see Adam Kennedy's Perl.com article on his
new PPI module and Scott Sotka's
Devel::Refactor module (used in EPIC).
I acknowledge that a graphical IDE is not the be-all of good tools. Just as
some writers reject word processors in favor of typewriters or hand-written
manuscripts, some programmers reject graphical IDEs and would refuse a job that
required them to use one. Not everyone has (nor should have) the same tool
set, and there are things a pencil can do that vi and
emacs will never do. That said, IDEs have wide use in businesses
doing larger projects, and for many programmers and teams they provide major
increases in productivity.
Another important point is that while this article discusses over a dozen
specific tools or features, having all the tools in a single package produces
the biggest value. An IDE that provides all of these features in a single
package that people can easily install, easily extend, and easily maintain
across an entire development team has far more value than the sum of its
parts.
There is a big win when the features provided by an IDE immediately upon
installation include all or almost all of the tools and features discussed here
and where the features "know" about each other. For example, it is good if you
enter the name of a non-existent subroutine and the real-time syntax checker
catches this. It is much better if the code-assist feature then pops up a
context menu offering to create a stub for the subroutine or to correct the
name to that of an existing similar subroutine or method from another class that is
available to the current file. (This is standard behavior for some Java
IDEs.)
What Would a 21st-Century Perl Tool Set Contain?
Perl needs a few great IDEs--not just one, but more than one so that
people have a diverse set to choose from. Perl deserves and needs a few great
IDEs that lead the pack and set the standard for IDEs in other languages.
[1] [2] [3] [4] [5] [6] Next