
Interview with Larry Wall - janvdberg
https://developers.slashdot.org/story/16/07/14/1349207/the-slashdot-interview-with-larry-wall
======
yeowMeng
My experience with Perl:

We (a corporate shop) have a lot 'legacy' scripts in Perl.

I am assigned to maintain such scripts as no one else wants that role.

I discover, Perl is powerful.

Every 'legacy' script I find can be trivially regression tested (These scripts
always have the same pattern, take some input, produce some output).

Managers want to move away from Perl.

I want to move closer to Perl.

~~~
protomyth
The sad thing is about 90% of normal back-end computing at enterprises is take
data source A,B,C,etc and generate data file Z. Cobol lives because it could
do that well. Perl did that amazingly well[1]. Its really trivial to write
easy to maintain code that does that in a very standard (across programs) way.

1) Data Munging with Perl was a pretty good book for it

~~~
digi_owl
Work is receive input, mangle input, send output once you generalize it
enough. but the devil will definitely be in the details.

~~~
protomyth
Oh yeah, the details are the problem. Worse, its a technical problem and a
people issue for some kinds of output. Report Writing has all of the problems
of graphic design and date munging with none of the rewards. Lord help you if
the friggin DBA & Application Developers built the database or other data
sources for transactional processing and didn't provide any help (e.g. summary
tables, other data source) for batch (set) processing.

I now follow a simple law when setting up a data source: If I need attribute X
from an item then I better have a way to find all items with attribute X in a
hurry.

------
616c
It is hard not to like him. But as a recovering linguist (not the programming
kind), I find him strangely approachable.

I wish I had his code and programming abilities. He seems like such an
interesting guy. Every once in a while Perl6 comes up. I read about it, and
like Perl 5 but more so (at least Perl 5 I have used from time to time), but
it seems like such an impressively rigorous build-up of work by hardcore
veterans. Most of his jokes come off as sarcastically arrogant, and I enjoy
how he pokes fun at his work and himself. I only kind of worry about the Perl
Jam security talks his "doctor it hurts when I laugh" retort, because
malicious doctors force you to laugh all damn day and steal PII and run up
your bills online with malicious transactions. I do not want to dismiss
TIMTOWTDI, but if you have a limited set of bad ways to do it, you cannot
expect people to ignore it. This shows a weird kind of idealism to me in the
one area we know idealists do not lurk.

Jokes aside, I will always see him in a special light. If only I could honor
him better by churning out some Perl!

------
chubot
"Perl has always considered itself primarily a programmer-centric language,
while Python has always considered itself to be more institution-centric. So
in a sense it's a bit dumbed down, much like Java. You'll note both of those
languages make their greatest appeal to managers. :-) "

Huh? I was using Python when Perl was more popular, and this seems completely
fabricated. He's trying to lump Python in with Java, which is bizarre because
those 2 camps have pretty big philosophical differences.

I think that the main reason that Python became more popular because it has
both clearer syntax and clearer semantics than Perl. It is compact AND
readable -- not just compact. The data structures in Python also behave more
like those you would see in a CS textbook.

I'm working on my own language, and I just read over the Camel Book ("Learning
Perl"). Honestly I don't see much in there that I want to borrow, except maybe
for ~= automatically introducing variables. What else is good about Perl,
which is

    
    
        1) not in Python/Ruby/JavaScript (like hash tables)
        2) overly terse/clever?
    

(Honest question)

Perl's regex syntax seems to be it's biggest influence and legacy, with
Python/Ruby/Java/PCRE all adopting its syntax.

And -e in Perl is also useful -- Python/Ruby/etc. aren't really good for one
liners like Perl. This provides a nice gateway into the language.

But a lot of other features were rightly ignored by other languages IMO.

Also, with regard to the previous sentence, I actually consider Python OO kind
of weak, but it's definitely better than Perl's AFAICT.

~~~
PeCaN
> What else is good about Perl, which is 1) not in Python/Ruby/JavaScript or
> 2) overly terse/clever? (Honest question)

Scalar/list/hash context. It makes zero sense and the syntax seems to change
randomly… until you understand it. Then contexts make a great deal of sense.

Also, having dealt with a good deal of Python, I'm inclined to lump it in with
Java too—less verbose and dynamically typed, but still focused on code that's
superficially easy to read or understand. There's a big difference between
being able to read a function or class definition (whatever the hell it means
to ‘read’ code; I don't even know anymore) and understand where that falls in
the big scheme of things. Python and Java read from the bottom-up; individual
methods make sense but then you have to piece everything together. Perl, APL,
and Lisp-family read from the top-down. You start with some abstractions and
idioms and work your way down to individual functions, which may be hard to
grok but what matters is _what_ they do, not _how_. Perl makes writing those
really, really fast, and allows building abstractions easily.

~~~
chubot
OK thanks for the answer. I agree that this context sensitivity is probably
the most Perl-ish part of Perl. I just read over the Camel book section on
this, and it says:

"This is the most important section in this chapter. In fact it's the most
important section in the entire book."

"Not only that, but you can't make any general rules to apply what you know
about some expressions to others. Each expression can make up its own rules.
... Perl is very much a language that tries to do the most common, mostly
right thing for you."

"In fact, a big part of learning Perl is actually learning how Larry thinks.
Therefore, once you can think like Larry does, you know what Perl should do".

Those quotes don't inspire confidence in me -- it sounds like a battalion of
mostly correct special cases... mostly correct meaning "sometimes wrong".
However, I do appreciate that the linguistic part of your brain is very large
and powerful, and once you internalize all these rules they can lead to a
beautiful expressivity. Larry is making use of a different part of your brain
than other languages do.

But I have to work with 5 languages regularly, and I see this polyglot trend
only increasing in the future. So I appreciate when languages are a little
more predictable, and a few months away from them won't diminish my fluency.

~~~
lloeki
> _In fact, a big part of learning Perl is actually learning how Larry thinks.
> Therefore, once you can think like Larry does, you know what Perl should
> do._

Haha, this reminds me of Ruby's Matz:

> _The principle of least surprise means principle of least my surprise._

~~~
wwweston
The key insight here is that without unusual levels of care, the principle of
least surprise _always_ is about what would surprise the author least, and
this can be subjective.

------
AnimalMuppet
Some gems:

> It turns out if you accept the 90% of each paradigm that is practical, and
> reject the 10% that puritanically rejects other paradigms, you can get a
> pretty decent general-purpose language out of it

> But there's a long history of people confusing "general-purpose" with
> "Turing-complete".

Yeah. Things that are formally equivalent are _not_ (usually) equally easy.

------
greyman
I wish the language the best, but I find it a bit confusing to call it Perl 6.
It is basically a new language, something different than Perl (5).

~~~
PeCaN
That's basically everyone's sentiment in the Perl community right now. Perl6
is a nice language (I mean, I'm not a huge fan, but it's not bad either) but
it's a language that has some Perl influences but is definitely not Perl. It's
like if Ruby was called Smalltalk 2.

~~~
Diederich
> everyone's sentiment in the Perl community right now

Definitely not 'everyone'. And I strongly suspect it's not even 'most'.

There has been a relatively small but very vocal group with this point of
view.

~~~
Mithaldu
It is not just a sentiment, but a fact that Perl 6 being called Perl 6 has
hurt Perl 5. The only reason you don't have a lot of people telling Larry to
stop being stubborn about this issue is that the milk is already spilled.

~~~
Diederich
I wonder if you can share the data behind this fact? I'm always looking to add
missing datapoints to my brain. Much appreciated!

~~~
Mithaldu
The data is obvious online, in that many many people have to be explained that
they're different languages, with a good part of those also stating that they
gave up on Perl 5 since "Perl 6 is coming"; as well as in direct talks with
companies as early as 5+ years ago already when many german companies told me
they're delaying further investments in Perl 5, since "Perl 6 is coming".

~~~
Diederich
Thank you. I don't doubt that Perl6 has had some negative impact on Perl5.

However, I and many others believe that Perl6's positive influences on the
Perl5 community far outweigh the downsides. For starters, the whole Moose::
ecosystem
([https://metacpan.org/pod/distribution/Moose/lib/Moose/Manual...](https://metacpan.org/pod/distribution/Moose/lib/Moose/Manual.pod))
would arguably not have existed were it not for Perl6. And there are quite a
few other examples.

Perl5 is a vibrant, active language:
[https://metacpan.org/recent](https://metacpan.org/recent)

I understand your perspective though.

~~~
Mithaldu
Perl 6 has done many good things to Perl 5, yes.

However the name being what it is has hurt Perl 5, and that was the topic
being discussed here.

~~~
Diederich
Understood, thank you.

------
forinti
>Why isn't PERL more windows friendly?

Really? I've had tons of fun with Perl+OLE automating the processing of Excel
and Word files.

~~~
niftich
Same; I've always had more problems with Python on Windows, rather than Perl.

With Perl 5, both ActiveState's and Strawberry Perl just worked, whereas
Python can't even print to the console [1] without workarounds or an extra
library that's not installed by default.

[1] [http://stackoverflow.com/questions/5419/python-unicode-
and-t...](http://stackoverflow.com/questions/5419/python-unicode-and-the-
windows-console)

~~~
jandrese
I've grown somewhat disillusioned by ActiveState, but StrawBerry Perl has been
quite good to me.

------
zenlot
"Which large companies are still using Perl in production? I can name
Booking.com, but do you know any others?" \- it's worth mentioning DuckDuckGo
of course, which is quite young and chosen Perl as a way to go.

~~~
rsync
Oh By[1], the universal shortener, runs solely on perl CGI.

We wouldn't have done it any other way.

[1] 0x.co

~~~
dingo_bat
That URL isn't even being converted into a link by my browser, it's so short
;)

------
sevensor
> Software interprets lawyers as damage and routes around them.

I feel like it's 1999 again, finding a quotable Larry Wall statement on
Slashdot.

------
stinkytaco
Slightly off topic, but I've been thrust into working with some perl code and
am looking for a good learning option. I like Code Academy's interface and
there are also a few good Markdown tutorials out there[1][2].

Does anyone know of a similar experience for Perl?

[1]: [http://www.markdown-tutorial.com/#/](http://www.markdown-
tutorial.com/#/)

[2]: [http://agea.github.io/tutorial.md/](http://agea.github.io/tutorial.md/)

~~~
Mithaldu
The best learning option is to head to [http://perl-tutorial.org](http://perl-
tutorial.org) and check out what the most recent things are. Reason for that
is that due to Perl's sheer age and rate of evolution, many of the older
learning resources are outright damaging to newbies.

------
xaduha
With all due respect to Larry Wall he shouldn't be a source of info or
inspiration when it comes to Perl6.

Watch this instead, it's pretty damn great

[https://www.youtube.com/watch?v=Nq2HkAYbG5o&feature=youtu.be...](https://www.youtube.com/watch?v=Nq2HkAYbG5o&feature=youtu.be&t=274)

------
mywittyname
> LW: PHP is both the motivational poster child for worse-is-better, as well
> as the demotivational poster child for worse-is-worse. Somehow PHP has
> managed to convince a horde of programmers that if their programs are flakey
> or hard to maintain, it must somehow be the programmer's fault. It couldn't
> possibly be because they've been frog-boiled.

I've never heard the term 'frog-boiled' before, but it's the most succinct
description of PHP I've ever heard.

------
merpnderp
At my current job we've started using Node.js for a lot of windows based
migration jobs and shell scripts, historically where we would have used Perl.
We're mostly C#, but data munging and migration is just a lot easier and
faster in Node.js or Perl.

I'm curious on what we're missing out on by using node instead of perl?

~~~
SwellJoe
Node is getting pretty good. I'm a Perl developer of many, many years, and it
is still my go to for command line scripts (and also web, but only because I
really like Mojolicious and it happens to fit into existing systems). But,
building command line tools in Node is no longer a crazy idea. It's still
gonna be more verbose, by a lot, than Perl, for many classes of problem (data
munging, file operations, almost anything that needs to interact with the OS),
but the language has gotten nice with ES6. The libraries are pretty good.

It's really hard to beat the built-in "while <>" semantics of Perl for writing
concise, clear, programs that take something in from a file or STDIN and spit
it back out. Perl is effectively a DSL for writing command line scripts that
live in a UNIX environment (they work OK on Windows these days, too, now that
Windows has a reasonable shell with reasonable semantics for scripts like
that).

If you want to write many small commands that are composable, Perl is a
perfect fit. If you want to write one big application that does a bunch of
things, the benefits of Perl look smaller and may even be outweighed by the
bigger ecosystem of JavaScript/Node/npm; you can amortize out stuff like
options handling and file/stdin handling across all of the functionality and
it won't look like such a big part of your program anymore, compared to Perl
(which gives you most of those things practically for free with one or two
lines of code).

------
a3n

      > my @values = [1 .. 20];
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
      > say @values[0,2,4 ... *];
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    

Wall says this should print all the evens, but it prints all (this is in the
perl6 repl).

~~~
JadeNB
Which version are you using? I happen to have 2016.04 installed:

    
    
        $ perl6 -v
        This is Rakudo version 2016.04 built on MoarVM version 2016.04
        implementing Perl 6.c.
    

and I see:

    
    
        > my @values = [ 1 .. 20 ];
        [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
        > say @values[0, 2, 4 ... *];
        (1 3 5 7 9 11 13 15 17 19)
    

(Of course it's the odd numbers, not the even numbers, but it just happens
that the odd-valued entries are in the even-indexed positions in this list.)

~~~
a3n

      perl6 --version
      This is perl6 version 2013.12 built on parrot 5.9.0 revision 0
    

Installed from the Mint/Ubuntu/... repository. Wow, that's really old.

Is there anything like Python's Anaconda, but for Perl6?

~~~
liveoneggs
try rakudobrew or just building it yourself from rakudostar

~~~
a3n
rakudobrew worked fine, thanks.

------
2501
Oh, cool, finally :) Now it's the time to read it. :D Edit: have been waiting
for it after seeing it on /.

------
themihai
Isn't quite late for a JS backend given that we have WASM now?

~~~
niftich
In an IRC chat [1] on 2016-04-15, pmurias, the lead developer of rakudo-js [2]
said:

> Perl 6 -> wasm won't be happening any time soon

> for now wasm is just bytecode asm.js

> if we really wanted to compile to it we would have to use enscripten and run
> MoarVM on top of wasm

[1]
[https://irclog.perlgeek.de/perl6/2016-04-15/text](https://irclog.perlgeek.de/perl6/2016-04-15/text)

[2] [https://github.com/pmurias/rakudo-js](https://github.com/pmurias/rakudo-
js)

~~~
themihai
JS as target will always be slower and bigger(as payload) than WASM as target
so my point is that JS as compilation target is no longer relevant once WASM
is supported(i.e. most likely by the end of the year). It makes little sense
to start a javascript backend now unless you are looking for very short term
benefits.

~~~
smitherfield
It's JavaScript that's a much smaller and faster payload if you need garbage
collection. There's talk of putting a generic garbage collector into WASM but
that's still well into the future. WASM also doesn't have direct access to the
DOM - right now it's more like Flash or Java applets than it is JavaScript.

~~~
themihai
Eventually wasm will provide GC.

Edit: It's on the roadmap just after MVP so I wouldn't say it's that far. Also
based on the latest talks from Luke at City Hall(I can't find the link) the
access to DOM could arrive even sooner than the GC. My point is that wasm is
worth investing it because it's the future. Once language X compiles to wasm
and perl compiles to JS you can see a double digits performance difference. I
don't need to tell you which language looks more appealing. WASM has nothing
to do with applets/flash etc. It was already clarified in various posts.

