
Programming is hard, let's go scripting.. - joslin01
http://www.perl.com/pub/2007/12/06/soto-11.html?page=1
======
atdt
_We think about extensibility a lot. We think about languages we don't know
how to think about yet. But leaving spaces in the grammar for new languages is
kind of like reserving some of our land for national parks and national
forests. Or like an archaeologist not digging up half the archaeological site
because we know our descendants will have even better analytical tools than we
have._

This quote, and what little I've sampled of Perl 6, reminds me of a few lines
from the movie _Wonder Boys_ :

 _Grady, you know how in class you're always telling us that writers make
choices? [...] And even though your book is really beautiful, I mean,
amazingly beautiful, it's... it's at times... it's... very detailed. You know,
with the genealogies of everyone's horses, and the dental records, and so on.
And... I could be wrong, but it sort of reads in places like you didn't make
any choices. At all._

~~~
zeroonetwothree
The book is significantly better...

(yes, I have nothing to add)

------
molecule
wherein Larry Wall foresees the future: "I think when the new JavaScript
engines come out we'll probably see renewed interest in a JavaScript backend."
- December 6, 2007.

~~~
sciurus
By "backend" he meant something to run Perl 6 on.

~~~
perlgeek
And he was write. Perlito compiles subsets of both Perl 5 and Perl 6 to
Javascript.

------
brlewis
Quote: _By policy, LISP has never really catered to mere mortals._

I would think that by 2007 Larry Wall would have seen DrScheme (now DrRacket).
You can't get a better onramp than that.

~~~
jrockway
Kids learning about computers have a slightly different set of problems to
solve than programmers being paid to program. The hard part of programming is
integrating with the real world; DrScheme solves that problem by making its
own world.

~~~
brlewis
Do you have in mind a particular integration with the real world that is
language-specific, but where DrScheme would not help a professional programmer
ramp up familiarity with a Schemey way of doing it?

I think I disagree with you, but have to understand what you're arguing to be
sure.

~~~
jrockway
Nope, I'm being more general. Throw darts at random programming ads. Take that
job. Chances are, it will be something like "move QUUX formatted records from
BAZ mainframe to new Oracle Windows Java 7.0 Lightweight Enterprise Server",
rather than "start completely anew to help elementary school students learn
calculus". Things like ad-hoc record parsing and network connectivity and the
ability to easily fork() end up being more important than a clean OO system or
a nice UI library, and so on. (Not that they are mutually exclusive... but
it's likely that Oracle Windows Java 7.0 Enterprise Server has drivers for
Java but not DrScheme, saving you thousands of hours of programming time.)

~~~
_sh
What you say is indeed true, if you take a monolithic approach to problem
solving. And I tire of this approach--dammit, we're tool-builders! We have
been shown the Unix Way, and yet we ignore it time and again, forcing us into
suboptimal solutions to our problems.

Moving "QUUX formatted records from BAZ mainframe to new Oracle Windows Java
7.0 Lightweight Enterprise Server" involves these things: a source, a sink and
the pipe character. Your source and sink may necessarily be in Java--meh,
whatever works. But now you have a decoupled framework for doing these kinds
of jobs, and you haven't invested any more time or effort than you would have
with your one-off, inflexible solution. And you can now stuff anything in that
pipeline. And I regularly use racket for exactly this, using protocol buffers
as the pipe character. It's not rocket science, it's the Unix Way. People,
embrace it and free yourself from the monolithic millstone!

~~~
jrockway
You're assuming that BAZ mainframe wants to let me move data away. They don't,
so the only way to do so is with ugly hacks. That's the bulk of programming:
making things that don't want to interoperate interoperate.

If everything was a service, then everything would be easy, and our tools
would look a lot different. But if you can't change the world, you can at
least make living in an imperfect world easy, and that's what Perl tries to
do.

~~~
_sh
If the mainframe won't cooperate, you'll have work to do no matter what. But
you can isolate that work into as little as possible. That is what the Unix
tools do.

Everything _is_ a service, if you make it so. A component is a service,
offering the functionality of its interface. The 'wc' tool is a service--its
interface is its command-line switches. And you're right, when everything is a
service, everything is easy (I'd say easier).

------
densh
I'm a python programmer and this article really makes me interested in Perl.
The only problem is that Perl 6 haven't shipped yet in more then 4 years since
this article was written, have it?

~~~
kamaal
Perl 5 has nothing to do with Perl 6 development or even releases. Even after
Perl 6 is released Perl 5 will still continue to evolve and grow.

At the moment Perl 6 specification gives a good evolution map for Perl 5
development. So you need not to have to ever worry about Perl 6.

Perl 5 is a solid language in itself. Perl has been amazingly useful since
almost 25 years now. And anybody who denies this is simply trolling. Its
useful for almost anything to everything. From scripting, to application
development, to prototyping to building reliable applications in any domain.

Perl adapts to nearly every programming paradigm out there. Object oriented,
functional, declarative you say it Perl has it. Its amazingly flexible, easy
to learn and extensible.

You also get to benefit from the community experience and knowledge
accumulated over years. You get the power of CPAN. There are also amazing
resources to learn Perl.

Its a tool that you will never stop being in love with.

Those of us who have used Perl and pushed its boundaries to get amazing stuff
done over years, even now can't write down words to describe its greatness. We
can only tell you how great it is, but when you see it yourself you will know
it.

But the position of any new Perl programmer is enviable to say at the least.
He stands at the gates of a city which is going to take him to places he has
never seen and experiences he has never been through. Most of them are going
to change his life for ever.

~~~
creamyhorror
I have hardly ever seen such high praise for a language. I guess I'll have to
learn it sometime and see what the hoopla's about. With the Modern Perl book,
of course, if it's still the best-of-breed then.

~~~
read_wharf
Although Python is taking more of these roles over time, Perl is still the
thing that holds much of the internet's infrastructure and tools together, as
well as internal servers, so it's a good thing to know if you're interested in
all that.

~~~
kamaal
Hmmm, Python has some great frameworks and is a great language.

But unfortunately, its almost like going backwards. Perl was invented because
C + Unix text processing utilities together were not proving to be good for
many tasks like Text processing, fast prototyping etc. Now using another C
based language which doesn't do that, takes us back to the old problem again.

IMO, Python doesn't solve those problems. Regex support is really bad in
Python and file operations are not trivial. There is too much of Java feel to
it and it just doesn't have the feel of bash/perl/awk's scripting powers.
Scoping is just not right. There doesn't seem to be a sane ways of evolution
without breaking backwards compatibility. No equivalent of CPAN. And in many
ways white space based parsing is not good for large and nested code blocks.
It still doesn't have multiline lambda's. And its too much do-it-one-true-way
kind of language, that sort of is a blocker for quick hacking. Because I like
to write what I think, and not the other way around. The language is too
verbose, and unlike Perl and Emacs there are no exponential productivity gains
over time.

But I agree though, that Python does have some other good things. The OO
syntax is neat, there are some great frameworks like Twisted and Django. And
there is low barrier to entry which makes new bie feel just at home. The
tutorials are just too good. And good standard libraries ship with it.

~~~
irahul
> Regex support is really bad in Python

More verbose than Perl? Yes.

Bad?

    
    
        for x in re.findall(r'\d+', '12 drummers, 11 pipers'):
            print x
    

How is this bad?

> file operations are not trivial.

File operations are trivial and well designed. You know, there is much more to
file operations than in-place substitute.

> There is too much of Java feel to it

Bullshit.

> and it just doesn't have the feel of bash/perl/awk's scripting powers.

Want it to feel like Perl? Don't bother - use perl.

> Scoping is just not right.

Scoping doesn't require your testimony.

    
    
        # foo doesn't exist
        if blah:
            foo = 'bar'
        # foo  exists if blah
    

This is perfectly fine.

> There doesn't seem to be a sane ways of evolution without breaking backwards
> compatibility.

When you change the semantics of the language, bozo syntax tricks don't help.
Python 3 has semantic changes - syntax tricks aren't going to handle them.

> No equivalent of CPAN.

A large stdlib and PyPi.

> And in many ways white space based parsing is not good for large and nested
> code blocks.

Spaghetti will look like spaghetti, irrespective of whether block separators
are braces or indentation.

> It still doesn't have multiline lambda's.

"still doesn't" sounds like it is something which is planned but not achieved
yet. It is not something that Python designers are planning to incorporate in
the language. Perl has multiline lambdas but I only used single line lambdas
for sort, grep et al - anything larger than that becomes a named function.
Unless you have blocks, multiline lambdas aren't used that much.

> And its too much do-it-one-true-way kind of language, that sort of is a
> blocker for quick hacking.

There can't be an objective explanation to a subjective statement.

> Because I like to write what I think, and not the other way around.

What's the other way round? I like to think what I write? So in Python you
think what you write? That makes zero sense.

> The language is too verbose, and unlike Perl and Emacs there are no
> exponential productivity gains over time.

Complete, utter bullshit. There isn't a single language in the world where the
productivity gains are exponential over a long time - there might be some when
you are a beginner which gets capped pretty fast.

~~~
kamaal
I am going to neglect the responses 'Bullshit' basically because that means
you don't have an answer at the moment.

>> _There isn't a single language in the world where the productivity gains
are exponential over a long time - there might be some when you are a beginner
which gets capped pretty fast._

Sorry to ruin your party. But there are languages where there are exponential
gains in productivity with time. Languages like Lisp, Perk, Haskell etc. But I
can't convince that to people who can't look beyond 'readability matters' and
consider that as the Pinnacle of programming language design.

Coming to regular expressions they are first class citizens in Perl. That is
basically what takes them to the next level. Now scripting on Unix has always
been so much about Text processing. That is how it has always been. tr, sed,
awk and dozen other text processing utilities. And then there is Perl. If you
are not getting 'Text processing' thing correct, then you already loose the
scripting race with a very huge margin.

Perl added a lot of new semantics to the language too given/when statements,
smart matching operators etc. Python broke it for as simple a thing as a print
statement. That is the whole point(The language is too brittle to evolve). And
I'm sure any new thing in Python is going to go the same way.

And stdlib is no where near CPAN. Although I agree PyPi is doing a good job.

You are right that I must use Perl,And you are also right that Python is an
awesome language. There are great frameworks Twisted, Django, NumPy. I've used
Twisted extensively. In many Python ways is a great language for web
development, for studying algorithms(because its better psuedocode), and due
to its frameworks like Twisted - its good for network programming.

But I am sorry to say Python doesn't do well in scripting areas. And it so
happens once you start there and go a little deeper you can just go on and on
with Perl.

~~~
irahul
> I am going to neglect the responses 'Bullshit' basically because that means
> you don't have an answer at the moment.

Saying 'python feels like java' or 'exponential gains from switching language'
is _bullshit_ , and augmenting it with "calling it bullshit means you don't
have an answer" is more bullshit.

> But I can't convince that to people who can't look beyond 'readability
> matters' and consider that as the Pinnacle of programming language design.

I don't remember mentioning 'readability matters' as being pinnacle of
programming. You are responding to arguments you are imagining I am making.

> Sorry to ruin your party. But there are languages where there are
> exponential gains in productivity with time. Languages like Lisp, Perk,
> Haskell etc.

Get off your high horse. Lisp, Perl, Haskell aren't some exclusive club only
you are allowed into. I have used Racket, Clojure, Python, Ruby etc. and if
your gains are exponential accumulated over a period of 1 month between say
Python and Racket, be assured you are a very lousy Python programmer. Let
alone exponential, a gain of even 2x is quite a stretch. Why don't you put
your money where your mouth is and show me your 'exponential gains'?

~~~
kamaal
Sorry! I shouldn't have hurt your religion at the first place.

~~~
irahul
> Sorry! I shouldn't have hurt your religion at the first place.

In place of spewing this nonsensical shit, you could have quoted me an example
of "exponential gains".

Out of curiosity, have you actually programmed in Lisp or Haskell? I am not
saying you have, I am not saying you haven't; it's just that people who claim
"fuck yeah macros - now I am 100x more productive" are mostly people who
haven't actually used them and are regurgitating blogosphere bullshit.

~~~
kamaal
Well I should have learned long back to not argue with impolite people.

This is one lesson I'm not going to forget.

~~~
irahul
> Well I should have learned long back to not argue with impolite people.

Sheesh. In this thread, there is nothing but platitude in your posts, and you
are constantly trying to put down people(everyone else who doesn't agree with
you about perl is a troll, saying that what you know about python is not
correct is me defending my religion etc etc), and then you whine about people
being impolite. Pot, meet kettle.

> This is one lesson I'm not going to forget.

Another lesson would be to actually learn and use Lisp before claiming
exponential gains.

It's not impolite to say you are regurgitating blogosphere bullshit when you
claim with utmost confidence "I am sorry to ruin your party but there are
languages like lisp and haskell which results in exponential gains" when
actually you haven't used either one of them.

------
neutronicus
Interesting to see him talking about multiple dispatch. I wonder what the
thinks of Clojure? And CLOS, of course.

~~~
kamaal
Moose has borrowed some features from CLOS - <http://moose.iinteractive.com/>

You might find it interesting to use it.

~~~
perigrin
Multiple Dispatch however is implemented in the extension MooseX::MultiMethods
for various reasons to do with robustness.

------
killa_bee
At the risk of being annoying, virtually all the research done in linguistics
departments anywhere in the world is research in the cognitive science of
language, so a social science, not a humanity. This certainly includes
Berkeley around 1970 or so (assuming that's when Wall was there).

------
tomrod
I've always liked Matlab's distinction between a function and a script. (Aye,
many would call Matlab a scripting language).

Simply put, a function can map arbitrarily, and a script has the mapping and
parameters provided!

At least, that's when you get into the scientific computing paradigm, as I
understand it.

------
netbyte
As a new programmer, should I wait for Perl 6, or just learn Perl 5, this
article makes Perl 6 look quite compelling.

~~~
masak
You should never "wait" for a programming language. :) I say this as someone
who is deeply involved in Perl 6 development.

Learn Perl 5 if you want to learn how a full-featured, complete, and
liberating-to-use programming language works.

Check out Perl 6 if you want to see what some of us are building, and if you
value _ideas_ as such, even when they haven't all been put together into a
finished, polished product.

~~~
netbyte
I don't think Rakudo works on windows well anyway

------
fudged
"X is hard, let's go Y"

Is this a reference to consultant_barbie on reddit, or is this meme more
widespread?

~~~
itsameta4
It's a Simpsons reference. There's a Malibu Stacy doll that says, "Math is
hard, let's go shopping!"

I'm sure consultant_barbie is referencing the same.

~~~
fudged
Wow, did not know! Thank you!

------
hashfold
Scripting? its another language used to program.

In my opinion, none of the language will solve the problems with programming
or bad programs. The only thing which could help programmers is the way they
think of the solution and how they approach to it. Thinking about long term
solution for a given problem may help.

------
zoowar
Perl has outlived its utility.

------
aoprisan
tl;dr; So basically Perl 6 will force strict and warnings by default.

~~~
bryanlarsen
An actual tl;dr for this article would be almost as long as the article
itself. There's lots of good stuff in there. However, if the length of the
article intimidates you, I suggest starting at the sentence before the heading
"early binding; late binding". Everything before that is historical
perspective -- interesting but not as useful as the rest of the article.

------
agentgt
Programming is not hard. Getting people to buy your product or give you
money... that's hard.

~~~
jrockway
Being bad at programming is not hard, anyway.

~~~
agentgt
I knew I was going to get downvoted to oblivion for that comment. But I still
firmly believe it.

People are much harder to deal with. Much more dynamic. I'm confident the
computer would not have downvoted me :)

BTW you apparently have a gazillion repo's in github but no blog ... writing
is much harder than programming IMHO.

~~~
danso
That's a non-sensical statement. Certain types of writing may be harder than
certain types of programming. And vice versa.

~~~
agentgt
I'm just joking around and slightly jaded cause business is going slow.

