in reply to Would you stay with Perl if there were no CPAN?

Perl's module ecosystem is probably the only reason Perl 5 still has any success, and the lack of the ability to run any of it is the main thing holding back Perl 6.

Perl 5 as a language has some nice features: It allows most high-level LISP-ish constructs (except macros, though they can often be faked with stringy eval, Devel::Declare, etc) but with a less insane syntax; its object system is bare-bones (but enough to allow powerful OO systems like Moose to be built on top).

But Perl 5 has some ugly warts too - ambiguous syntax requiring perl to fall back to heuristics in some cases (such as deciding when "{" begins a block, and when it begins an anonymous hash); two-argument open; the fact that built-in exceptions are thrown as strings rather than objects (requiring string parsing if you want to catch and handle them); awful, awful support for shared data in multi-threaded code; etc.

There are some other languages that have many or all of Perl 5's good points, but fewer or none of its drawbacks. Perl 6 and, to a lesser extent, Ruby and Scala are examples.

But they don't have CPAN.

And so Perl 5 wins.

 

As to the current structure of CPAN, I don't really think the internal organisation of the archive is of much importance to most end-users. What's important is that people can type a single, simple command to install a distribution and all its dependencies; what's important is that the right module for a particular task is easily findable; what's important is the QA infrastructure around it (RT, CPAN testers, CPAN ratings, etc).

If you can deliver that, then the actual mechanics of how it's hosted (centralised versus distributed, etc) is irrelevant to most people. If it were hosted on SD cards delivered by carrier pigeon, that would be just fine by me, provided they delivered quickly.

Some people (I think) if they were designing CPAN today... you'd sign in via a Facebook/Twitter login; you'd have to upload via an Javascript-driven form; you'd be listed on the front page if your upload got enough "likes"...

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
  • Comment on Re: Would you stay with Perl if there were no CPAN?

Replies are listed 'Best First'.
Re^2: Would you stay with Perl if there were no CPAN?
by tobyink (Canon) on Apr 19, 2013 at 23:03 UTC

    ... or to put it another way, Esperanto may be a saner language than English, but it ain't got no Shakespeare.

    package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
Re^2: Would you stay with Perl if there were no CPAN?
by LanX (Saint) on Apr 20, 2013 at 13:16 UTC
    you forgot to mention the lack of function signatures, forcing people to use workarounds like my ($a,$b) = @_ and the need of manual parameter check.

    > the fact that built-in exceptions are thrown as strings rather than objects (requiring string parsing if you want to catch and handle them)

    And I wonder why this was never expanded to return blessed strings providing all meta informations...

    IMHO many "problems" of Perl5 could be easily fixed if changing the code was easier.

    Cheers Rolf

    ( addicted to the Perl Programming Language)