Remix.run Logo
autarch 8 hours ago

As a very long-time Perl developer and FOSS contributor, I think this blog post is incorrect about whether Perl 6/Raku was a factor in Perl's decline. I think Perl 6/Raku did a few things that hurt Perl 5:

1. It pulled away folks who would otherwise have spent time improving Perl 5 (either the core or via modules).

2. It discouraged significant changes to the Perl 5 language, since many people figured that it wasn't worth it with Perl 6 just around the corner.

3. It confused CTO/VP Eng types, some of whom thought that they shouldn't invest in Perl 5, since Perl 6 was coming soon. I've heard multiple people in the Perl community discuss hearing this directly from execs.

Of course, hindsight is 20/20 and all that.

Also, even if Perl 6 had never happened the way it did and instead we'd just had smaller evolutions of the language in major versions, I think usage would still have shrunk over time.

A lot of people just dislike Perl's weird syntax and behavior. Many of those people were in a position to teach undergrads, and they chose to use Python and Java.

And other languages have improved a lot or been created in the past 20+ years. Java has gotten way better, as has Python. JavaScript went from "terribly browser-only language" to "much less terrible run anywhere language" with a huge ecosystem. And Go came along and provided an aggressively mediocre but very usable strongly typed language with super-fast builds and easy deploys.

Edit: Also PHP was a huge factor in displacing Perl for the quick and dirty web app on hosted services. It was super easy to deploy and ran way faster than Perl without mod_perl. Using mod_perl generally wasn't possible on shared hosting, which was very common back in the days before everyone got their own VM.

All of those things would still have eaten some of Perl's lunch.

hylaride 8 hours ago | parent | next [-]

I think this is mostly the correct take. Perl's strength is that it was really good and quick and dirty one-offs, especially with text manipulation. This made it particularly popular with UNIX sysadmins and sometimes network admins. This was helped by the fact that CPAN made it easy to share a lot of these, which added to its popularity (it can't be overstated how revolutionary CPAN was).

The 1980s/1990s was full of many different data formats in a time before XML/JSON, often by long dead companies. Many a tech person was in a situation where "Oh fuck, how do I get this data out of some obscure database from some dead company from Boston that only ran on SCO UNIX into SAP/Oracle/etc" only to see somebody else already done it and made a CPAN module.

But stories like that became less common as DBs converged into a few players.

sleepybrett 3 hours ago | parent | next [-]

Yeah i'll say, even to this day, when I need a quick script and bash just isn't doing it for me I'll just write it in the same perl I used regularly as far back as 1998... but it never goes further than that. If I have to take that script and build it into anything that will ever leave my laptop it's going to get rewritten in something else (probably golang since it is universal on my team).

worik 4 hours ago | parent | prev [-]

> quick and dirty one-offs,

Then used for huge GUI apps that run slow like a wet week, unreliably

The same thing is happening with Python.

Taikonerd 8 hours ago | parent | prev | next [-]

I would also say -- in the late 90s, Perl's claim to fame was that it had CPAN. At the time, CPAN was revolutionary: a big, centralized repo of open-source libraries, which you could install with a single command.

Now, of course, that's a common and maybe even expected thing for a library to have: Python has Pypi, Javascript has NPM, etc.

roryirvine 5 hours ago | parent | next [-]

And the whole culture around CPAN, too, with the likes of Module::Build and Test::Harness and the strong expectations around POD documents. Nothing like that existed for the other scripting languages of the time.

There was a well-trodden path from writing a hacky one-off script to deal with a specific task, to realising "hey! this might be useful for others too!" and trying to make it a bit more generic, to checking in with your local Perl Mongers for advice, to turning it into a well-tested, well-documented CPAN module.

That was the route I followed as an early-career sysadmin in the dying days of the dotcom boom - it helped me take on much more of an "engineering" mindset, and was an important foundation for my later career.

I can't have written more than a few dozen lines of Perl in the last 15 years, but do I owe that community and culture a lot.

fithisux 3 hours ago | parent | prev [-]

Tcl/Tk is still behind,

runjake 8 hours ago | parent | prev | next [-]

I was a Perl programmer from the early 1990s until into the 2000s and I mostly agree with you. It was a variety of factors.

The point where I disagree is I think Perl 6/Raku played a significant role in Perl's decline. It really gave me the perception that they were rudderless and that Perl probably had no future.

Other than that, I absolutely loved Perl. I love the language. It's super expressive. I never took a liking to CPAN. And I wonder if it could make a comeback given better dependency management.

I think Perl with tooling similar to uv would cause me to switch back today.

autarch 8 hours ago | parent | next [-]

> The point where I disagree is I think Perl 6/Raku played a significant role in Perl's decline. It really gave me the perception that they were rudderless and that Perl probably had no future.

I assume you disagree with the blog post, not with my comment, since this is exactly what my comment says too!

cestith 3 hours ago | parent | prev [-]

Have you tried cpanm?

cogman10 5 hours ago | parent | prev | next [-]

> Also, even if Perl 6 had never happened the way it did and instead we'd just had smaller evolutions of the language in major versions, I think usage would still have shrunk over time.

Maybe. I mean the whole point of 6 was to modernize perl.

Perl needed efforts like 6 to happen, but it needed them delivered in smaller chunks over the years rather than as a big decade long "And now 6 is here".

Java learned this lesson after Java 8 and 9 which took multi-year effort to deliver 1 or 2 big changes to the language and the JVM. Now Java has multiple efforts in flight which have trickled in over the years (tickling me as a dev). Every 6 month release is a little better which makes the multi-year efforts seem all that much more worth it when they land.

brightball 5 hours ago | parent | prev | next [-]

All good points. There was a solid talk on modern web dev with Perl at the Carolina Code Conference last year.

Created some interest in several people who talked to me about experimenting with it for a while afterwards.

https://youtu.be/ommhbiRx-vI?si=qwkdU1Wo7uVBVse9

dspillett 5 hours ago | parent | prev | next [-]

> A lot of people just dislike Perl's weird syntax and behavior.

As much as I liked Perl back in the day, it did sometimes earn its reputation as a write-only language!

Tubelord 4 hours ago | parent | next [-]

My impression was experienced Perl programmers took pride in making the smallest code possible, all in one line.

At my company they really locked in the project being dead if the original contributors left.

Perl propped up regex (JavaScript regex is based off of it), so I get the impression Perl practitioners tried to make all the code regex-y as possible as a cultural thing.

sleepybrett 3 hours ago | parent [-]

There was a regular feature in the perl community for 'golf' or 'crazy one liners' but almost no one used that shit in any actual code that left their user directory.

danudey 5 hours ago | parent | prev [-]

Not to mention that trying to understand existing Perl by asking the community 'what does this do' or 'how does this work' often (in my experience) resulted in 'RTFM' or 'man perldoc' rather than someone taking any time to actually answer the question, whereas other communities were more welcoming and helpful to each other. That made it difficult to learn Perl through other people's code compared to other languages.

dspillett an hour ago | parent | next [-]

I think that depended on where you were looking and how you were asking.

My main source of support back when I did much Perl (late 90s, early 00s) was usenet, and while some groups were very snubby and elitist others were very helpful and encouraging for a young budding programmer.

wredcoll 3 hours ago | parent | prev [-]

I had the complete opposite experience. Perlmonks and irc were amazing resources for a budding developer.

sleepybrett 3 hours ago | parent [-]

agreed

Joker_vD 3 hours ago | parent | prev | next [-]

> And Go came along and provided an aggressively mediocre but very usable

See, that's one of the things lots of people who enjoy Perl and/or Ruby in the comments around in this thread don't quite grasp: some languages require programmers possessing a somewhat special state of mind to read and write productively, and some languages allow pretty much every mediocre programmer to read and write, and still produce a manageable program.

The other thing is the information density. In my experience, most people after graduating high school have experience with reading mainstream fiction and school textbooks, and those things you can half-skim/half-read and still get out most of the meaning. Then those people hit the college-/university-level textbooks and screech and crash because those books, you have to read them sentence by sentence; not everyone can get get used to it (or even realize they have to do that in the first place). And similar observations hold for programming languages: Perl and APL are just way too dense compared to Go and Python; if you're used to reading code line-by-line (skimming over half of them), then it's really bloody annoying to switch to reading sigil-by-sigil (as for writing, well, we all know that typing speed was never really a bottleneck for programmers).

huherto 2 hours ago | parent | prev | next [-]

True. Adding to these. Perl6/Raku suffered from the second system effect. Described in the Mythical Man Month. Larry and company were over confident with their previous success.

ajross 7 hours ago | parent | prev | next [-]

You mention it last, but I think PHP was most of it. PHP was the first and best-integrated technology for this world, which was huge and impactful. The "center of thought" in the text processing problem area moved hard to web development. And so the ideas about what needs to be improved or changed rapidly centered themselves around "Things PHP Did Badly". And that begat Ruby and Node, not a fixed-up Perl.

Perl remained (and remains!) eminently useful in its original domain of Unix system automation glue and ad-hoc text analysis. But it was denied a path to the future by PHP, and by the time PHP was itself replaced it was too late.

Finally everyone else (python in particular) sorta caught up to the "clever systems glue" feature set, and the world moved on entirely. Perl is mostly forgotten now except by those of us who lived it.

pantalaimon 2 hours ago | parent | next [-]

PHP was jokingly expanded to 'People hate Perl' back in the day

ramses0 4 hours ago | parent | prev [-]

Great point! Confluence of simultaneous factors.

PERL tripped over it's own feet (too clever, line-noise, unmaintainable).

Java(TM) being "guaranteed to be business-like" sucked the serious use cases away.

PHP was easier to grok, had "editable man pages" (ie: comment forum attached to each built-in), and didn't have "slow CGI overhead" or "FastCGI complexity".

Python was waaaay easier to read/write/maintain, and was a serious alternative (except for trickier process-control integration, you couldn't just "$XYZ = `ls -al`" like you could in perl).

...and then "PERL6 will be gloriously filled with rainbows, butterflies, will be backwards incompatible, and will be released Any Day Now(tm)" sucked alll the oxygen out of a developer investing in perl.

By the time nodejs became another contender for server-side languages, there was no place for PERL as it's effectively become kindof a COBOL for unix systems. Don't touch it if you can avoid it, and it requires expensive, difficult-to-find specialists to maintain it if you need to.

DonHopkins 2 hours ago | parent | prev [-]

>It confused CTO/VP Eng types

I wouldn't call making the right decision confused. It clarified and justified their desire not to use Perl. Only a confused CTO/VP Eng type would choose to use Perl in spite of all its entrenched disadvantages and much better more popular alternatives.

autarch 2 hours ago | parent [-]

I was just saying that they were confused about what was going on with Perl because if the Perl 6 effort. I don't think that they were confused or wrong in their decision making.