Live data from Hacker News

Dwindling CPAN Releases

perlancar.wordpress.com

71–80 of 180 posts

Re: Dwindling CPAN Releases

#71
post #58

Earlier quoted context omitted.

Now I feel old, I started with Perl 4 around 1992-1993. There wasn't even a CGI query args parser library yet, you had to roll your own.

What kind of web server would even be calling Perl CGI scripts in 1992? I thought it was all bulletin boards back then. Personally I just got my first PC and was learning to play Commander Keen in 1992 ;-)

I started with perl in 1992, ncsa httpd came out in 1993, which was the first release of CGI.

I ported EBBS/BBS to A/UX and ran one for a few years.

https://en.wikipedia.org/wiki/NCSA_HTTPd

https://github.com/virtadpt/eBBS (my name is in the credits)

Re: Dwindling CPAN Releases

#72
I'm an author on CPAN who pushes one or two releases a month[1]. I'm actually surprised the number of uploads is still as high as it is, and a few thoughts struck me about the graph:

1) Most long time libraries have pretty much reached stability and the (still relatively high) backwards compatibility promise of perl5 means they don't have to be updated to support changes in the language, which still has releases every year.

2) The quality of uploads to CPAN is of the form of solving more complex problems or interfacing with core Unix/network/internet/lower level lib stuff stuff - you don't see so much of the leftpad type modules on CPAN.

3) It definitely feels like the number of authors has shrunk significantly, even though the graph suggests that has stayed relatively level. I suspect there's a long tail of active authors and most signups never actually upload anything

4) The biggest problem now is finding modules for newer APIs - I wrote some, including for more well known services such as GoCardless and Monzo

5) Holy crap, the graph covers almost 24 years of uploads. You will probably see the same pattern in Python, JS, Go, and so on if you come back in an equivalent number of years - the most common problems get solved first, and libraries uploaded for those.

6) The graph covers uploads to CPAN, I'd guess a far more important one would be downloads from CPAN as that will probably give you more information about the relative level of use of the language.

[1] https://metacpan.org/author/LEEJO

Re: Dwindling CPAN Releases

#73

Earlier quoted context omitted.

From a experienced linux sysadmin point of view perl5 is as good as it gets. I've been searching for alternatives for about 10 years now, at first because my novice self was heaving headaches reading other people code and even my own. I hated perl but I hated everything else even more as I came to know them. No autovivification? Some assignments copy the data and some create references and you need to memorize the co…

Pretty sure if perl5 had only had multi-dimensional arrays it would still rule the world.

Didn't perl always have multi-dimensional arrays?

Just the syntax sugar for them is more recent.

Re: Dwindling CPAN Releases

#74
post #8

Long ago I used to joke that perl is write-only... was that harsh or realistic? (I still believe it - too clever constructions which feel smart at the time you come up with them :)

"too clever constructions which feel smart at the time you come up with them" That's the coder, not the language. Which is more obvious what's happening. print ''.join('%(pre)s%(num)s %(bot)s on the wall, %(nul)s %(bot)s,\n%(tak)s\n' % (lambda c,b: {'pre':['','%s %s on the wall.\n\n' % (c,b)][abs(cmp(c,'Ninety-nine'))], 'num':c, 'nul':c.lower(), 'bot':b, 'tak':['Go to the store and buy some more... Ninety-nine %s.' %…

This post reminded me that Perl doesn’t even have a concept of a method signature, even so much as showing the number of arguments. You have to look at the next few lines to hopefully see all the `... = shift;` lines to see what you’re actually supposed to send.

I mean, a lack of type annotations is normal for a scripting language, but Perl always seemed to go a bit far by not even having a standard way of showing parameter names.

I remember doing `my ($arg1, $arg2) = @_;` or something similar, but even that felt weird, and not everyone adopted that convention.

Re: Dwindling CPAN Releases

#75
post #9

Consider this: Perl codebase is reaching perfection and no longer needs releases. After this, we get eternal Perl ;)

This is exactly the same reason that they stopped updating Microsoft DOS -- they achieved perfection. That or it become obsolete. I guess it depends on to what degree one is nostalgic and to what degree one needs to keep their skills up to date.

Re: Dwindling CPAN Releases

#76
post #8

Long ago I used to joke that perl is write-only... was that harsh or realistic? (I still believe it - too clever constructions which feel smart at the time you come up with them :)

"too clever constructions which feel smart at the time you come up with them" That's the coder, not the language. Which is more obvious what's happening. print ''.join('%(pre)s%(num)s %(bot)s on the wall, %(nul)s %(bot)s,\n%(tak)s\n' % (lambda c,b: {'pre':['','%s %s on the wall.\n\n' % (c,b)][abs(cmp(c,'Ninety-nine'))], 'num':c, 'nul':c.lower(), 'bot':b, 'tak':['Go to the store and buy some more... Ninety-nine %s.' %…

This is not a fair comparison.

You golfed the Python to fit on one line with one-letter variable names, while you took a very literal approach with the Perl code.

Re: Dwindling CPAN Releases

#77
Perl is good for a competent coder who doesn't work as a developer, occasionally has a one-off coding task, and wants to incorporate a code excerpt from the web and immediately execute it (and then throw the code away). Languages with whitespace as syntax often fail the "immediately execute" requirement.

Re: Dwindling CPAN Releases

#78
post #64
post #55

Earlier quoted context omitted.

Perl is a general purpose programming language. The Perl interpreter and language are stable, it's not going anywhere soon. Perl and its syntax have been around a lot longer than most other languages and is very similar to C, C++, JavaScript and PHP. What do you consider normal syntax?

The most obnoxious parameter passing in existence? The magic variables everywhere? Perl code is an unreadable heap of spaghetti, I’d much rather be figuring out unallocated memory bugs in C then read Perl.

Don't forget sigils. Because the difference between @foo and $foo is obvious, right?

Re: Dwindling CPAN Releases

#79
post #76

Earlier quoted context omitted.

"too clever constructions which feel smart at the time you come up with them" That's the coder, not the language. Which is more obvious what's happening. print ''.join('%(pre)s%(num)s %(bot)s on the wall, %(nul)s %(bot)s,\n%(tak)s\n' % (lambda c,b: {'pre':['','%s %s on the wall.\n\n' % (c,b)][abs(cmp(c,'Ninety-nine'))], 'num':c, 'nul':c.lower(), 'bot':b, 'tak':['Go to the store and buy some more... Ninety-nine %s.' %…

This is not a fair comparison. You golfed the Python to fit on one line with one-letter variable names, while you took a very literal approach with the Perl code.

That was the point they were making, that you can write horribly ugly code in Python if you really put a lot of effort into it, and that you can kinda sorta write readable Perl if you put a lot of effort into it.

Re: Dwindling CPAN Releases

#80

Earlier quoted context omitted.

"too clever constructions which feel smart at the time you come up with them" That's the coder, not the language. Which is more obvious what's happening. print ''.join('%(pre)s%(num)s %(bot)s on the wall, %(nul)s %(bot)s,\n%(tak)s\n' % (lambda c,b: {'pre':['','%s %s on the wall.\n\n' % (c,b)][abs(cmp(c,'Ninety-nine'))], 'num':c, 'nul':c.lower(), 'bot':b, 'tak':['Go to the store and buy some more... Ninety-nine %s.' %…

This post reminded me that Perl doesn’t even have a concept of a method signature, even so much as showing the number of arguments. You have to look at the next few lines to hopefully see all the `... = shift;` lines to see what you’re actually supposed to send. I mean, a lack of type annotations is normal for a scripting language, but Perl always seemed to go a bit far by not even having a standard way of showing pa…

I usually do

  sub mymethod($$)
    my ($arg1, $arg2) = @_;
  }
Apart from on the smallest programs. So it does have a method signature (obv it's an untyped language)

There are shortcuts (just like you could write "doSometing() unless $var;"). Perl does give you options.

Python has different options for passing methods - passing variables, passing a dict,

P.S. while looking at python method declartions, you can send variables, a key-value, multiple keyvalue, and then there's this: https://stackoverflow.com/a/16785702

Which comes out with

  f = lambda **dic: ' '.join(dic.get(key, 'None') for key in 'abc')

Which is no more or less readable than the most confusing perl I've ever encountered.

"Cool Shortcuts" are a problem in any language. There are values in anonymous functions on occasion (especially in sorts), there should be a very compelling reason to do so.

Post reply on HN