Larry Wall On Perl 6, Language Design, and Getting Kids To Code
M-Saunders writes: Perl 6 has been a long time in the making, but Larry Wall, the language's chief developer, now says it should arrive in time for Christmas. In this interview with Linux Voice, Wall explains why Perl 6 took so long, and describes how his background in linguistics influenced the design of the language. He also discusses ways to get kids interested in coding, and notes that Python has done a better job so far in this respect.
Growing up in the early 80s on an apple II, one of the things that helped me learn to code was that I could edit and modify existing code like Oregon Trail to cheat. It also helped that there was a limited amount of other things. We didn't have 24 hour kid cable channels so once I got bored then I needed something else to do. I see the same things in my kids. They love kodable on the ipad because it gives them a new character every time they completed a level. A similiar game cargobot they aren't interested in at all because it doesn't have any rewards. I also notice that when they are grounded from their playstation is when they immediately start reading more books, playing the piano more, exploring new apps on my ipad, going outside more, etc... Just like adults, kids are going to gravitate towards what is most enjoyable at the moment and unlike adults they have very little concept of delayed gratification so doing something for their future self is not on their radar. The best way to get kids to want to code is give them something they can do with it whether it is control a robot, create a webpage to show off to their friends, etc... When I was in school alot of kids knew basic javascript and html because that was the only way to have a geocity webpage. Facebook and the likes have allowed kids to have a presence on the web without any need to code. It's still possible to get kids interested in coding if you can show them "cool to them" stuff they can do with it.
“People who made early implementations of Perl 6 came back to me, cap in hand, and said “We really need a language designer.””
“I was almost explicitly told: “Stay out of the implementation! We saw what you did made out of Perl 5”
“With Perl 6, we found some ways to make the computer more sure about what the user is talking about.” ...
Before I'd ever code in Perl.
One of the defining traits of a skilled craftsman is her ability to choose the right tool for the job. In other words, not everything is a nail, rookie.
"I started trying to teach myself Japanese about 10 years ago, and I could speak it quite well, because of my phonology and phonetics training – but it’s very hard for me to understand what anybody says. So I can go to Japan and ask for directions, but I can’t really understand the answers!"
This is exactly what Perl is about. You can write code, but have no chance of understanding code of other people.
You have obviously never coded in any language, let alone Perl. Comments like these are usually from people with zero real life experience.
I've been in IT far longer than you have, I guarantee you that. Perl has fallen out of favour, but it is not a bad language. There are things you can do in Perl better than any other language. Full stop. The Internet of the 90s and early 00s was largely built on Apache, Perl, and Linux.
Perl is masterful at text manipulation. There is nothing extant better than Perl for regex. Nothing. Detractors poo-poo Perl because there "is more than one way to do it". Perl code can be treacherously obfuscated, but that's part of the fun. As long as good code is well documented, there is no harm.
Perl is far better than awk, sed, and other, older tools. Better even than Python for text work and regex. Python is the darling of the coder world, but has its own share of warts that even the Python camp gets their knickers in a twist over. Perl 1 still runs. Try running Python 3 in a Python 2 environment. You cannot. Perl is backwards compatible with itself, Python is not. The libraries in Python are wholly incompatible most times. Perl has CPAN, the likes of which don't exist in Python.
It's my opinion that for what Perl excels at, one can get off the ground quicker and easier in Perl than in Python. CPAN helps enormously with this. In closing, Perl is no longer the beauty queen, but she is the girl next door who is a reliable friend, who is acknowledging of her weaknesses and uses, but who does what she does better than anyone else. Perl runs in surprising places. Perl is arguably also faster than Python compiled or interpreted. Just my .02.
If I have children, before they are allowed to use the internet, the first thing I'll do is educate them to be careful about the dangers of Perl.
Yeah , wonder why. Could it be because its actually readable and has a sane syntax that doesn't look like the aftermarth of an explosion in a punctuation factory?
It will be nice to see what "bells and whistles" Perl 6 has added.
:)
I can code in several different languages and, while Perl is by far my favorite, I have to say that it was by far the most difficult language to learn on my own. The reason was because the syntax just seemed too cryptic. By contrast, I learned to code in Assembly when I was 14 by reading a book on the subject and trial and error.
In order to get my head around Perl I took a 1 week crash course which really demystified the language. I have now found Perl to be the most useful and versatile language that I have ever used - especially for system administration tasks. It is also great for writing spiders, parsing text, communicating with system resources and interacting with databases. Of course, each programming language is a different tool for getting certain jobs done. Perl is akin to a swiss army knife.
What's also wonderful about Perl is that it is native to Linux and also available on Windows (I use Strawberry Perl at work to monitor hardware as i'm forced to use a Windows Desktop).
I know that a lot of younger coders will scoff at Perl (usually out of ignorance) whilst touting the superiority of VB or Java (which is laughable). To each their own.
It's really nice to see that Perl is still being actively maintained and has a new release coming out. I don't know about the rest of you, but i'm salivating over this one
Political correctness is really just herd psychology pushed by insecure people who desperately seek social conformity.
Sure, I'd let my kids play with used syringes and loaded guns, but Perl?? Whaddya think I am, a bad parent?
Some tools are never right.
That applies both to tools and "tools".
If you are talking about perl, you are not in the "skilled craftsmen" group. For certain jobs, it is unparalleled. Now pick up your hammer and start whacking those nails.
Why... would you do that? Python 3 is not a new version of Python 2. Python 3 is "other." I think you're just confused by the (admittedly very poor) naming convention they have adopted. It probably should have been called Serpent or something along those lines, because it really isn't an attempt to "be" Python 2 at all. Furthermore, if your code is tested and running, why would you convert it to Python 3 and then have to re-test? Seems to me the number of good business reasons to do such a thing would be a very small number (of course, you might want to do it for fun or educational value, but that's not really germane.) Python 3 is for new code, if you want to go that way (and you certainly don't have to.) Python 2 is solidly emplaced and not going away. It's a different thing. It's not a "you need to upgrade" thing or a "you have to move your code" thing or a "now Python is this other thing" thing. Python 2 is Python 2, Python 3 is other. That's all you need to know.
No, it isn't. For instance, later versions of Perl will choke -- the code will fail and/or act differently -- on various early usage patterns, such as hash references.
https://docs.python.org/dev/distributing/index.html
CPAN itself is a bunch of usable Perl. There's a huge amount of usable Python out there as well. It's disingenuous to suggest that CPAN, which is merely a repository, represents a meaningful difference.
Meh. I haven't run into any text processing problems that I couldn't solve with Python that made me think, "gee, wish I had X Perl feature." And I wrote in Perl for quite a few years, I know the territory fairly well. Python's got some pretty solid regex handling as well. Python 2. No idea what Python 3 has, could care less. Different language and all that. :)
Oh good grief no. Perl is hard to read by nature. Python is easy to read by design. Now, if you had said "for the experienced Perl programmer who knows little or nothing about Python", then sure. But otherwise, just no. Perl is horribly obscure in terms of "getting off the ground." Moving to Python from Perl was like having a huge splinter pulled out my butt for that very reason. I can actually read other people's code and understand it without having to keep in mind a whole raft of special characters and the like. Instead, what is happening is almost always spelled out fairly explicitly in what nearly amounts to plain English, requiring much, much less of my brain to be dealing with the language, and leaving much, much more of it free to be dealing with the program logic.
Not the OP, but I've been in IT since ~1972. You may have been at it longer, but I've been at it long enough to come to the conclusion that the objective of a programming language is to solve a problem, and specifically to do it in such a way that the solution is maintainable, effective, and doesn't naturally hide bugs because of ingrained opacity. Something may come along that is better at these things than Python, but I've not run into it yet, which could certainly be a result of me not looking at things that are already out there -- but it isn't a result of not looking at Perl. I've written an enormous amount of Perl, and if there is one thing I will say about it consistently with benefit of hindsight, it is that I wish I'd been able to write it all in Python. Because Python is much, much easier to write, clearer to read later, easier to debug, easier to fix, and yes, actually more fun.
I've fallen off your lawn, and I can't get up.
I've used Perl for 20 years and still find it more productive than most other languages, but I would _never_ recommend it as a first programming language to anyone.
There is quite a bit of hate for Perl, and I think this is because it has become one of those things where groupthink is largely to blame. i.e. if you don't hate Perl, you're not one of the cool kids.
The sad thing is, I can't think of a better tool for processing text easily and efficiently. Not only that, but Perl is excellent for "one liners", whereas python is just a bear at that task by comparison.
I've been around long enough to see Perl go from the glue of the internet to object of scorn. It's no longer the preferred tool of sysadmins or the easiest way to write web applications outside of raw C. I've had a good deal of time to consider why that's the case, and I keep circling back to it being an issue of popularity.
We like to think that we're engineers, scientists, deep thinkers, whatever - and that we as software devs therefore make sound evidence based judgements, at least more often than other disciplines. The fact of the matter is that we're just as led by emotions as anyone else. We have 'Holy Wars' over OSes and languages and frameworks, and what most of them boil down to is justification of personal preference more than anything else. Not features, not availability, just personal preference.
In that light, I've been seeing a lot of fad languages in the last decade or so. I usually refer to them as toy languages though that phrase may have a number of inaccurate definitions. Simply, they're a new toy to play with. Scripting languages are especially prone to this because they tend to have a lower barrier to entry. In recent memory, I seem to remember it going something like Ruby + RoR => Python => Scala => Javascript via node.js => and now the big thing I'm hearing about is R. The claim is that each one is so much better, but the reality of it is, it's just so much newer, and the differences in implementing identical functionality is not as important as the flash and sizzle. Even when the sizzle is backed by something useful, people stop paying attention once it stops. In fact, most of these languages have been around for a long time - several of them almost as old as Perl itself. They've just briefly become popular, not making any sort of surprising forward leap to become capable or more feature rich.
Of course, one big part of the popularity is maintaining buzz, and with what was effectively a 15 year hiatus from any real forward development, much less promotion, Perl dropped out of the limelight.
This is pretty standard though. People seem to forget so quickly; at one time, ColdFusion, Java Applets, Flash and PHP were the darlings of their day. Perl too.
Now, if someone were to take Perl 6, produce a framework for it that tried to force a remedial coding style (Python), require webapps follow a specific directory layout and naming convention (RoR, many JS webapps) as well as page templating (PHP, JSPs, Razor/Webforms, etc), add some human-friendly data query language features (Java Streams, C# LINQ), provide tools for automatic dependency search and import (Maven, Ruby Bundler), and then really play up the functional aspects of the language, and perhaps Perl will rise again too.
If that's really the features people are looking for. I deliver that line with only marginal sarcasm; I note that the number one complaint against Perl is ugly code, which we know is the domain of the author, not the language - and other languages 'fix' this by taking away developer agency.
Even without those new features, and though I don't use it as often, I still like the ole' "swiss army chainsaw," just a little bit more than these other choices. I guess you could say it was just a matter of personal preference.