
Why is perl losing its touch? - gatsbysong
http://www.google.com/trends/explore#q=perl%2C%20python&cmpt=q&tz=
======
pspencer
This one page isn't a good indicator of a language's popularity. It probably
includes results referencing Monty Python, as indicated by the news article
headlines, or the animal python.

The TIOBE index might be a better indicator of programming popularity using
internet search results:

[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

but that's still not perfect. You could also look at the number of job
postings on sites like Indeed asking for Perl experience.

~~~
blowski
Looking at HTML, CSS, Ruby, Python, PHP, JavaScript, Perl... they're all
losing popularity.
[http://www.google.com/trends/explore#q=php%2C%20ruby%2C%20cs...](http://www.google.com/trends/explore#q=php%2C%20ruby%2C%20css%2C%20html%2C%20javascript&cmpt=q&tz=)

Looks like this internet thing was just a passing fad after all.

EDIT: Even more interestingly, there is an inverse relationship between
searches for PHP and pizza. What does this mean?
[http://www.google.com/trends/explore#q=php%2C%20pizza&cmpt=q...](http://www.google.com/trends/explore#q=php%2C%20pizza&cmpt=q&tz=)

~~~
VLM
Look at the queries... they're all noob oriented.

How to use a for loop, hash, or array?

I'm not saying that the supply of noobs drying up is a good thing, but...

------
kbenson
It's fairly obvious that the python programming language results are fairly
drowned out by the Monty Python and snake results, as illustrated by all the
news headlines shown for python, and by related topics and queries.

That's not to say that the trend shown is entirely incorrect, just that it
would be mostly coincidental to the data shown here.

~~~
AshleysBrain
Comparing 'perl language' and 'python language' shows a similar trend:
[http://www.google.com/trends/explore#q=perl%20language%2C%20...](http://www.google.com/trends/explore#q=perl%20language%2C%20python%20language&cmpt=q&tz=)

~~~
kbenson
Which falls prey to the fact that people don't need to disambiguate "perl"
when searching, but often do for "python". Changing it to "perl" and "python
language" isn't very useful either, as it so severely limits the python query
as to be unusable.

To be clear, I don't doubt there is a drop in Perl mindshare and usage, I just
don't think the original comparison, or the alternative one you posted, really
shows a relation between Perl and Python in any meaningful way.

~~~
henriksen
How about "programming perl/python". a graph very similar to OP's
[http://www.google.com/trends/explore#q=programming%20perl%2C...](http://www.google.com/trends/explore#q=programming%20perl%2C%20programming%20python&cmpt=q&tz=)

~~~
Mithaldu
That's identical to "<> programming", which gets a boost because python gets
disambiguated.

------
kokey
It's because perl guys doesn't need to google for answers after 10 years.

------
enknamel
I'm not sure you are comparing apples to apples here. I would instead consider
a graph like this one:
[http://www.google.com/trends/explore#q=%2Fm%2F05zrn%2C%20%2F...](http://www.google.com/trends/explore#q=%2Fm%2F05zrn%2C%20%2Fm%2F07sbkfb%2C%20%2Fm%2F09gbxjr&cmpt=q&tz=)

Though I am not sure how Google categorizes search terms intro specific things
like a programming language versus a python snake, etc. I wasn't offered a
Python language selector so I changed it to Java and added Go for fun.

~~~
ExpiredLink
I'm sure you are comparing apples to oranges here. Perl mainly is an
alternative to shell script. A language for administrators.

~~~
enknamel
That's probably it's number 1 use case. However, I've seen it used to build
million+ user game servers, GUIs, etc. It's general purpose.

------
adregan
I compared perl and JavaScript:

[http://www.google.com/trends/explore#q=Perl%2C%20JavaScript&...](http://www.google.com/trends/explore#q=Perl%2C%20JavaScript&cmpt=q&tz=)

And they both have a similar decline.

~~~
arh68
JavaScript is so yesterday, _Ada_ is clearly the language of the future. :P

[http://www.google.com/trends/explore#q=ada%2C%20JavaScript&c...](http://www.google.com/trends/explore#q=ada%2C%20JavaScript&cmpt=q&tz=)

~~~
placeybordeaux
JavaScript is so yesterday, jquery is clearly the language of the future.

[http://www.google.com/trends/explore#q=JavaScript%2C%20jquer...](http://www.google.com/trends/explore#q=JavaScript%2C%20jquery&cmpt=q&tz=)

------
geekwerks
Death by a thousand cuts...PHP cut it off at the knees because it was trivialy
easy to do web apps on a shared host; Perl hosting was far harder. Ruby came
on the scene, and stepped in as a spiritual successor to Perl. Perl 6's
infinite development cycle sapped the life out of the community. All of which
led to fewer modules being added to, or updated on, CPAN. Fewer fresh modules
drove more use to other languages that did have the fresh modules

I.e. a really nasty downward spiral that leaves perl occupying the same space
as COBOL and FORTAN - a language used in massive legacy systems, but rarely
used in new systems unless implemented by ancient wizards.

One the upside, pretty soon Perl wizards will be able to charge the same rates
as COBOL & FORTRAN wizards...

~~~
raiph
> All of which led to fewer modules being added to, or updated on, CPAN.

That's a compelling story. Lots of folk believe it, including, it seems, you.
But have you checked your sources and data? For those interested in data and
irony, watch about 2 minutes of either or both of these from last summer:

The slashdot story ("Always check your sources"):
[https://www.youtube.com/watch?v=hHy5h6ZRL6M#t=4m](https://www.youtube.com/watch?v=hHy5h6ZRL6M#t=4m)

CPAN data:
[https://www.youtube.com/watch?v=hHy5h6ZRL6M#t=7m](https://www.youtube.com/watch?v=hHy5h6ZRL6M#t=7m)

> Perl 6's infinite development cycle sapped the life out of the community.

Again, lots of folk believe this story. For another dollop of irony the
leading current P6 attacker was once the leading P6 booster around 2010. When
he was pro P6 he didn't accept suggestions that it was slower than dog slow.
(It was.) Now he's anti P6 he doesn't appear to be accepting that it's been
speeding up every month and is due for official launch within a year. (It is.)

P6 is now flying under the radar but stories like this are around if you look
for them, like this from a day or two ago here on HN:
[https://news.ycombinator.com/item?id=9089259](https://news.ycombinator.com/item?id=9089259)

~~~
kbenson
I would caution against bringing chromatic up in any context including Perl 6.
That particular period of history is complex enough with enough blame to go
around that I doubt any gain you hope to get by bringing it up will work as
you expect. Best to respect his wishes and leave him out.

------
tomjen3
Because everything perl can do python can do better? Okay that is a though
claim but perl and python fit about the same area - a dynamically typed
scripting language that can take over when that shell script gets too big and
all the way up to a full-blown app or website, but you are not going to win
any prizes for speed - but python doesn't have all the weird crap that goes
along with perl (what exactly does $#% mean again?) and it has everything
else.

Perl was a great language in its day but I just don't see a case where are new
programmer is better of starting a new project in perl rather than python.

~~~
cms07
Why wouldn't you want sigils?

------
penglish1
[https://xkcd.com/353/](https://xkcd.com/353/)

------
vampirechicken
I'm always at a loss as to why people take such delight in the real or
perceived decline of Perl.

Perl and Python are similar, excellent programming languages, and I don't
imagine Larry and Guido argue like children about it when they meet at
conferences.

I'll just quote Bjarne Stroustrop: There are two kinds of programming
languages. The one's people complain about, and the one's people do not use.

------
michaelpinto
Perl was a victim of its own success.

Perl is one of the few languages associated with the web that was really pre-
web. It's because of Perl's inspiration that we have PHP and Python. So while
the language evolved, it was never web centric at heart.

Another great thing about Perl was in the early days of the web it appealed to
both real coders and script kiddies. But as time went on the script kiddies
tended to move on to languages like PHP, so only the pros are really left.

The last issue with Perl was that it was never a favorite of computer science
programs, so it was always a bit of a hackers language at heart. So there is a
wonderful community around Perl, but it makes it very hard if you run a shop
to find kids out of school who know the language vs. Java back in the day (and
other languages today).

But I know a few coders who still really love Perl in hearts, so while the
popularity hasn't grown I would say the language does have a very hard core
dedicated following.

~~~
bane
> The last issue with Perl was that it was never a favorite of computer
> science programs

It's funny, it found a home for a long time in various linguistic programs.

------
Mithaldu
There's a clear contender:
[http://www.google.com/trends/explore#q=perl%2C%20python%2C%2...](http://www.google.com/trends/explore#q=perl%2C%20python%2C%20porn&cmpt=q&tz=)

I also strongly recommend looking at the headlines marked on the graph.

------
pekk
The question assumes that the relevant forces weren't in motion much earlier
(they were, it just takes time for the basic changes to show up clearly in
things like this search)

------
draegtun
Relevant: _Trend analysis at the shallow end of the pool_ \-
[https://news.ycombinator.com/item?id=9099675](https://news.ycombinator.com/item?id=9099675)

------
philippnagel
Any idea on the high interest in Luxembourg?

Due to the financial industry?

~~~
TylerE
The population of the country is only like 500k. With such a small dataset one
guy can probably move the needle.

------
gonewest
More interesting question is why the JavaScript curve is decaying at the same
rate as Perl (add it to the graph and see).

------
threatofrain
I think a better indicator would be "Perl tutorial", since that might tell you
how many new people are joining.

~~~
pekk
It turns out not to be all that much different, the ratio is about the same
[http://www.google.com/trends/explore#q=perl%20tutorial%2C%20...](http://www.google.com/trends/explore#q=perl%20tutorial%2C%20python%20tutorial&cmpt=q&tz=)

------
maxharris
I think it's better to flip the question around:

I make my living writing single-page web apps in JavaScript. These days,
everything I do, even on the server, is in JavaScript.

What does Perl do a hundred times better than the latest in the JavaScript
universe (ES6, Meteor, node.js, etc.)? If it doesn't, that right there is your
answer.

~~~
kiyoto
You clearly work in the web industry =)

perl does one thing hundred times better than (server-side) JavaScript: when
you need to get data out of a server that you have no sudo privilege because
your boss asked you to get stats on your trades ASAP.

This happens shockingly frequently in finance, and perl (and actually, awk)
was the only scripting language that I could safely assume was installed.

~~~
erikb
Being sure that this one tool is available all the time is actually a key
argument I have to say. One of the reasons I started to learn vim.

------
gatsbysong
i totally understand that such key words are polluted with searches like Monty
Python, but the trend does seem to change much even if we apply more
restricted key words, as already pointed out by many other replies before. in
the end it's really just a matter of habit using what programming language to
do what, it's still, however, interesting to see how popularity of one
language come and go.

------
kuni-toko-tachi
Perl always will be my favorite language. Its absolutely a joy to write.
What's interesting to me is that all the things that people like about
JavaScript, Perl had first, and I think better (closures, first class
functions).

The criticisms that people had about Perl, such as that it langrage like line
noise was unfortunate. Being able to tell whether something was a scalar,
array, or hash by the character that preceded it was helpful.

Being able to slap a set of braces around code to create a closure was also
much better than needing to do the same in a function like JavaScript.

Perl formed some much new ground. CPAN was the predecessor of npm, etc.

I'm just glad to be able to write functional code again through JavaScript,
just like when I wrote Perl. I don't miss writing Java (or any static typed
object oriented language) at all, and hope I never will again. I just hope
that ES6 doesn't turn JavaScript engineers into object oriented programmers.

~~~
jafaku
Which popular language nowadays doesn't have closures? Even the so hated (by
HN) PHP has had that for many years already.

~~~
tomjen3
Python is often claimed not to have closures but that isn't really true, what
it doesn't have is anonymous functions. It does have a lambda statement, but
that is limited to a single statement.

So what you end up writing is more akin to:

    
    
        def multiplier_maker(a):
          def temp(b):
            return b * a
          return temp
    

That is because Python allows you to declare a function anyware, even inside
other functions.

~~~
sebleblanc
And if you want to emulate static variables in a function, you can do that:

    
    
        def counter():
            counter.x += 1
            return counter.x
    
        counter.x = 0
        counter()
        > 1
        counter()
        > 2
    

Beware! singleton variables, mutable state, etc.

~~~
knome
You can do it by closing over a variable as well. Python closes over things
just fine, it just has problems rebinding variables in outer scopes that
aren't the global one. Here, I just make the variable a container, so I can
alter a value inside it, instead of rebinding it ( only python2 has this
problem, python3 has a "nonlocal" keyword to work around this in the language
)

    
    
        >>> def counter():
        ...   x = [ 1 ]
        ...   def count():
        ...     y = x[ 0 ]
        ...     x[ 0 ] += 1
        ...     return y
        ...   return count
        ... 
        >>> count = counter()
        >>> count()
        1
        >>> count()
        2
        >>> count()
        3
        >>> count()
        4
        >>> 
        >>> otherCount = counter()
        >>> otherCount()
        1
        >>> otherCount()
        2
        >>> count()
        5
        >>> count()
        6
        >>> otherCount()
        3
        >>>

