Slashdot Mirror


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.

27 of 133 comments (clear)

  1. To teach kids to code you need an incentive by Wycliffe · · Score: 5, Insightful

    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.

    1. Re:To teach kids to code you need an incentive by temcat · · Score: 4, Funny

      You should give him an incentive to do it.

    2. Re:To teach kids to code you need an incentive by SvnLyrBrto · · Score: 3, Interesting

      Likewise. I learned a fair bit of my early programming (And a good bit of math too. Though I guess you can argue that programming is math. But they're still separate skills in my head.) from opening up Apple ][ game files and modifying the code to cheat too. And not just games. I also knocked up programs to open up the data files from some of those educational programs they used in school and pull the answers to the math and english quizzes they made us take. Sorry Mrs. Brown. But those quiz programs you thought were challenging problems were weak sauce compared to Rocky's Boots and Robot Odyssey.

      I wonder how many kids are losing out in these days of developers' policies that: "Our code is ours, now and forever. You may never look upon it or change the way it runs in any manner whatsoever. And by virtue of that code, we may also screw with your hardware or online accounts.". Mess with their precious code, and Valve will flag your account as abusive and lock you out of some games. Microsoft will brick your xBox. Some companies (Sony, for one.) will actually sue you. It's pretty sad. I'm far from being an RMS acolyte. I don't think of "free software" as some kind of moral imperative. But does really bug me when corporations actively attack people for tinkering with the hardware or software they paid for.

      --
      Imagine all the people...
  2. Read the article, it's full of great quotes by hattig · · Score: 5, Funny

    “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.” ...

    1. Re:Read the article, it's full of great quotes by NoNonAlphaCharsHere · · Score: 4, Funny
      How about this one:

      We say in Perl that it's "strangely consistent".

      Because, god knows, if anything in Perl is consistent, it's strange.


      Then there's the use of "Larry Wall" and "language designer" in the same sentence...

  3. Re:I'd be a Walmart greeter by Jawnn · · Score: 5, Informative

    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.

  4. Perfect summary of Perl from Larry himself by abies · · Score: 2, Interesting

    "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.

    1. Re:Perfect summary of Perl from Larry himself by swb · · Score: 4, Insightful

      Disclaimer: My longest Perl programs were around 500 lines, designed mostly to process log files and provide some kind of selectable reporting capabilities.

      Is this a function of Perl itself or a function of the people writing code adopting poor coding and commenting practices? Just because the language lets you use weird shortcuts to compact several atomic steps into one line, should you?

      In my case, the scripts were dependent on the log files being in a specific format for parsing and analysis. A couple of times over the five year time I used them the vendor changed the log format, requiring me to modify the parsing and in one case make some non-trivial changes to a reporting summary due to differences in the log format.

      I never had a problem going back to the script 18 months or so since the last time I edited it and understanding what I did or how I did it, thanks to generous comments and avoiding the kind of obfuscation Perl let you -- but doesn't require you -- to do.

      I'm not a coder by trade and I thought Perl was very easy to learn. My sense is the complaints about Perl code are more a function of a language that's easy to learn and is thus adopted by a lot of amateur coders who then churn out a lot of code that they think is "made better" by some of Perl's shortcuts. I think it was one of those things where the user culture was such that the "smart guys" in the forums an newsgroups wrote obfuscated code and since they're elite, well, maybe I should to because it just might trim .025 seconds of execution time or something.

      More complex languages are adopted by people with more discipline and experience and they just naturally impose more discipline on their coding style.

    2. Re:Perfect summary of Perl from Larry himself by qwijibo · · Score: 2

      It really comes down to the developers mindset.

      If you're writing something obfuscated to show how clever you are, it shows that you don't work in teams. I know perfectly intelligent people who like Perl 1-liners, but don't realize that the compactness means other people can't use or build on that work. Whenever I wanted to use one of those 1-liners, I always spent the first 20 minutes translating it into readable code with variable names so I could figure out where to add new features. That kinda loses its value if the useful part of the code would only take 5 minutes to reproduce from scratch.

      I write Perl like I learned to write C, which means using functions where appropriate, sometimes creating Perl modules to keep all of the related functionality separate so the module could be used from multiple other scripts in the future. I've had new developers come in to a project I was previously working on my own and they were impressed that they could read the Perl code, it was documented, everything was in subversion, etc. If you're doing something with a lifespan and scope of more than one person, keep the next guy in mind when you start. And never forget that the next sucker to inherit your code may be your future self, so be nice to him too.

    3. Re:Perfect summary of Perl from Larry himself by Stinky+Cheese+Man · · Score: 2

      I couldn't have said it better myself. I have been programming in Perl for 20 years and my mantra has always been "It's better to be clear than to be clever." There are two types of coder that are a curse to the Perl language: beginners who write stupid code because Perl lets them do it, and "elite" coders who delight in obscure difficult-to-read idioms (which often cover up poor basic logic). Saying that someone's Perl code looks like C is meant in a derogatory way by some Perl coders, but I think Perl would have a better reputation if more people coded in such a clear, straight-forward manner instead of trying to show everyone how clever they are.

  5. Perl is better than you think by Anonymous Coward · · Score: 5, Informative

    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.

    1. Re:Perl is better than you think by NoNonAlphaCharsHere · · Score: 3, Insightful

      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.

      To quote something I read somewhere:

      You have obviously never coded in any language, let alone Perl. Comments like these are usually from people with zero real life experience.

    2. Re:Perl is better than you think by qwijibo · · Score: 4, Informative

      Totally agree.

      As much as Python is touted as the replacement for Perl, compatibility between Python versions is painful. While it's possible to write code that works in 2.4, 2.7 and 3.0, it's much harder and more limiting. I'm sure Python is great for environments where there's only one OS image and version of Python to support, which covers small to mid sized companies pretty well.

      However, large enterprises tend to have legacy systems (RHEL 3/4 still run fine in VMs if you don't have to keep up on security patches) and non-Linux based systems. Solaris is pretty painless, but AIX can be painful.

      Perl 5.8 has most of the functionality needed to be productive and covers systems with bundled versions of Perl 10+ years old. If you really want to reach, being compatible with 5.4 gets you to almost 20 years ago.

      It's not that hard to write Perl so it's readable and maintainable by groups of people, as long as they agree to pretty basic standards. Functionally, it's no different than any other collaborative development.

      Perl's biggest strength is how easily it can act as the glue between many different utilities, data sources, etc. There's so many CPAN modules available that it's not hard to find most of the big pieces of code and write what's left.

    3. Re:Perl is better than you think by digsbo · · Score: 2

      Some coders love to never document, always fearful someone may come along behind them.

      FTFY.

    4. Re:Perl is better than you think by Anonymous Coward · · Score: 2, Informative

      Maybe in your world, but I worked for one of the largest Web hosting companies in the world in the late 90s and we had almost no one using PHP. It was, as I said, largely Linux, Apache, and Perl. LAMP began in earnest around '98, but for server programming, over 90% of our users, and we had tens of thousands, were using Perl. So much so, in fact, we had more Perl guys than any other language. There were almost as many of them as there were sysadmins. The good old days.

    5. Re:Perl is better than you think by digsbo · · Score: 5, Informative

      The best comments explain the "why", such as "this is an arbitrary business rule Joe asked for so a salesman could close a contract and get a BMW. Yes, it breaks the flexibility of the architecture and will never be fixed."

    6. Re:Perl is better than you think by Anonymous Coward · · Score: 2, Interesting

      This is BS and you know it. I started coding in 1982. I followed in the footsteps and was taught by guys who started in the mid 60s. I was taught to comment everything. Yes, it can be laborious, but I've been praised for how easy my code is to understand, comments aside, because I give a damn. I'm old school. I'm a pedantic old school guy who takes to time to go the extra mile. I don't live in fear of who is coming behind me. I do what I do because I was taught by people who did things well, gave a damn, and who were at the top of their game.

      With the advent of huge amounts of RAM, huge HDDs, and faster processors, people have gotten sloppy. I remember coding close to bare metal, when you had to take care to write clean, documented code. These days, most guys write code that could be done in literally half the lines if they better understood what they were doing.

      Case in point: a friend of mine works closely with HW devs in the *NIX embedded industry. An open source driver his shop wanted to use was over 30k lines of code. That code was re-written to do the same thing and more in under 10k. I've seen the code. This was a six week job. As you know, embedded stuff needs to be tight and work perfect, taking maximum advantage of HW and available memory. The re-written code was better commented as well. Still all under 10k lines of code.

      Well-documented/commented code is the hallmark of profressional, old school programmers who started off right and stay right.

  6. Re:In other news.. by dintech · · Score: 3, Funny

    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.

  7. "notes that Python has done a better job" by Viol8 · · Score: 4, Insightful

    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?

  8. Awesome! by MagickalMyst · · Score: 4, Interesting

    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.
  9. Re:In other news.. by NoNonAlphaCharsHere · · Score: 3, Funny

    Sure, I'd let my kids play with used syringes and loaded guns, but Perl?? Whaddya think I am, a bad parent?

  10. Re:I'd be a Walmart greeter by Jawnn · · Score: 2

    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.

  11. Perl is Perl. by fyngyrz · · Score: 4, Insightful

    Try running Python 3 in a Python 2 environment

    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.

    Perl is backwards compatible with itself

    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.

    Perl has CPAN, the likes of which don't exist in Python.

    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.

    Better even than Python for text work and regex.

    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. :)

    It's my opinion that for what Perl excels at, one can get off the ground quicker and easier in Perl than in Python

    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.

    I've been in IT far longer...

    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.
    1. Re:Perl is Perl. by GargamelSpaceman · · Score: 2, Insightful

      A regexp is almost always cleaner and easier to read and understand than other code that does the same thing.

      Learn regexps. Learn to love them. Bite the bullet.

      And Perl is as readable if not moreso than many other languages. I'd rather have a rich language full of concise ways to do what you want than one that forces you to do everything the same way even if it is roundabout.

      I care more about the person that uses it every day being able to read it than someone who has never used it being able to pick it up.

      Let the wizards set the standard noobs should aspire to, not the other way around.

      Perl's real problem is that Perl has too long lacked critical features that other languages have been getting while Perl did not because of waiting for Perl 6.

      It may have been harder to do, in terms of total work, but adding the features piecemeal to Perl 5 would have at least preserved the Perl community which is now essentially gone.

      Perl 6 might as well not even be called Perl ( and might be better off not being called Perl )

      It's a new language with a new learning curve for the new features and no users.

      Perl 5 is a dead feature lacking language with few users.

      --
      ...
  12. Not a pedagogical language by JazzHarper · · Score: 3, Insightful

    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.

  13. Re:I'd be a Walmart greeter by Anonymous Coward · · Score: 2, Insightful

    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.

  14. Perl's problem: popularity, not functionality by quietwalker · · Score: 3, Interesting

    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.