State of the Onion 11
chromatic writes "Larry Wall's State of the Onion 11 address is now online. Every year, he describes the state of Perl and its community through metaphor and analogy. This year, Larry explored the history of scripting languages, from their dimly-lit beginnings to their glorious future. Along the way, he also describes several of the design principles invoked in the design of Perl 6. 'When I was a RSTS programmer on a PDP-11, I certainly treated BASIC as a scripting language, at least in terms of rapid prototyping and process control. I'm sure it warped my brain forever. Perl's statement modifiers are straight out of BASIC/PLUS. It even had some cute sigils on the ends of its variables to distinguish string and integer from floating point. But you could do extreme programming. In fact, I had a college buddy I did pair programming with. We took a compiler writing class together and studied all that fancy stuff from the dragon book.'"
I really wish the term "scripting language" would die. Can't we just call them "very high level" languages, instead? Isn't that sufficient to distinguish the Perls, Pythons, and Rubys of the world from the "high level" languages like C and C++? It is perfectly possible to compile Python programs, for example, to a pyc binary. They aren't any more "scripts" than a.out. The difference between "very high" and "high," to me, is the fact that dynamic datastructures (lists, hashes) are native, so programmers don't have to worry about mundane memory address and pointer nonsense.
A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
no body
Every year Larry talks about what interesting things have been going on with Perl 6. These interesting things never include "release."
And every year it seems like his talks just keep getting more and more out-of-touch and irrelevant...
And this year he barely even did that!
What I'm listening to now on Pandora...
Perl 5.8 does everything I need it to. There are other languages I use when Perl doesn't do what I need it to. I don't need one language for all of my needs.
I view Perl 6 as an continued employment mechanism for those who write books about Perl and teach Perl to others.
"I'd rather be a lightning rod than a seismometer." -Ken Kesey
and every year the design for Perl 6 becomes more and more contorted and ultra-complicated, basically taking every cool feature Larry sees in other languages and mashing them together into an incoherent Mulligan stew. If Perl is like "whale guts everywhere" then Perl 6 is like taking a whole Oceanarium of sea creatures and dropping them through the dual rotors of a crane copter 10,000 feet over Manhattan.
The Perl 6 community is more focused on getting it right than getting it into the marketplace ASAP. While this is frustrating for many -- it seems like every other day, there's a Perl 6 feature I want to use in my Perl 5 program -- it has contributed positively to the development of Perl 5 and Perl 6 alike. Perl 6 is painstakingly designed and planned as truly a next-generation dynamic language, and as features are completed, they often spill down into Perl 5. (See the perldelta for v5.10, out very soon, for some good examples.)
Unless someone is willing to finance full-time development on Perl 6, this is the best we get. I think it's pretty good.
Cretin - a powerful and flexible CD reencoder
Duke Nukem Forever team announces that they are reimplementing everything in Perl 6.
Thankfully, Perl 6 follows the same principle as previous Perls: you don't need to know the whole language to use it -- kinda like spoken language. There's more than one way to do it, and those who can't hang with this design goal have plenty of pattern-rigid, syntax-poor dynamic languages to choose from (Python, Ruby, Esperanto...).
Cretin - a powerful and flexible CD reencoder
Thank you, Mr. Wall, for providing a language that caught my interest and led me into a profitable career.
However, I moved on several years ago. One of those Python guys inspired negatively by Perl. Much of what keeps me away from Ruby, in fact, is the Perl resemblance. I still have a legacy Perl application to maintain, but I don't do any new Perl work.
I'd think a regular "State of the Onion" pronouncement would be an avenue to discuss where we are today, and where we are headed, with Perl. Instead, it's a rambling short history of "scripting" languages, and a rundown of various language design choices with "Perl 6 will have [x]" statements.
I guess I really don't get the purpose of the essay.
As to TMTOWTDI, I've concluded TOABWTDI (There's Often A Better Way To Do It).
The summary could use a touchup. "But you could do extreme programming" is a sentence fragment. Does Slashdot have editors?
Oh wow, BASIC/PLUS on a PDP-11 running RSTS. That's how I started too. And yet, I became a Python guy. ;-)
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
Free sushi at your doorstep, for everybody!!!
Tell me again how this is bad?
That sounds great, until you're trying to work with someone else's Perl code and it turns out that they have a special fondness for those Perl features which were inspired by awk. A language with a clean design means that you can collaborate with others.
I have seen the future, and it is inconvenient.
Usually I can count on The Onion to provide a few laughs, but this one only a few chuckles. Maybe I just don't get it.
If perl 6 had been released, Larry would be talking about perl 7.
-- Ed Avis ed@membled.com
Or, conversely, you could blame yourself for not knowing the language you're trying to work on, rather than blaming your colleague for knowing it.
I'm not saying that ugly Perl doesn't exist, because it sure as hell does. Perl does not enforce any coding standards at all on its programmers, so undisciplined coders will write undisciplined code, but I'd rather be in Perl's side of the enforcement continuum than, say, Java's or Python's side.
Cretin - a powerful and flexible CD reencoder
Isn't Slashdot violating O'Reilly's trademark by using an image of a Camel in association with Perl?
Just sayin'...
First against the wall when the revolution comes
People still use that??? ;)
...read it and think "State of The Onion"? And then become confused when they started talking about Perl?
I remember how Fry's discounted the dang thing to 14.98. The Fools.
He's waiting for Axl Rose to put out that new "Guns N' Roses" album.
Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
You said that it's OK for Perl to have an excessive number of features, because you don't have to know them. I'm pointing out that the truth is that you do have to know the whole language to use it. So no, I don't have to "blame myself for not knowing the language", I blame the language for being poorly designed.
I have seen the future, and it is inconvenient.
Can we please stop bashing C++ memory management? I write C++ for a living, yet very rarely use what the critics typically call "manual memory management". Either it's really not that hard to do things in better ways, or I guess I must be a superhuman programmer, because according to all the checking software, I haven't introduced a memory leak since... no, actually, I've never introduced one in as long as I've worked here. If you want to talk about the advantages of garbage collection, knock yourselves out, but please stop treating C++ and C as if they're the same in terms of memory management. They are different worlds.
In any case, garbage collection is far from the biggest benefit of using a scripting language (or whatever we want to call them) over something lower level. As others are pointing out, the more important properties exhibited by most of the modern scripting languages that make them "high level" include first class data structures, first class functions, and dynamic typing.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
You need to know the whole of the language to use it with someone who knows, and uses, the whole of the language. This is to be expected. However, if you are in your boxer shorts and you just want to pump out a short file-diddling script before bedtime, no one is going to tell you that it can't look like C.
Perl will let you approach a problem however you want. Imperative, functional, OO programming all works out of the box; constraint, logic, aspect programming are possible. This liberates many programmers, and intimidates many others.
Cretin - a powerful and flexible CD reencoder
attend a local Perl user group meeting seeking basic knowledge like maybe a few tips about hashes and namespaces
your question may be answered if you are willing to sit through 3 hours of the alpha geeks sparring over who understands Damian Conways latest obsfucation most, hopefully with many examples of their own variations to programs that have no real use. meetup at break with someone who didn't participate in that discussion and note they don't know what the hell they are there for either
besides, anyone who doesn't know enough about perl to make changes to it's internals is a lamer
I love using perl, but in my experience, the community around it is lead by pretentious people who think you suck
ok, I admit I haven't attended one of these in years, but now you know why
your mileage may vary, hopefully much better results than mine were
Perl 6. why again should any mere mortal even give a damn??
But you could say the same about almost any language, unless it's either based on a "bondage-and-discipline" paradigm, forcing you to do things One True Way; or hopelessly crippled in terms of things you can actually do with it. Or both. (*cough* Modula-2 *cough*)
Some use screws, some use nails; some use nuts and bolts, some use tapped holes. Some use gaffer tape. Perl doesn't mind which you use. The OP's complaint sounds like someone who has inherited a second-hand tool box and found no number 2 posi bits that weren't chewed up, the 10 and 13mm. sockets missing and "SNAP-ON" changed to "STRAP-ON".
Je fume. Tu fumes. Nous fûmes!
You need to know the whole of the language to use it with someone who knows, and uses, the whole of the language.
No! You need to know the whole of the language to work with three other people, each of whom knows a different part of the language.
I have seen the future, and it is inconvenient.
And his point is that that's why hideous syntax and features are a problem even if you choose not to use them.
What I'm listening to now on Pandora...
Maybe I just don't get it, but I really don't see how "pair programming" -- at least as it was explained to us in the CS classes I took -- could possibly be efficient. Two programmers sharing one computer?
I'm not the world's most l33t programmer (far from it), but I did win a local programming contest a few years back -- due in large part, I think, to the fact that the other teams had to share a terminal, whereas I was working by myself. Anecdotal, I know -- but it gives me definite doubts about the wisdom of Pair Programming.
I figure if anyone knows, you guys do. Am I missing something here -- or is this really as inefficient as it seems to be?
Paleotechnologist and connoisseur of pretty shiny things.
The summaries ended in 2006...
http://dev.perl.org/perl6/list-summaries/
Does that mean the future is over?
Of course that won't actually happen. Reading TFA just further shows that Perl 6 is intended to be Larry Wall's feature-list novelty language with applicability and useability as afterthoughts.
Is it just me, or is this his worst presentation in a while? I think that I missed last year's, but I remember thinking that a couple of his presentations were quite original. There is the one where he based his entire presentation on an optical-illusion picture (three years ago, as I recall), and one where his presentation was based on the default Red Had screensaver collection (two years ago, if I am not mistaken). I had always thought that listening to him present one of these would be kind of like geek-stand-up-comedy. This one was downright plain by comparison.
"-1 Troll" is the apparently the same as "-1 I disagree with you."
So yes, if you have a big project with lots of programmers, and the expectation of ongoing maintenance work by people other than the original coders, then having strict enforcement, and hence clarity and consistency throughout, looks very appealing. Sure, you can fit a flexible language to the task by writing a big document of official coding standards and guidelines and spending time going through code as people submit it to make sure it meets the guidelines; on the other hand you can just have the compiler to that work for you. This is why Java is more popular for large scale enterprise applications etc.
Also, yes, if you just need to write a quick program to do some processing, or play around with some prototypes to clarify your ideas, etc. then the compiler complaining every time you don't manage to squeeze your thinking into the appropriate idiom is just kind of annoying and slows you down. This is why perl remains very popular: if managing to get ideas into code as fast as possible is of primary concern, then it's probably at least as good a choice as any.
There is no "better", merely what sort of concerns matter most for the project.
Craft Beer Programming T-shirts
> Thankfully, Perl 6 follows the same principle as previous Perls
Except for actually existing.
Done with slashdot, done with nerds, getting a life.
Even so, I'm still interested in seeing where it goes. Unlike commercial projects, open source projects can continue to stagger forward to success long after many people have given up hope (e.g. Mozilla/firefox).
Hm...? Are you both arguing that Perl sucks, or only one of you arguing that Perl sucks?
No. You don't have some kind of divine right to understand all code that happens to be written in a particular language, any more than you have the right to understand all code that happens to run on a particular operating system. Otherwise, your "multiple languages" idea would fail because you claim to understand "Linux programming", and yet you can't understand code for a Linux implementation of APL (substitute your choice of operating system/language for Linux and APL).
I've been designing and implementing a general purpose programming language for many years (in my limited free time) and enjoy studying numerous languages and their good and not so good ideas and fitness for creating a broad range of applications. There are many challenging issues to consider when engaged in programming language implementation. While I am not a Perl/Ruby/Python programmer, I have studied these languages and have used many languages mentioned in the paper professionally. I found the paper to be very insightful, but it really is speaking to other language developers... It might be more useful for the paper to discuss Perl issues from the point of view of various programmers using the language for different applications. Most folks in the audience are more interested in solving problems quickly, reliably, with high performance, scalably and maintably and are less interested in the internal drama that goes on in the heads of language implementors.
From my perspective, I want my language to be approachable by first time programmers age 12+, but capable of building complex professional applications that require assembler and 'C' level performance. My deepest programming language foundations are several assembler languages, 'C', C++, APL, SQL, BASIC, LISP, Prolog, Pascal, Lua, Torque, and JavaScript as well as others. My useage for these has been in constructing spreadsheet recalculation engines, virtualization and dynamic translating processors, educational game simulations, custom business vertical database/financial apps and a host of graphics and system level stuff and some hardware. So I have a bit of a bottom up perspective with some healthy vertical app top down moderation. I love games like "The Incredible Machine" series and engines like The Torque Engine and PhysX. Have you seen the new Crysis game.... unbelieveable.
So in my mind, my language has to be capable of being used to create these types of reliable, networked applications with performance equal to 'C' and assembler, but with the brevity of APL, structure of 'C', Lua or TorqueScript, the platform of TGE and the analytical and transactional power of SQL DBMS. And that is what my language is attempting to fuse together in a sensible manner. Then to provide a "Scratch" or "Lego Mindstorms" application constructor GUI for newbies to use to get started. (ya I know, a huge goal)
I think the biggest challenge facing communities using their favorite language is how to provide useful general direction to the future of the language; like how to simplify it while expanding its overall applicability for an ever wider scope of real world products and a broader programmer/user audience. And as a language implementor, the challenge is how to interpret the needs of programmers and navigate an optimal evolution for the language.
timster wrote:
Which explains why Lisp is the leading programming used throughout the industry.
The trouble with the line you're taking is that you run into problems with "the waterbed theory of complexity": If you simplify the language, the libraries get more complicated.
On average, do you expect it to be eaiser for an intermediate user to look-up information on an unfamiliar core language feature, or on an unfamiliar library feature?
Actually, it occurs to me that I probably do know why perl provokes such rabid responses, I think it's because of "The State of the Onion" talks.
I don't know where Yegge got this "gentleman's war" stuff -- when I got started in this game, Nikalaus Wirth was making pronouncements about how a generation of programmers have had their brains irreparably damaged by programming in Basic (and Larry Wall alludes to this in his talk).
I think what's really going on here is that like most "gentleman's" rules, it's only intended to protect you if you're a member of the club. The club got very upset at Wall for daring to suggest that there might be some limitations to their worldview (most "computer scientists" are really mathematicians trying hard to pretend that they're still doing math). That's the really unforgivable thing.
In contrast, the PHP culture is just happy they're doing better than ASP, and makes no explicit philosophical statements about language design.
GENTLE_ART_OF_PROGRAMMING
I'm disappointed with the state of perl. I used to be a huge perl nut and have a major project that is all mod_perl. But I'm growing increasingly fustrated by the lack of modern programming tools, especially compared to other modern languages. Even PHP has a better choice of editors. Heck, I can write syntax colored, intellesense'd python in Visual Studio!
.NET has stolen the market for the very thing these people where trying to make. Pugs, or parrot or whatever, sounds a heck of a lot like .NET/Mono. By the time Perl6 gets out, if it ever does, nobody will care about it because the open source market will be dominated by Mono. At this rate, the perl crew might be better served by just compiling down to MSIL and leveraging Mono for cross-language compilation.
Perl6 is a text book example of why rewrites are bad. While these people are busy writing the Programming Language to End All Programming Languages,
So please, put up or shut up.
See also: Netscape.
This attitude is a big part of the problem, IMHO. I have worked with Perl, but have dealt with too many coders who feel they need to "prove" there's another way to do it (or that they know every nook and cranny of a particular part of the language) by using another convoluted way to "do it". If I have the nerve to ask how or why I get flamed for not being a serious enough disciple of the language and told to look it up myself (I even had a colleague tell me that it is his right to do so because I was wasting his time and next time I would think twice before asking). It's the same "if you can't run with the big dogs, stay on the porch" attitude displayed by the parent.
So, If it appears that I don't want to run with the big dogs in Perl, it's because I choose to run with the grown ups over in the Python community.
... in it's own foul way. But I know what you are saying. MY analogy would be to say that the whole world speaks one language, and if an English-speaker has trouble understanding Chinese, well, then, you just haven't read that part of the manual.
Personally, I take care to write my Perl in grunts and whistles, which are fairly universally understood. Except in those equivalent places where "nodding your head" means "no" and "extending your middle finger" means "hi there!"
Give a man a fish and you have fed him for today. Teach a man to fish, and he'll say "WHERE'S MY FISH, YOU IDIOT?"
If you can rub two thoughts together you'll realize that a group of X-enthusiasts are going to do little else than squabble over the finer points of X. They're not there to help you polish its more obtuse features. Then again, if you could rub two thoughts together you'd have worked it out on IRC with someone, which is exactly why a room full of nerds thought you were the loser: at least they knew what the party was about. Mission statements notwithstanding.
Sounds like a good episode of 'Does it shred?'
Perl 6 has been in development now for some 6 years or so, before I even learnt perl. Since then I have come to love Perl's text handling features, hate Perl's bastard syntax for anonymous hashes and array references and the fact that really simple stuff, like automatic de-referencing of references is STILL not in there, or that array walkers or other features that have been in PHP for years now, are still not there. I hardly ever use Perl now. When I need to shell script, I use Bash (because it works in all Unix environments and I don't have to worry about version 5.6 vs. 5.8 etc), or Python (which has a kinky, but very quick syntax and is very fast). For the web, I still use PHP, since just about everyone and his mother has it installed, or Java, because, despite its atrocious verbosity, has an enormous amount of power in its class libraries and enterprise level tools. I also used ASP on Windows and hated it for its primitive libraries, but loved the simple syntax.
Perl is dying, Larry. New coders and scripters on Unix platforms are learning Python, PHP or Ruby. Windows people have moved to C# en masse. Active State Perl is no longer as powerful as Powershell and is also dying.
There have been God knows how many State of the Onion addresses. None of them have announced a final release of Perl 6. I think that by the time you finally do release Perl 6, Larry, Ruby will have gotten to the point that it runs as fast as Perl does (and the syntax is far, far simpler) and sadly, Perl 6 will not be able to find a niche or enough mindshare to really matter any more.
This doesn't sound anything like the San Francisco Perl Mongers group I hang around with... neither does it sound much like the gang at perlmonks.org.
Sorry if you were traumatized by Tom Christensen, but maybe you need to grow some skin, you know?
Every one of these "State of the Onion" addresses can be summed up as follows:
1) Perl 6 will be great when it comes out, any day now!
2) Here's how I thought up the great features of Perl 6, which will be out any day now, and how I came up with them!
3) Few stupid jokes and attempts at off-the-wall humour to distract people from the fact that Perl 6 _WON'T_ be out any day now!
How about a progress report? How about why we shouldn't just forget Perl and move onto Ruby and Python, which are actually showing signs of progress, unlike the stagnant bog that is Perl 6/Parrot? How about something for developers to work with, instead of blowing smoke out of your ass like you're some kind of Internet celebrity? Think you could manage any of those, Larry?
Unlikely. There's a better chance of Jesus coming back on Christmas Day than there is of Larry Wall actually doing something useful.
Like English?
No, you need to know the whole language to reliably know that you can work with anyone else who also "knows Perl". Having two or more people who can apparently know the same language and yet be unable to effectively work with each other's code can only be a bad thing.
Where do people get the idea that a programmer should be able to work on code -- professionally -- without learning the damn language? And that if this condition is not met, it's the language's fault?
You say that as if that's a good thing. Perl prides itself so much on "there's more than one way to do it", why is it apparently so closed to the idea that some of those ways might mean using another language.
This is not lost on the designers of Perl 6. One of the design goals of Parrot (the bytecode backend to Perl 6) is that it should be able to support many dynamic languages (including Python, Ruby, JavaScript, etc) and that it should be easy to share data and code among them. So for those cases when using another language is the right call, Parrot is on the scene. (Or will be. Someday. Hopefully.)
Instead of trying to be all things to all men and getting an abhorration of a language, why not accept that Perl is not, and never will be, the One True Language and that multiple languages is the appropriate and practical way to express multiple programming paradigms.
That is worse-is-better thinking, and like it or not, Perl 6 is an attempt at a better-is-better language. (It sounds so much more eloquent when Larry Wall says it.)
Cretin - a powerful and flexible CD reencoder
Only things worse than Perl are the books/speech by Larry and Co., and their rabid fans. An earlier camel book listed Perl functions alphabetically only - fine reference for those who memorized all the function names. Sane people call that a dictionary.
Damn, now I have to admit Perl has niche where it is rather useful (I've paid my due writing shell/sed/awk scripts across different UNIX variants back in the days, and that's why I know why Perl has its use).
I was wondering if anyone would be so kind as to explain multiple dispatch, as mentioned in the State. What is it that multiple dispatch solves that an if tree that detects object types doesn't do currently?
People keep using asteroids and windows as examples but I still don't understand. I figure collisions would be a function of The Universe and window handling would be written as a function of, well, the window.
PHP sucks, and Wall is better than all of you. When you've created a language big enough to whine and complain about, then come whine and complain about Perl.
My standard is, when do I expect to be done writing this program?
An hour from now: use a scripting language, maybe Python.
Six months from now, in cooperation with 4 other developers: C++ please.
They're just radically different beasts. Trying to use either in the others role will naught but tears.
Larry & Co are on the right track, and you know it, really.
;-)
perl5 is everywhere and perl6 will be a faster, more flexible, powerful and expressive perl than perl5. My guess is that all *NIX systems will have it in their repos within a week after release, CPAN growth will accelerate, n Linux distros will have new system configuration tools written in it for their next release... and biosciences will find the universal cure for cancer X years quicker
Now if you want to monitor perl6 developments I recommend grabbing the feeds from Planet Perl Six http://planetsix.perl.org/ and check http://www.perlfoundation.org/perl6/index.cgi for more info.
Larry has an appealing balance between academic beard striking and pragmatism in his ideas and I am sure we will all benefit from perl6. And yes perl6 will be a wonderful mix of cleaned up oddities, new ideas and stolen concepts...
"All Your Paradigms Are Belong To Us"
One thing I'll say for Wall's writing -- he gets me thinking.
And while he's discussing the new language paradigms we're moving towards and the changes that have occurred, in the back of my mind I'm thinking of the old complaint, that computer hardware keeps getting faster, but the software gets slower, or stays the same.
As a geek, I find that I'm always going to be at odds with salesmen -- assuming the salesman is good at his job. This is true for two reasons. One, salesmen don't really have a grasp of what I do; two, I don't really have a grasp of what a salesman is trying to do. I work on things because they are interesting to me for one reason or another, not because I think these things will make the product more useful to someone else. And good salesmen will know what the customer wants, and are going to be upset when I tell them that I need to refactor the code or rewrite it, which will cause a delay in shipping the feature they've been asking for.
And when I'm looking at what Wall is talking about here, while I agree with the concept that new language features make up for the increased slowness in favor of producing paradigms that make coding easier, I hear this buzzing in my ears that I've heard before: "Why is my 3GHz dual-core PC so slow?"
And when I look at most of the code I've ever seen, what I see is that whenever a language allows people to use a new paradigm, they use it to death. I've seen a lot of Android developers comment on how nice it is that Google doesn't recommend building factories and iterators and accessors for efficiency. And coming back to Java after having been doing embedded C work for a while, I find myself accessing: Well, why would you do it any other way? Why would you use an iterator class rather than a simple integer index, when only on rare occasions you would need anything else?
What it all comes down to is that there needs to be less thought about how various languages do things and more thought about how to do things in various languages.
A cat can't teach a dog to bark.
Anybody besides me that can't find the second page?
I had to manually change the page parameter on the url to page=4 to get the last page.
Hmmm. page=2.5 seems to get a page between the first and last. I wonder if there are more.
Absolutely. When I program in C++ on top of a sane foundation, I have no expectation of leaking memory any more so than I would in any other language. What I might say, though, is that C++ is a little less tolerant of divided attention. I rarely program in C++ while monitoring IM sessions or RSS feeds. Maybe the proper definition of a scripting language is a language where you can program approximately between the lines while moaning about your weekend hangover to your buddies list.
http://www.rotor.com/portals/12/Safety2002-2006.pdf
Accident rate for helicopters in America is 1 per 100,000 flying hours (11.4 S.R.Hadden-years) and trending downward. This includes the significantly more dangerous reciprocating designs. Few helicopter pilots chat on IM while flying, and only a vanishing minority shows up to work within 48 hours of non-subsistence substance ingestion.
I think C++ partially gets the bad reputation because so many dabblers out there have applied the worse-is-better philosophy to rotor proliferation. It's easy to architect a system in C++ with seven rotors. Not recommended; however, there is nothing to stop you but your own good judgment. Which seems to be the core problem with C++.
Larry is right on the money with his distinction about what a language forces you to say. C++ can become terrifically cumbersome in this department, to the point where C++ is a bad language choice by default unless you know in advance what abstraction C++ brings to the table (with some work) that simplifies your problem domain.
For example, as a C++ programmer I know exactly what Larry was talking about in his dispatch-by-committee passage. You can easily achieve this in C++ (on a compile-time basis for the idiom I have in mind): create a template function that does nothing but dispatch according to any set of rules concerning the types supplied that you can devise (which can be supplied to the template as policy templates, if you wish to do so). These dispatch functions can become ugly creations, but manageable if you are careful and not chatting on IM at the same time.
Personally, I wouldn't code in any multi-dispatch language with a lingering hangover from the previous morning.
One more parting shot about "leakage". It's like Gere's "The gun, the gun, the gun" ditty in Chicago: the purpose of his obsession with the gun is to dim the mind of the jury on related concerns such as motive and opportunity. I don't think about leakage when I'm writing C++ code. I think about correctness, establishing my post-conditions, and not violating my preconditions. Obviously, this can't be achieved if you are programming on top of a hideous library where a complete statement of such is too complex (or too mysterious) to write down for any given routine you need to call. But then you can't write correct code by any metric on top of such a library, so it fails my comprehension that any serious programmer would brag about not leaking memory faced with such an abomination. Many a sailor has drowned going to sea in a ship that never leaked.
Perl prides itself so much on "there's more than one way to do it", why is it apparently so closed to the idea that some of those ways might mean using another language.
But it does. Consider the system command, or the `...` syntax. You can even embed code in another language inside a perl program, via the operator.
These ways of invoking a subprocess (that's usually in a different language) was the original reason for calling perl a "scripting language", though reading other messages here shows that there's little actual agreement on what people mean by that phrase.
Anyway, one of perl's original uses was as a replacement for older "scripting languages" such as sh and csh, done in a way that both makes it less often necessary to call a subprocess, and also makes it simpler and more efficient when you do so.
Of course, those of us who have used it from the early days are quite aware that perl 1 and perl 2 weren't at all the powerful, high-level language we have today. Larry's first goal was to simplify the complex tasks that were done with tools like sh, grep and awk, and do them all with a more consistent syntax.
But it did eventually get out of hand, and turn into a real programming language. The good thing was that Larry (and others) discussed this process all along, didn't pretend that it wasn't happening, and applied a lot of the lessons of history to avoid the mistakes of earlier languages. For example, perl got variables with actual types, and builtin operators on those types, at an early stage. Try doing arithmetic in any of the descendants of sh if you don't understand this. And perl has data structures for storing masses of data, doing away with most of the need for temp files (at the cost of using more memory).
Still, invoking subprocesses is a normal part of perl programming, so it has kept its "scripting" roots while it developed a syntax that most people don't want to use as an interactive "shell".
Those who do study history are doomed to stand helplessly by while everyone else repeats it.
Am I misreading what he's saying about Ruby? It looks like he's saying that because Ruby doesn't explicitly declare the kind of scoping with which a variable is associated, the scopes of its variables are difficult to understand (it's ``asking for trouble''). And then he says declaring your variables as ``my'', ``our'', and ``local'' makes things much simpler. Am I crazy or does this make absolutely no sense at all? Where I work, I've personally seen struggles taking hours understanding and untangling the effects of those declarations in Perl 5. I have seen few difficulties concerning scoping in Ruby, and those I've seen had been resolved without that much trouble or time.
Ya. Tell him to hold off coming back until he thoroughly knows a human spoken language or has some blindingly brilliant transportatiom metphors. I'm totally cooked off on metaphors and analogies at this time in history. Which is to say, all the cybernetic philosophers can wank off their half-formed attitudes on their own time. My time's taken, now and for a long time into the future.
How dare you be so modest!! You conceited bastard!!
Congratulations on the best mental image, evar. And yeah, it's taking a while: here he is talking about Perl 6 over five years ago. (Home of the famous "big knob" quote.)
:-)
I wonder how this guy turned out: "Given this approach to learning Perl (just for a general working knowledge, maybe light usage,) is it really worth spending a lot of my time learning Perl now, or should I wait for the big Perl6 revision?"
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
That sounds great, until you're trying to work with code written by a barely-competent monkey who has no business sitting in front of a keyboard, or in a business domain where you have absolutely no experience, or any of a dozen scenarios that have a greater influence on maintainability than choice of language.
how to invest, a novice's guide
I've had working Perl 6 code running (and published on the Internet publicly for everyone to see) for two and a half years now. Please try to keep up.
how to invest, a novice's guide
His views are so outdated with respect to his review of some languages. Tcl has had a loadable extension mechanism that uses dlopen/dlsym in Unix-like systems, and LoadLibrary, etc. in Windows for over 10 years (perhaps more). The Tcl C API is very similar to Perl's in some respects, with Tcl_Objs, that SUPPORT BINARY DATA. And my, if he only knew how much effort goes into optimizing Tcl's performance...
I wouldn't recommend this article.
As usual Wall rambles on self importantly about how much of a linguist he is. The truth is he knows just enough to be dangerous. The proof is right there to be seen in the utter cruft that is Perl5 and the developing pile of steaming poo that is Perl6. Shoving every feature you've ever heard of into a language because you think it is cool shows immaturity and lack of comprehension of the nature of real languages. Real languages don't do that. They tend to simplify over time.
I expect Wall to not know what a scripting language is, but I would have thought at least someone on Slashdot would know better. A script is something which can be run directly by a command-line shell. Not by some other interpreter like perl, php etc. So bash is a shell with a scripting language.
Perhaps they're both arguing that there's more than one way to suck?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
sums up your IQ
Either you didn't understand what I said or you don't understand the concept of language.
low-level in that it permits very high level abstractions. (Yes, the lowest level of Forth is very low-level, but that doesn't say anything about the levels of abstractions you can _reach_.)
The Onion
Ask Me About... The 80's!
Hey, that explains Duke Nukem Forever...
Care about privacy? Read this!
scripting languages are stuff that matters, programming languages are stuff that worries
Good for you! But some people prefer to run with the grown ups in the Perl community. Myself included, of course.
Never happended to me. I find the community as a whole rather helpful and professional. Of course there are always people who can be annoying to someone else. But it's up to you if you're annoyed or just ignore it.
> Good for you! But some people prefer to run with the grown ups in the Perl community. >Myself included, of course. Aye, there are some, I will grant you that. And you are welcome at my table anytime!