Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
Perl Programming

New Video Peeks 'Inside the Head' of Perl Creator Larry Wall (infoq.com) 106

"I was trained more as a linguist than a computer scientist," says Perl creator Larry Wall, "and some people would say it shows." An anonymous reader describes Wall's new video interview up on InfoQ: "With a natural language, you learn it as you go," Wall says. "You're not expected to know the whole language at once. It's okay to have dialects... Natural languages evolve over time, and they don't have arbitrary limits. They naturally cover multiple paradigms. There are external influences on style... It has fractal dimensionality to it. Easy things should be easy, hard things should be possible. And, you know, if you get really good at it, you can even speak CompSci."

Wall also touched on the long delay for the release of Perl 6. "In the year 2000, we said 'Maybe it's time to break backward compatibility, just once. Maybe we can afford to do that, get off the worse-is-worse cycle, crank the thing once for a worse-is-better cycle." The development team received a whopping 361 suggestions -- and was also influenced by Paul Graham's essay on the 100-year language. "We put a lot of these ideas together and thought really hard, and came up with a whole bunch of principles in the last 15 years." Among the pithy principles: "Give the user enough rope to shoot themselves in the foot, but hide the rope in the corner," and "Encapsulate cleverness, then reuse the heck out of it.."

But Wall emphasized the flexibility and multi-paradigm nature that they finally implemented in Perl 6. "The thing we really came up with was... There really is no one true language. Not even Perl 6, because Perl 6 itself is a braid of sublanguages -- slangs for short -- and they interact with each other, and you can modify each part of the braid..."

Wall even demoed a sigil-less style, and argued that Perl 6 was everything from "expressive" and "optimizable" to "gradually-typed" and "concurrency aware," while supporting multiple virtual machines. He also notes that Perl 6 borrows powerful features from other languages, including Haskell (lazy evaluation) Smalltalk (traits), Go (promises and channels), and C# (functional reactive programming).

And towards the end of the interview Wall remembers how the original release of Perl was considered by some as a violation of the Unix philosophy of doing one thing and doing it well. "I was already on my rebellious slide into changing the world at that point."
This discussion has been archived. No new comments can be posted.

New Video Peeks 'Inside the Head' of Perl Creator Larry Wall

Comments Filter:
  • by Anonymous Coward

    When is the Slashcode port to^H^H^H^H^H^H rewrite in Perl 6 going live?

  • While it may be useful for a programming language to somehow resemble the syntax of a natural language, you want to stay far away from pretty much everything else.

    Having dialects, semantic ambiguity, or whatever a 'phonology' of a programming language could be is bad, because a programming language is created to speak to a computer/compiler, not to a human. The two computational system have very different requirements. It's the same reason you don't want to use humanoid robots in a warfare scenario. Yes,
    • Re: (Score:2, Insightful)

      by epine ( 68316 )

      Having dialects, semantic ambiguity, or whatever a 'phonology' of a programming language could be is bad, because a programming language is created to speak to a computer/compiler, not to a human.

      You're probably not as aware of the ambiguities of the C language at the machine level as you ought to be.

      Logic is underappreciated and overvalued. Few programmers are really good at logic (the underappreciated part), and it isn't the whole story, either (the overvalued part). I assure you, Larry understands that

      • You're probably not as aware of the ambiguities of the C language at the machine level as you ought to be.

        Seems like an assumption is made here somehow that C is the pinnacle of language design, or somehow relevant to the problem in another way. How is the current state of C, or any particular language, relevant to the topic of what formal languages should strive for?

    • by hord ( 5016115 )

      $you->can(not have('clear')) && read ABLE, $source, ~~ q[code]
          unless $you->include('natural')('language');

    • by Aighearach ( 97333 ) on Saturday October 07, 2017 @11:14PM (#55329709) Homepage

      a programming language is created to speak to a computer/compiler, not to a human.

      Hogwash. The conversation is between the programmer and the programmers who wrote the next layer down, repeated a few times, until those programmers eventually have a conversation with the circuit designer or engineer, who speaks a few different languages used by engineers, eventually speaking to engineers who designed machines that build circuits. And it keeps going down, and it is all humans talking, all the way down, until you get to apes grunting.

      • The old proverb by the great Sussman that "programs must be wrien for people to read, and only incidentally for machines to execute" always applies. But it probably doesn't help when the two humans conversating understand the language differently from the computer.
        • Sorry, you didn't quite catch it.

          The computer is an inanimate object. When the computer "reads" your code, it is actually the engineer who designed the computer that you're talking to. So no, the humans and the computer don't have a different understanding; the human on one side is simply more knowledgeable about the machine than the human on the other side, who is rightly more focused on the use case.

          • Sorry for the metonymy. Having said that, even the "human on one side" clearly doesn't always say what he means to say in the design language in question, otherwise there's be no hardware or foundational software bugs ever.
  • by hey! ( 33014 ) on Saturday October 07, 2017 @09:21PM (#55329523) Homepage Journal

    The idea that Perl doesn't do one thing well just goes to show people haven't changed; they latch onto a catch phrase then go running around seeing who they can whack with it, apparently proving to themselves how clever they are.

    PERL's wheelhouse from back in the day was right there in the name: practical extraction and report language. People who actually did that stuff for a living had no difficulty grasping PERL's significance: it made your job easier.

    • Re: (Score:2, Insightful)

      by Anonymous Coward

      Wall himself characterized Perl as starting out as "awk on steroids" and that's still it's best use case. Trying to write shell scripts that invoke pipelines with awk, sed, and cut can be extremely tedious, especially on Windows with its file paths like "c:\\Program Files (x86)\\..". Perl to the rescue.

    • To each their own, but I always preferred awk|gawk for "practical extraction and reports."

      • by hey! ( 33014 ) on Sunday October 08, 2017 @12:07AM (#55329817) Homepage Journal

        Up to a point, sure. For what in relational terms would be selection, projection, and aggregation of delimited input, awk works great. PERL slots in where you'd start thinking about writing a C program instead.

        • I would learn awk, but I know it'll lead to me hitting myself in the face going "Why oh why did you do that with sed?!?!".

      • by arth1 ( 260657 )

        One of the seriously underutilized areas of perl is the r, reports. The format/write concept really makes life easier when it's reports you have to generate. But it's a completely different concept from how it's done in other languages, Even those who use perl regularly seem to forget about it, and use it as if it was just a more convenient awk. Which has no useful capabilities for reporting except an END clause.

        • and use it as if it was just a more convenient awk. Which has no useful capabilities for reporting except an END clause.

          Actually, like many other languages (including shell, including Perl, including PHP and even including Python where they are first-class citizens), AWK has support for C-style formating (printf, etc.) and thus allow some form of formatting.

          Of course it's not as beautifully integrate into the core language as perlform, and isn't visually clear (As in "%-10s" vs "@") and neither as versatile (you're going to abuse a lot of function calls and passing variables and hashes around to achieve a poor man's replacem

          • Yeah, my end users generally want the option to pull everything into an Excel spreadsheet or to view it on a web page. So nowadays I end up relying on various modules far more often than I use perl's own built-in formatting capabilities.

            • Excel spreadsheet {...} So nowadays I end up relying on various modules far more often than I use perl's own built-in formatting capabilities.

              Story of my life.

              We arrived at the conclusion that Excel Spreadsheets (with drop-down selectors) is the best ever interface that our lab technician would dream of for the LIMS of our high throughput sequencer.

              (Ended up using XLSXWriter and co, so that the LIMS could spit out Excel Spreadsheet and accept re-uploads of them).

    • Still is the best language for that. I wish other languages wold take some of Perl's good ideas instead of focusing on functional nonsense (not saying that all functional programming is nonsense, but a lot of what people want is not particularly helpful).
      • by q_e_t ( 5104099 )
        Functional programming would seem to be an ideal paradigm for report generation.

        report=create_report(thing_into_other_thing(fuse(data1,data2))

        • I think you are right as far as that goes. The primary difficulty is easily outputting it in a way that the formatting is pretty and pleasing to the eye. Perl has some good utilities for that.
  • by Gravis Zero ( 934156 ) on Saturday October 07, 2017 @09:43PM (#55329577)

    Why would you use anything besides Malbolge? [wikipedia.org]
    Seriously, just look how straightforward things are in Malbolge!
    (I feel silly having to explain this but) this is obviously a "Hello World!" example.

    (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

    This is a mess of a "Hello World!" example in Perl 6.

    print "Hello World!"

    Talk about a write only language!

    Seriously, the future has always been Malbolge. Why are people bothering with any version of Perl?

  • by 93 Escort Wagon ( 326346 ) on Saturday October 07, 2017 @10:58PM (#55329687)

    When you choose to remove backward compatibility, those of us who've been using perl for a while basically will (or at least should) evaluate our need for a new language from scratch. And, compared to other languages (e.g. python, php) perl 6 has several strikes against it - two big ones being the lack of an installed base and the relatively small number of fellow coders.

    People who haven't already used perl in the past will likely not be inclined to try perl 6; and not everyone who's written perl to this point will choose to pick perl 6 as their "new" language going forward. Speaking only for myself, I've got a fair bit of existing perl 5 code, which will be maintained or upgraded as perl 5... and going forward I'll probably pick something other than perl 6 for new work.

    • I remember a Larry Wall interview from 98 or 99 that was streamed on realmedia. I never found a transcript or archive but in it he said that if you want to do everything using Object Oriented Programming then Ruby is a better language than Perl. Of course, he also studies Japanese, and there weren't English language books or documentation yet. So a few years later when the books had come out I switched.

      It turned out the best thing about the change for me wasn't the language differences, but the improvements

    • by ggoebel ( 1760 ) on Sunday October 08, 2017 @08:17AM (#55330773)

      I think you ought to test/validate your assumptions and consider evaluating what Perl 6 has to offer. Many of the core Perl 6 developers had little experience or interest in Perl 5. The pace of development and number of committers seems to be accelerating.

      Performance has gotten about 4 times faster in the last year.

      The developer ecosystem is maturing. CPAN6 is here [6lang.party].

      Perl 6 provides Inline::Perl5 [perl6.org]. Which allows backward compatible access to and mixing of Perl 5 and Perl 6. It also allows you to specify a versioned dialect of Perl 6. So in ~10 years when Perl 6.i is released. Your code targeting Perl 6.d functionality which has been deprecated in 6.e and removed in 6.f will still work.

      The design and implementation of Perl 6 is clean and heavily influenced by Paul Graham's essay on The Hundred-Year Language [paulgraham.com]. Most of Perl 6 is written in both Perl 6 and a subset of Perl 6 called Not Quite Perl (NQP). Which means Perl developers don't need to learn another language to become core developers.

      Larry said that acceleration beats velocity. Perl 6 certainly seems to be accelerating. If you watch the video... there's a lot of exciting things baked into Perl 6. However the focus is on getting things right, clean, and fast (in that order). If/when performance gets within ~10-20% of Perl 5, Python, etc... I think the expressiveness and strangely consistent and clean language design will prompt many to re-evaluate their concept of Perl.

  • by Anonymous Coward

    Been meaning to give Perl 6 a try for years but never got around to it.

    I use Perl as a utility language to automate small tasks and get things done quickly. Yet would never write real software in Perl. Not because the language is somehow defective or incapable of handling it. It's because what makes Perl most useful to me would be disastrous when applied to non-trivial software and when I stop and do it right Perl's convenience no longer outweighs use of other languages.

    Sat in on one of Larrys talks year

  • Use as intended (Score:5, Interesting)

    by Pikoro ( 844299 ) <initNO@SPAMinit.sh> on Saturday October 07, 2017 @11:51PM (#55329789) Homepage Journal

    The problem I've always seen with PERL is that nobody seems to use it as it was intended. If you have to take massive amounts of data (usually text), extract information from it, manipulate it, and then output it into a meaningful result, the PERL does this. It is VERY good at this. it's when people start tacking on shell scripts, a tcl/tk ui, and using it as the base for a program that doesn't do those things, that we run into problems.

    I once worked for a telecom in Japan and one of my jobs was to take billing data from a couple hundred subsidiaries, normalize the data, dump it into a formatted table, calculate usage and totals, then output a properly formatted paper bill. (this was in the early 90s) PERL was the obvious and best choice for this back then.

    The data we got was in various formats from CSV to excel sheets, to plain text files with various fields defined (or not). PERL also has an excellent template system for outputting data to fixed width columns and doing output formatting.

  • by Anonymous Coward

    How do you shoot yourself in the foot with enough rope?

  • Misconception (Score:5, Interesting)

    by mattr ( 78516 ) <mattr@[ ]ebody.com ['tel' in gap]> on Sunday October 08, 2017 @06:21AM (#55330495) Homepage Journal

    Now I know why people want to rename Perl 6. That trend even had made me a bit uncomfortable, though the latest candidate "P6" sounds better to me.

    Perl 6 is a totally different language and yet almost all the posts here are by people who rail against Perl 5.

    Perl 6 is already released and it works. It is an incredibly exciting and eminently useful tool that is aimed squarely at the 21st Century. The code is very readable, and probably much more concise than whatever you are using. It is written in Perl 6. It has the best Unicode and regular expressions in the world, full object model, and chained processing, while also mixing in functional and reactive programming styles, plus keywords that make it easy to compose parallel processing for both calculations and UI. It provides exact mathematical results with rational numbers. You can extend the language with your own symbols, and it feels more awesome the more you study it. For example just this past month I learned about how the compiler actually optimizes your code by simulating it before running it. There is a lot more room for it to grow, but it is already awe-inspiring. Not scary awe, but damn! I gotta get me some of that! excitement.

    The community is also very helpful and welcoming. At this point, if you are looking for a tool powerful enough to realize your visions or just to mess around with, I would recommend reading more about it. I'm hooked and am convinced it is the best tool for prototyping mine.

     

    • forget perl 6, almost no one is using it. Larry had his chance and blew it by doing a 4 year project in 17 years.

      perl 6 is going into the tar pit of history

    • The first link I clicked on in Best of Rosettacode Perl 6 examples was https://examples.perl6.org/cat... [perl6.org]
      You can create your own grammars in Perl 6! Many times I have wanted to implement a DSL for my programs, but the barrier to entry is so high with learning YACC and LEX. I think it's worth taking a look at for this alone, and that was just the first thing I clicked on. If it weren't for your comment I don't think I would have taken the time to check it out. Thanks!
      • You can create your own grammars in Perl 6! Many times I have wanted to implement a DSL for my programs, but the barrier to entry is so high with learning YACC and LEX. I think it's worth taking a look at for this alone, and that was just the first thing I clicked on. If it weren't for your comment I don't think I would have taken the time to check it out. Thanks!

        There hasn't been much reason to learn YACC and LEX for a long time.

        ANTLR is a much better choice. It's a lot simpler than YACC and LEX while still being extremely powerful.

        If you understood the basics of how ANTLR works, then you can build your own parser for simple languages pretty easily. ANTLR can generate code in a number of major languages, but not Perl (though you could certainly come up with a way to run it from Perl if you really wanted to use it from Perl for some reason - the output of a parser

  • I was using SVR and BSD unixes from '88 forward. Just about everyone used awk(1), sed(1), and grep(1) to get non-dataplane work done. Perl came along in the early 90's so the propeller heads who brought us awk(1) improved awk's regular expression handler and you could accomplish everything with awk/sed/grep that perl could do. So few of my coworkers switched to perl: it was yet another "flavor of the month" scripting language that you could easily avoid. Oh: and perl wasn't distributed in money-making

    • by Anonymous Coward

      I was using SVR and BSD unixes from '88 forward. Just about everyone used awk(1), sed(1), and grep(1) to get non-dataplane work done. Perl came along in the early 90's so the propeller heads who brought us awk(1) improved awk's regular expression handler and you could accomplish everything with awk/sed/grep that perl could do. So few of my coworkers switched to perl: it was yet another "flavor of the month" scripting language that you could easily avoid. Oh: and perl wasn't distributed in money-making unixes of the time, and Linux hadn't initially even come out yet, so using perl meant you had to install it and manage it on every server in the farm across many unix flavors. Talk about de-motivation.

      The nice thing about perl was having the same code everywhere. I dealt with some shells not having functions, awk incompatibilities and name differences. Perl was relative easy to install everywhere (and I had 500+ systems)

      I admit it: I am a developer, I worked in C in 1988, and I work in C today. Back in 1993 when perl first darkened my e-mail inbox, the guy in charge of administering ClearCase wrote a ton of perl scripts to make ClearCase do whatever trickery we needed. I've never quite understood why he snorted the kool-aid and went with perl, but I'm guessing he was bored... with ClearCase administration... and perl gave him something to poke a sharp stick at.

      Clearcase has a version of perl built in. See above

      Fast forward to 2017. I'm still an engineer and my hands are dirty with C code. More than 50 languages have come and gone since the late 80's, but I still butter my bread with C, and for trivial scripting or shell work, I still use awk/sed/grep, and now python. Python is exceptional, but I don't want to go into that: I'm talking about perl.

      I completely skipped perl, and I am glad: any time I have to debug someone else's perl code usually its because it broke in some mysterious way because the author wasn't much of an engineer to begin with, doesn't work here anymore, or was stubbornly holding onto perl because they put so much effort into learning it and tries to avoid responsibility for the old ratty perl code they wrote. The perl developer often hates python with a religious passion, and that's a little weird. And the perl developer doesn't like to use comments in their code, or adds snarky/4-letter-word comments, or leaves dead comments around like little land-mines that distract the next poor sot who has to debug it.

      So as far as perl goes, I'm not a fan: perl has brought me more time-wasting bugs than any other language I have done code-clerk mopping up operations for. So please go away, perl, so I can get some work done. I'm too old to waste the time.

      I'm a sysadmin and have done my share of perl that I & others can't read & debug. I stopped using perl awhile ago and python has caught up with perl's modules.

    • You can write just as bad code in C, you know, or very nearly. All your complaints seem to be about bad software engineers, and I share them. But I don't blame the language for the idiots.
      It's debatable whether the drive to make it so "anyone can code" was a good idea. If you do that, then you get anyone coding and anyone usually sucks at it.
      Just my never humble opinion.
      Perl was a step along that path, but it's pretty easy to argue that drag drop "VB" class and .net are a step further yet along with
    • so the propeller heads who brought us awk(1) improved awk's regular expression handler and you could accomplish everything with awk/sed/grep that perl could do.

      I use all four on a regular basis and I can assure you this statement is not true at all. Awk is certainly nice, don't get me wrong, especially when you need just a quick one-liner to do some filtering, but there isn't much out there that can meet Perl in regexp support.

  • Is the video like the Malkovich movie?
  • I am the lead developer on a largish commercial spam-filtering product written mostly in Perl. The code is well-structured, readable, easy to modify and well-documented. So I do like Perl 5. As with any language, you have to be disciplined to write good software in it.

    Having heard Larry Wall speak, I have to say he comes across as a slightly mad rambling scatterbrain. Hit talks are as much philosphy and theology as computer science, and that shit just bores the hell out of me.

    From what I've seen of

  • Perl 5 pretty much lets you do things your way TMTOWTDI. This means a great programmer can write well structured code that is super easy to read and maintain, and a monkey can write monkey-code and have it still work, kinda - This is one school of thought, and all the complaints about perl 5 I see are about the latter class, which sadly, seems to be the majority of coders - only a few are really good and disciplined. No one's complained about the code I post on my site, ever, it's so obvious how it works,
  • Please have a look at my article about it: https://www.linkedin.com/pulse... [linkedin.com]

To spot the expert, pick the one who predicts the job will take the longest and cost the most.

Working...