Read your Journal post on "Current State of P6" and wanted to express my
support for you/your work and to says "thanks" for taking on a very hard
job. I'm only an occasional Perl user - but have a friend who actively
contributes and maintains a useful segment of code in Nagios, so I get
pointed to interesting stuff like your post.
[I'm writing because I don't need to create another login out there in
the Web-verse. If there's anything useful in this, you have my
permission to edit and post as you see fit.]
There's a very impolite, but relevant response to critics in the
-"put up or shut up",
which translates to a nicer "Really? Show me how yours does it."
This was the stance within Bell Labs Computing Research (dept 1127).
And I'm guessing, something like this could've gone on at Xerox PARC.
It's not accidental that both these (small) groups profoundly changed
the world of computing.
Exactly as Perl, in all its manifestations, has done.
In 1995 as the Web was exploding, what were the alternatives to Perl for
CGI's and system admin?
Tcl? C? and some proprietary products.
Languages like Java, Python, Ruby have all arrived, I'd argue, as a
direct response to perceived inadequacies of Perl 5.
I'm not sure where to put PHP :-)
But while they've garnered support/usage, do they have the same range of
use as the "Swiss Army Chainsaw"?
And how do they compare on software metrics that matter in production:
memory footprint, execution speed, robustness.
Is C++ a better, more useful C? Does it help with
Programming-in-the-large or Object Oriented programming?
I don't think so... Nor do Apple. OS/X, from the iPhone to Mac to
Servers, is written in Objective-C.
Nor do the bulk of FOSS projects: 'C' is still the lingua franca of the
Open Source world.
Perl (5) is like 'C'.
Many people think it 'could be better' and many have tried to create
replacements, but its use keeps expanding.
'C' is *really* hard to beat, it is (quoting PJ Plauger) "wallpaper -
you expect it everywhere" and has base of trained, competent/experienced
'C' is not only 'sufficient' for the range of procedural language tasks,
it is excellent on many levels.
Like all professional tools, it is 'sharp'. You can hurt yourself badly
with high-power tools... Or handled well, produce incredible works. It's
all about the workman, not the tools.
For me, the overwhelming reason to use P5 is CPAN. This is the
definitive example of Software ReUse - which should be a cornerstone of
Software Engineering (and training in it). Somehow people end up wanting
to Invent the Wheel again themselves... Which doesn't take the
profession forward in any way. I love the small irony that CPAN is
actually a reused idea itself - based on CTAN for TeX.
The very success of CPAN, far eclipsing its progenitor, and that Tcl,
Python, Ruby etc *don't* have an equivalent illustrates two things about
the Perl Community:
- they are collaborative and 'give back' as a matter of course, and
- they are Software professionals who's interest is producing products
for others, and just amusing themselves or in the thrall of N.I.H.
It's what you do that counts, not say... "Ideas are Cheap", as was the
mantra at Xerox PARC.
Whichever of the Anonymous Monk posted the criticism of "it can't be all
that hard to write a parser" obviously hasn't tried to write a full
language. It isn't nearly as simple as a 3-4th year compiler project.
And all those "University Experts" - if they were really good at new
languages and compilers, then P5 and 'C' would be a thing of the past.
Proof by Existence :-)
Experience counts in programming:
Computing is a *performance* discipline.
Like Architecture, Surgery, Music, Art and Flying...
You need "Heads and Hands" - both knowledge/theory and experience/practice.
Professional Programming is different again:
- it is always done by a team: collaboration & co-operation is fundamental
- it's not a hobby, but paid work, where feeding your Ego isn't the
- it's about programming "for the next guy", who may well be yourself
in 6 months time
- it's about Programming-in-the-Large
- it's about delivering "Good Enough", which sometimes is It-just-runs,
and sometimes absolutely robust.
- and finally, its about *delivery*. Getting Things Done, not ideation
Coulda, Shoulda, Woulda doesn't cut it in the Professional world.
- there's another thing to do with Professionals and Engineering:
- Is there ever any excuse for a Professional to repeat, or allow
repetition of a know Error, Fault or Failure?
- Engineering is about Safe, Reliable, Effective and Economical
solutions for others.
There's a very simple example to show the level of Professional Software
Engineering embodied in Perl:
Firstly, the source code, in 'C', is available if needed. and its
Version controlled, not lost like 40% of pre-Y2K source.
There's a well known, robust and simple process to get & install new
modules in an absolutely repeatable and predictable manner - with
over-rides when needed, not a constrained straight-jacket.
The stuff you're downloading has been testing on multiple platforms. It
comes quite trustworthy.
Everything that installs comes with its own set of *tests*.
And if it doesn't work for you, there are debuggers and more for your
programming pleasure :-)
Perl doesn't pay lip-service to good Software Engineering practices - it
just does them...
That's part of its success. It builds on strong professional
disciplines, and embeds them in its process.
The other part is that it leverages itself and work that's gone before.
It's more than CPAN and software re-use...
Finally, "Computing/I.T. is a Cognitive Amplifier".
It does for cognitive functions what machines do for muscles.
Alan Kay, inventor of Objects (in Smalltalk), is well know for saying
"Point of View is worth 80 IQ points".
Or, give ordinary people the right tools, and they can beat geniuses.
Perl has always performed this "cognitive amplifier" task.
That's worth more than Kay's 80 IQ points.
It turns a single Perl coder into a large team with best-in-the-world
solutions for many problems.
How would I have reacted to the Anonymous Monk?
- Show me what you've done that you think you have the knowledge, skill
and experience to criticise.
- If you have a point, do some work and commit some changes. Don't
waste my time and yours with hot air.
And what might Perl 6 achieve?
Coming from the 'pens' of highly competent & experienced folk, who've
already done this before, it's gotta be close to definitive solution to
the problem field it chooses to answer.
If P6 arrives with an IDE and good, integrated tool-chain, it should
scale to Programming-in-the-Large and 'real' programming projects. It
won't displace C or Objective-C, but will be a 'slam-dunk' solution to
general software practice.
But in typical Perl style, I expect the Revolution and Conquering the
World to be very low-key, even 'stealth mode'.
It'll probably pass with a whisper and people may ask, "isn't it obvious
to do this?".
Or not :-)
Many thanks for your years of hard work and contribution at a level I
could only wish for.
(From a former colleague of mine)