Perl's Extreme Makeover
PurdueGraphicsMan writes "There's an article over at Yahoo! about the upcoming version of Perl (version 6) and some of the new features (RFC list). From the article: "Although Perl 5's expressions are the most sophisticated available and aspired to by other programming languages, "no one pretends for a moment that they're anything but hideously ugly," said Damian Conway, a core Perl developer and associate professor at Monash University in Australia.""
Good! Looks like they kept Perl5 in mind and it will flip into a special mode to execute older Perl5 code.
Nice!
-mb
a ,There's been /|\ at the ASCII /|
a 0 an explosion
a
a | factory!!!!
a
Okay, about 99% of the Perl Haikus will not apply anymore.
We might be able to actually use them in ten years or so... I do appreciate Open Source speed (done when done) and Perl is pretty complex but maybe they should have broken the upgrades into parts?
Is there anything better than clicking through Microsoft ads on Slashdot?
Back to Pac Man and Vi then...
"If you think nobody cares if you're alive, try missing a couple of car payments." Earl Wilson
"no one pretends for a moment that they're anything but hideously ugly," Does he mean the lines of code or the programmers themselves?
mmmm...thanks for sharing?
.. is why I prefer python over perl. The resulting code is soo much cleaner.
I suppose it has to do with the old debate of losely or strict typed langauges. Perl is highly modular but I would hate to work in a team of 10 or more perl developers all writing in their own styles and methods. Shudder.
Yahoo decided to support php rather then perl in their next generation yahoo services specificially because of "There is more then one way to do it".
Of course its all being outsourced to India now where they can just hire more developers if complex problems arrise
http://saveie6.com/
Will that make Perl 6 coders a different kind of "Parrot Head"?
The problem with socialism is that they always run out of other people's money. - Margaret Thatcher
...provides almost all of Perls power, with none of the ugliness.
TODO: Something witty here...
Unreadable code,
Why would anyone use it?
Learn a better way.
ugliness that grows
into beauty inside of
your favorite shell
Arbitrarily
Nested structures for data;
Joy of birds in flight.
As with the spring rain
Perl is indispensable
Unquestionable
http://aspn.activestate.com/ASPN/Perl/Haiku/Abo
http://www.beyourowneviloverlord.tk
http://www.frozenchickenthrowing.tk
http://www.killercamel.tk
...would be able to tell me if i should
a) start learning 5 anyways
or
b) wait till 6 is released, because going from barely having a grasp on 5 and then trying to learn 6 would just confuse myself?
i realise that all the perl5 code in the world won't suddenly cease function the minute perl6 is released, but still..
I can see the value in perl, and what a great tool it is, but for some reason i have a hard time wrapping my lil brain around it. It's a bit less "structured" or "consistent" than say C is. I suppose it has to be that way in order to do what it does, though.
do() || do_not();
"hideously ugly" and "Perl" in the same paragraph? Who would have thought!
"Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
Perl 6 is *insane* .. the kind of thing that is either the work of a genius or
.. I'm sick of "(?:..)" and other confusing add-ons.. and 2)
a madman. Or both.
I used to really like Perl, but these days I'm writing bigger and bigger
programs using interpreted languages. Perl is *really* getting on my nerves.
I'm not waiting for Perl 6, I'm writing all new code in Ruby (or Python if
Ruby doesn't have the needed 3rd-party libraries).
Ruby is what Perl *should've* been, and what Python will be in a couple more
versions (it got popular before they finished designing it, it seems).
I'm sure Perl 6 will be like getting a blow job from Larry Wall himself, but
I've had enough of Perl's community and their "cleverness". I want languages
that help me write programs, not that are good for writing haiku in.
However there are two things I"m looking forward to: 1) better regular
expression syntax
a common runtime between perl, python, and ruby, that way I can use all sorts
of libraries in my code, no matter what the language I happen to be using.
Since the article is slashdotted, I have reprinted the text below:
$_
taken! (by Davidleeroth) Thanks Bingo Foo!
With such bloated and obscure syntax in both the language and regular expressions, why do you think Perl 5 has become so popular? Once you've written a few programs in it, it is ULTRA EASY, ULTRA FAST and not hard to remember. An experienced Perl programmer could probablyl do almost any text processing task in a third of what it would take an expert C++ programmer to do. All of the bloat and lack of orthogonality and "bad design" paradoxically makes Perl 5 a fantastic language to program. I hope Wall doesn't mess this up...
While no one would ever accuse Perl of being single minded and focused, until Perl5 it was a fairly coherent language.
I understand that Perl6 is supposedly an evolution of the language, but there are so many suggestions for so many features and changes that the language itself seems to suffer from the too many cooks problem. With everyone and their brother suggesting features, the language itself becomes a mish mash of these features without a central theme tying it all together. Even if you said that DWIM was the central theme, can you really justify that when WIM is not what the language does because the feature that I'm using was designed by someone who had a completely different idea of what he meant?
In the past Perl has added functionality that was useful and you can see where the language has its partitions. Base Perl (datatypes, simple arithmetic, simple string manipulation), nested datastructures, regexes, OO, and so on. While admittedly a mess, each addition to the language brought more power and ease. Perl6, OTOH, seems to be adding feature after feature without regard to whether it makes the language easier to use, only more powerful.
So you end up with a new interpreter that won't run your old scripts without modifying the scripts. At the very least it should automatically default to Perl5 syntax unless otherwise told to use Perl6 syntax. Unfortunately, in the push to evolve, Larry and Damian (and the rest of the lunatics) have foregone automatic backwards compatibility.
I'll probably migrate, but not for a while.
I have been pwned because my
IIRC it's possible to write OpenOffice macros in Perl (Though it probably takes some nasty hacked API to do it). And of course, given how easy it is to embed a Perl interpretter into C apps (possibly moreso with Parrot) then there's really no reason why it can't be used for game scripts.
If you want the real scoop on the on-going planning of Perl 6, you might want to check out Larry Wall's Apocalypse articles: 1, 2, 3, 4, 5, 6. On the down side, they are dense. Very dense. For that reason, I actually recommend Daimon Conway's Exegesis articles: 2, 3, 4, 5, 6. They provide alot more context on what the changes actually mean to you and why they're good.
Search 2010 Gen Con events
This pic says it all
Exactly why does a properly designed language need core revisions every year ? I thought that was what libraries were for!
This is not a signature.
Why do we use Perl every day? Because Perl scales to solve both small and large problems. Unlike languages like C, C++, and Java, Perl allows us to write small, trivial programs quickly and easily, without sacrificing the ability to build large applications and systems. The skills and tools we use on large projects are also available when we write small programs.
I'm not a Perl hacker by any means, but after the possibilities are endless, and I don't think Perl will ever die.
CB
free ipod and free gmail!
I've been waiting with great anticipation for the new perl release for years, having picked it up, while I was a systems adminstrator for Unixops at the University of Colorado. I've since been living and breathing perl, whether it's via Mason in the perl scripts that run my website, as an aid to data analysis in my research, or for one of the many command-line scripts I've written over the years.
My current favorite is ren-regexp, a utility which allows the renaming of many files on the command line using one or more regular expressions. I look forward to rewriting it with the future additions and modifications to regular expression in Perl 6.
Michael.
Linux : Mac
(perl[6] == "Great") || die;
and I just learned Perl in class last semester. dammit.
And if you can't get past "the whitespace" thing in Python, then that's too bad; be an Ruby-using elitist.
Now, without further ado:
Python! -- Tastes Great!
...
Ruby! -- Less Filling!
Python! -- Tastes Great!
Ruby! -- Less Filling!
Python! -- Tastes Great!
Ruby! -- Less Filling!
Java! -- Job Security!
Cypher: Oh that's not encryption... It's a new Perl script I'm working on...
The Matrix Bastardization.
user...
.NET runtime engine? If so is the plan for it to be as robust as the JVM / .NET runtime: i.e. could the same type of applications that people are building for Java / .NET be just as easily built with Parrot?
.NET to become without the "what are those bastards going to do to the platform" stench.
Is Parrot something akin to the JVM /
If I'm reading all of this right Parrot may well become everything Sun wants Java to become / MS wants
Of course, if I have the wrong end of the stick here I apologise. Perl isn't my strong suit.
I'm amused to see that the name 'Parrot', originally coined for an April Fool's joke over at O'Reilly, has now been used to christen the bytecode interpreter for Perl 6. Life imitating art I guess.
As for the 'extreme makeover' ... I hope it loses a bit of the excessive punctuation ...
[ UNSIGNED NOT NULL ]
these regular expressions were not "powerful enough for many data-parsing tasks
I will be the first to applaud Larry Wall and the Perl developers if they can clean up regex. However, I feel tinkering with a notoriously complex thing may make it worse. Or at best, may make more of an ugly thing. What we don't need is the new unreadable way and the old unreadable way of creating regexes. What fun it will be to debug code.
Frankly, how can you increase the power of regex and minimize the complexity of code. If you make regexes more powerful, you might as well make another high-level language for text processing. Let's hope they can pull it off.
Frankly, I for one like the power of Perl's regexes and I hope they succeed.
What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
Why does everyone say perl syntax is so damned ugly? Appearantly, they haven't seen C code written by someone with a "I'm a C God - Complex". I agree with some of the other posts here, it's only ugly if you have never used the language before. Write yourself a script or two and you quickly catch on.
In fact, it's just like ANY other language (programming or spoken at that), it looks foriegn (go figure) until you put a little effort into it and figure it out.
JM2C
- Mike
Does this spell the end of bad perl syntax jokes???
You are so boring that when I see you my feet go to sleep.
Perl was first released in 1987. Y'know, I could've sworn the internet already existed back then...
(especially since Perl was released in a post to alt.sources)
Repton.
They say that only an experienced wizard can do the tengu shuffle.
Perl like that?
That sroucks, dude!
Finally, remember that most other Perl programmers will be in the same boat as you are in learning the new language, so Perl 5 should remain well supported for some time to come.
It's something in between 'rocks' and 'sucks', and maybe even both at the same time. Because some things, even when they rock, suck.
But you need srouckness to get that.
Larry, you need to get an alpha out in 2004 (even if all of the Apocalypses have not been published) or I think you are going to see people lose interest in perl 6. In the time between Apocalypse 1 and today, the mono team have basically cranked out an entire development environment of excellent quality.
Signed, an eight year perl programmer and major fan.
I don't like indentation mandated by the language.
A few points to ponder ..
You've all heard the "you can write unreadable code in any programming language" argument, so I'll spare you the repetition.. (No, wait.. I didn't, did I? ) *grin*
But also bear in mind that Perl is the first language that I know of that used the foreach construct in the same form as the more sought after languages.. Java has iterators and enumerators, but they introduced a foreach because it is darn easy to understand.
Perl innovated in regular expressions. Even Jeffery Friedl's Mastering Regex (sic) says that other languages aspire to be called "Perl 5 compatible" when they don't necessarily support all the features of Perl 5.6". Love it or hate it, regular expressions are like the microwave in your kitchen. Once you get used to it, it's darn hard to manage without :)
I am not going to go into Perl 6 the moment it is released. But I guess that's ok, because I didn't adopt 5.8 the day it was released either. I just think that Larry Wall has made enough good calls in the language so far, to be worth trusting him for another version. Even one that promises to break some of the idioms that I am accustomed to in it's present incarnation. Hey, I didn't like Perl 5 when I first saw it either, but I notice the difference in my productivity when I got the hang of things.
I have a small involvement with Parrot (e.g. I've contributed a few small, insignificant things, mainly fixes for Win32). It's not vaporware, it's just that designing a stable, efficient, multi-threaded virtual machine that runs on a wide range of different platforms isn't an easy task. You can go and do a CVS checkout of Parrot now and play with some of the toy compilers, or if you use Windows grab yourself the Parrot On Win32 compiled version:-w /
http://www.jwcs.net/developers/perl/po
The 0.1 release may be coming by the end of this month - and if this release isn't 0.1, I'm pretty sure the next one will be. That means Parrot has objects, some of the threading stuff is in place, JIT is working on various platforms and more. There's a lot of hard work going in by a lot of very good developers (not me!), and I'm confident that Parrot will be completed and will be a hot target for dynamic languages.
I can't believe that nobody's challenged this statement yet. Somehow I don't think that Lisp or Prolog aspire to Perl 5's expressions...
If Perl user's hadn't created the annual Obfuscated Perl contests, people wouldn't say such mean things about how the code looks ... Uh, no wait, isn't there one of those for C too? Well, if Perl had come along after the flaws in C++ were arround long enough to become really apparent, like Python ... Whaddya mean, it did? Uh, If Perl was distinguishable from line noise, people wouldn't say ugly, so there!
Who is John Cabal?
Extreme makeover, nah.
Qeere Eye for the Perl Guy.
They probably meant "the world wide web" instead of the internet, and "rapid expansion" rather than initial contruction.. :)
Perl/CGI played a huge part in the early days of dynamic web programming.
I am struggle with some wild-ass C code right now trying fix some old bugs. C can be as ugly as Perl anyday.
One cool feature of Perl is introspection - or the ability to display the current symbol table of the name space (ie package) you are trying understand (ie %main::).
I was very excited about Perl 6 when Larry started releasing apocalypses. I really hate to say it, because I'm as big a fan of Perl as anyone... but at the current rate, we're not going to see a full specification (much less implementation) of Perl 6 anytime in the next 15 years. There have been 6 apocalypses in the past 3 years, and there are supposed to be about 30 in all.
:-) It's just not useful to anyone if it doesn't exist.
Perl has a long history of being practical and useful rather than theoretically perfect, and it makes me sad to see the trend reversing with Perl 6. It seems like Larry is trying to make Perl 6 everything to everyone. That's one sure way to fail (although TMTOWTDI, of course
Use Ctrl-C instead of ESC in Vim!
Redundant bitching: Redundant means that the post or something close has already been made earlier in the discussion. Since this was the third post - highly unlikely. Checking the two posts before confirms this.
As far as the joke goes, it's an old joke by egg troll that seems to have made its way around. If you had a factory that made characters, and it blew up, and there were characters everywhere... that would be Perl code.
God, someone shoot me for explaining that.
I think it takes big balls to admit that you were wrong and what you made sucks, especially when you add that you will fix what sucks...
No, I mean like:
..pales in comparison to...
...in addition to the mailing lists.
Doc
Something a little more thorough.
http://www.perldoc.com/
Unit Testing
Not just wrappers, but something a little more thorough and mature like say from executable to module.
Unit Testing
Library Repository
http://raa.ruby-lang.org/
http://www.cpan.org/
Portability
[Acorn] [AIX] [Amiga] [Apple] [Atari] [AtheOS] [BeOS] [BSD] [BSD/OS] [Coherent] [Compaq] [Concurrent] [Cygwin] [DG/UX] [Digital] [DEC OSF/1] [Digital UNIX] [DYNIX/ptx] [EMC] [Embedix] [EPOC] [FreeBSD] [Fujitsu-Siemens] [Guardian] [HP] [HP-UX] [IBM] [IRIX] [Japanese] [JPerl] [Linux] [LynxOS] [Macintosh] [Mac OS] [Mac OS X] [MachTen] [Minix] [MinGW] [MiNT] [MPE/iX] [MS-DOS] [MVS] [NetBSD] [NetWare] [NEWS-OS] [NextStep] [Novell] [NonStop] [NonStop-UX] [OpenBSD] [ODT] [OpenVMS] [Open UNIX] [OS/2] [OS/390] [OS/400] [OSF/1] [OSR] [Plan 9] [Pocket PC] [PowerMAX] [Psion] [QNX] [Reliant UNIX] [RISCOS] [SCO] [Sequent] [SGI] [Sharp] [Siemens] [SINIX] [Solaris] [SONY] [Sun] [Symbian] [Stratus] [Tandem] [Tru64] [Ultrix] [UNIX] [U/WIN] [Unixware] [VMS] [VOS] [Win32] [WinCE] [Windows 3.1] [Windows 95/98/Me/NT/2000/XP] [z/OS]
User Community
A little more world wide and established.
http://www.pm.org/
So, what were you on about again?
From the parent parent parent poster. "Ruby has almost all of the power of Perl, with none of the ugliness" isn't quite a fair statement, considering Ruby is lacking or behind on almost everything else Perl is superior at. Ruby is still playing catch up, and depending on who you ask, can also be considered ugly.
No.
...is the duct tape of the internet.
Long-term, Parrot hopes to be at the core of not just Perl 6, but also Python, FORTH, and what-have-you. Then applications could support Parrot, and users could script the applications in their favorite language. Python users could call into Perl CPAN code. That sort of fun thing.
Parrot's home page is: http://www.parrotcode.org/
The Parrot FAQ is worth reading. There are some really entertaining sections. One of my favorites:
Another:
So, my next question was: if they want to become the core of languages like Python, what does Guido van Rossum (the architect of Python) have to say about that? A few google searches later, and I found an interview at linuxfr.org, which contained this:
steveha
lf(1): it's like ls(1) but sorts filenames by extension, tersely
Spitbol could do things like:
- stringtomatch "this is some text" skipto("(") $ pre_paren ( funcof(pre_paren)$parenmatch = replacement(parenpatch) )
In this case, the $ is an immediate assignment of the match from skipto("(") (roughly equivalent tofuncof is then called with the newly assigned variable (pre_paren), and it's result is inserted as an expression to complete the match.
then whatever matched funcof(pre_paren) is replaced by the results of replacement(parenmatch)
skipto is a builtin, but funcof and replacement would have to be user-defined (and they can be defined on the fly).
Perl6 appears to have similar functionality, but (IMHO) I don't think it's going to be quite as nice as the SNOBOL syntax.
Unfortunately, I'm not good enough at compiler design to write my own spitbol interpreter, or I would.
The one problem with snobol is that it was created before the idea of structured programming came along, so it is goto-structured... (although somebody then came up with ratbol which was essentially a preprocessor to provide RATional structure to snoBOL)
Free Software: Like love, it grows best when given away.
Parrot will be a virtual machine like the JVM and .NET runtime, yes. This means you can call functions and use objects from code written in the various different languages that target Parrot, compile stuff to bytecode that will run wherever Parrot will compile and more. Like .NET and JVM it uses JIT techniques to provide fast code execution.
.NET/JVM is that they are more targetted towards statically typed languages. Languages like Perl, Python, etc that are likely to target Parrot are dynamic languages. This isn't just related to dynamic typing, but also to dynamic languages needing their parsers to be available at runtime. You can also do more stuff at runtime that non-dynamic languages would prefer you didn't. Parrot is designed with this in mind, which means it can offer these sorts of languages better performance.
.NET bytecode to Parrot bytecode convertors, but I'm not sure how much speculation that is. I'm not really certain how easy it'd be, though my initial guess is "not very".
The main difference between Parrot and
I have heard things along the lines of JVM and
Hope this answers some of your questions.
If the programmer is disciplined and well organized, the code will be disciplined and well organized. If the programmer doesn't value readability, then the code will not be readable. People like to take pot-shots at Perl, but they should really be aimed at Perl programmers.
I second that. I had to learn Python because I was doing some massive string manipulation and comparison. Perl was spending hours on what Python took 20 minutes with. I'm sure my code could have been better, but I couldn't tweak it anymore, so I read up on Python. Had a working program in a few days. I sure spent more time on Python trying to figure out where various nested loops end.
Understanding is a three-edged sword. -- Kosh Naranek
a) Ruby uses brackets or end statements to delineate blocks, not indentation.
b) Why would anyone have a problem with this? Python code is remarkably easy to read and modify, primarily because there are no block delimiters to deal with. Maybe your editor is faulty?
Actually with Ruby there are so many ways to lay out the code that {}s are too simple. No, I don't expect you to understand without first trying out Ruby and seeing codes from others. Yes, I am a big fanof Ruby. Python indentation and syntax sucks to much for me.
There is an automatical fallback to perl5 mode.
After he used it to create the Internet, he traded it to Larry Wall in exchange for a blowjob and a bag of crack.
If you're looking at code *you wrote* for over an hour without understanding it, you only have yourself to blame. Unless you're coding in brainfuck, I suppose.
tch
cLive ;-)
-- Trinity in high heels carrying a whip: The donimatrix - there is no spoonerism
I hope you meant
($perl[6] eq "Great") || die;
because == compares its operands as numbers, with "Great" evaluating to 0.
aQazaQa
Larry Wall is a god, his core Perl dev team are demigods, and I'm very excited by all the goodies in Perl 6. But I have to wonder...if 6 is going to break so much existing code that it needs a hack to be backward compatible, why not just release a new language? What's the point of holding onto the name Perl but not the reality of running existing Perl code?
When all you have is a hammer, everything looks like a skull.
It is better to startover than to try and modify a perl script.
Ninety nine percent
of the Perl Haikus will not
Apply anymore
Abandon Perl! Python is the future!
Larry Wall never met a feature he didn't like. Ever. It just got to the point where he had to revamp his language's syntax to fit them all in. :P
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thank you very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goat.cx. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD^H^H^H^H Perl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter.
merl
That's right. merl. You see, 'n' is the first consonant that preceeds 'p', but "nerl" sounds stupid, so we move on to the next reasonable choice (nobody likes the letter 'n' anyway). "merl" sounds more like the name of a cute girl, and since merl would be easier to understand, more forgiving, and less demanding, she would become quite popular among young bachelors churning out code late into the night.
Ever read 'King Solomon's Ring' by Konrad Z. Lorenz? Most hilarious description of a jackdaw rookery ever. Konrad had a rookery of young jackdaws he wanted to tag for monitoring. Jackdaws teach each other to hate and despise anything ever seen holding a jackdaw sized black flapping thing. He dons an old devil costume so they won't know it's him. Climbs up on his roof and starts grabbing and tagging. Looks down to see a crowd of townsfolk staring up at a devil on his roof surrounded by a flock of angry black birds. Not as funny when I tell it, so go read the book, it's hilarious.
My opinion is that anything that makes programs to design is a Good Thing. One problem I've always had with Perl is that when you sit down to do something significant, you run into all kinds of options. An embarrassment of options, really. Options that allow you to do the same thing several different ways, so there's no reason to choose one way over another.
This is what makes Perl so great for little knock-off scripts, but it can never be a serious contender for serious jobs because no two people have a reason to agree on how to accomplish any given complex task. Code readability is out the window. Transfer of knowledge goes down as TCO and maintainability goes up. The object of Perl's game was to provide an extremely terse way to do little things...but let's keep in mind that terseness only works to deal with the little problems.
Having said that, if the new release can maintain Perl's legacy and give us a way to encapsulate terse solutions to small problems, but in a structured, regularized way, then we might just get the thing we need. Done correctly, any big problem can be sensibly solved in the new Perl by breaking it down into a bunch of little problems. Each little problem solved tersely, understandable on its own, connected together with a somewhat less-terse but sensibly high-level structure...sounds like most OO solutions to me and a good thing for Perl.
sev
but have you considered the following argument: shut up.
Well, the only valid point on your list is the large selection of Perl libraries. But that's like saying Windows is better because thousands of programs are available.. depends on your definition of "better" I guess.
For instance, docs and unit testing are pretty much the same in Perl, Ruby, Python, PHP, Java... I mean ruby has unit testing, and Perl has Test::Unit which works (though not as elegant due to Perl being strongly typed!). I'm not sure what you mean about "wrappers"?? Perl doesn't even ship with xUnit-style testing libraries.
One great think about Ruby community though, is that it's still small and friendly. The Perl and Python communities are full of people trying to show off.. it gets old after a while.
Indentation is not a reason to hate the language. For example, commercial software companies have style guides that all their code *must* stick to.
There's no difference here, the goals are the same. Any mechanism that can help to improve readability of code is good. It means that programmers write using a decent layout from day 1 of using the language. If your code ends up in indentation hell, perhaps maybe you should have used some functions and you should restructure your code?
There are also Python editors that include whitespace and indentation markers (IDLE and Pythonwin) - try one of them if you're having problems with indentation readability.
absolutely no competition. perl is fugly, even perl 6 :)
Hmm... dynamic language support.
I wonder if we ever see a Haskell and Lisp compilers that target Parrot - I hope we do. I've found a native-code Haskell compiler but I might prefer Lisp - I just haven't found an open-source native-code Lisp compiler. Parrot might be a small stand-alone app, suitable as a small runtime environment.
Well, since everything seems to be scalar and list and everyone uses map and grep, Perl is a functional language in a very good disguise =)
Bill Cosby: "I don't understand why people would choose to do cocaine in the first place. So I asked someone, and he said, 'because it enhances your personality.' And I said, 'OK, but what if you're an asshole?'"
Shop as usual. And avoid panic buying.
CmdrTaco wrote: "PurdueGraphicsMan writes "There's an article over at Yahoo! about the upcoming version of Perl (version 6) and some of the new features (RFC list). From the article: "Although Perl 5's expressions are the most sophisticated available and aspired to by other programming languages, "no one pretends for a moment that they're anything but hideously ugly," said Damian Conway, a core Perl developer and associate professor at Monash University in Australia."""
Four levels of quotes; fun...
-- If no truths are spoken then no lies can hide --
my girlfriend told me the other day while we were in bed... "come on baby, give me a perl necklace... a facial... a makeover!"
...and i did just that
my blog
So, you're saying that Perl 6 is either the work of a genius or it's a madman? Scary thought.
Shop as usual. And avoid panic buying.
Is Parrot something akin to the JVM / .NET runtime engine? If so is the plan for it to be as robust as the JVM / .NET runtime: i.e. could the same type of applications that people are building for Java / .NET be just as easily built with Parrot?
On a related note, you can already write Perl that targets the .NET runtime: Visual Perl, from ActiveState.
How Politicians Lie: http://www.factcheck.org/
semi-OT:
do you know how to make vim bounce between the beginning and end of a block in Python?
I miss being able to sit on a "{" and bounce to the "}" by hitting the percent key when I edit Python.
It's quite possible we'd see compilers for these languages in the future, yes. You just need someone crazy enough to implement it. :-)
As for functional language style stuff, Perl6 is going further than way, at least in some aspects it is. I've heard curried functions and lazy lists are to be expected. Perl has never had any problems taking the best bits from various paradigms.
What more to say ? Any real engineer has a "toolkit" of languages they use to put things together: I find "shell" to be glue, and "perl" to be rapid production of do-anything using CPAN modules. That's perl's niche.
As for performance, well, in my experience the slick, hackerish ways of doing things often slow things down more than the explicit-using-more-lines way of doing things.
Amen. I think this is because the interpreter / VM is usually optimised for the most obvious way of doing things. If you try and improve the performance of your code with tricks and shortcuts, you're basically trying to outsmart the Larry and the other internals hackers.
Vino, gyno, and techno -Bruce Sterling
Here's an idea: get over it. It isn't that big of deal, and either choice is vastly more readable than perl.
Let the flames begin!
There is much pleasure to be gained in useless knowledge.
I'm not sure how "Healthy, readable code with sensible naming conventions and a clear structure" explains to you at a later date why you coded as you did. If you had to write something that looks out of place to deal with some legacy code you inherited, I'm sure you'd psychically pick that up just by glancing at the code. Or perhaps you go round naming vars something like $quirky_flag_to_pick_up_strange_situation_caused_b y_bad_code_in_package_X?
And what if someone less experienced than yourself has to maintain your code at a later date? Something that may seem obvious to you may be off of their radar.
If you never have to ask why and no one less intelligent than you ever looks at your code you either are very very lucky, very stupid or unemployed.
.02
cLive ;-)
-- Trinity in high heels carrying a whip: The donimatrix - there is no spoonerism
No, silly. I know more perl than that. I do things like this:
print STDOUT ("Foo" . "\n");
Visual Perl requires the Perl Dev Kit to create .NET or ActiveX components.
Well, the only valid point on your list is the large selection of Perl libraries. But that's like saying Windows is better because thousands of programs are available..
Not quite analagous, because that also means your definition of "better" for Ruby is like saying MacOS is better because there are fewer programs available.
For instance, docs and unit testing are pretty much the same in Perl, Ruby, Python, PHP, Java...
I must have screwed up my terminology. The unit testing I am referring to, is the built in stuff that comes with the Perl build process, the module build process, etc. Perl is second to none in testing. I would agree Perl, TCL, and Java docs are similiar in completeness. When I say complete, I mean documentation on how to embed and extend is available, is thorough, and all the intricacies are spelled out. Ruby, Python, and PHP are lacking. For example, at my command line I can type: perldoc perlxs, perldoc perlapi, perldoc perlembed, perldoc perlguts, and I have 10x more information about the innards and what is going on than the other languages.
The Perl and Python communities are full of people trying to show off.. it gets old after a while.
Not sure what you mean by show off. Ruby coders seem to be just as desperate as Python coders to demonstrate how their language is almost as powerful as Perl. When Ruby clutches the title of being the swiss army chainsaw in the industry, I think Ruby too, will have a reason to "show off".
One great think about Ruby community though, is that it's still small and friendly.
One awful thing about the Ruby community is that they pipe up about how they are almost as good as Perl whenever Perl is mentioned.. it's offtopic, untrue, and gets old after a while.
No.
i thought the usual punishment for confusing rifles and guns was to get the privilege of cleaning out every gun on base with a cleaning kit made for rifles...
a ,Twas we, the k5 O - Your mistake /|\ players, not our | We credit egg troll /| with the funny. /|
a O ascii enactment <|> however is understandable.
a
a | predecessor.
a
a <O I AM NOT
a ( \ DEAD.
a X I was just resting.
a 8===D
open4free
*whew* Since I'm running Debian Stable I wont have to worry about learning Perl 6, till Perl 7 is ready to hit the shelves.
Your hair look like poop, Bob! - Wanker.
Hey, I took the time to learn vi and it's still ugly... Emacs, OTOH...
No, seriously, I just come here for the articles.
$barfly == Open($forme) || Die;
I didn't even know it existed. What books/resources should I read if I'm going to stick with perl 5?
"Although Perl 5's expressions are the most sophisticated available..."no one pretends for a moment that they're anything but hideously ugly,""
Nothing new here...
s/perl/python/ig;
There has been no progress in the Ponie project for at least 6 months. Its development is essentially done in a closed environment without external participation. Ponie, Parrot, Topaz - same shit, different day.
Parrot will run Parrot code faster than any Parrot VM.
.Net"
Wait - I have a new opcode you can throw in:
BULLSHIT Sx
example usage:
loop:
BULLSHIT "Parrot will be finished in our lifetime."
BULLSHIT "Parrot will run Java bytecode."
BULLSHIT "Parrot will be faster than Python."
BULLSHIT "Parrot will be faster than
BRA loop
lameness filter won't let me space the comments neatly, but I'm sure you get the idea.
.02
cLive ;-)
-- Trinity in high heels carrying a whip: The donimatrix - there is no spoonerism
You Missed IPSO... Nokia Operating system
Where the fuck is that link to Gay Niggers From Outer Space on Bit Torrent ?
Thank god threading is at the top of the list.
I've been a perl programmer for six years - I still use it daily - but perl5's support for threading absolutely blows. There are plenty of modules for whipping together a multithreaded TCP server, but no reliable way to share a resource such as a database connection pool between those child threads. Have had to put at least one project on indefinite hold due to this failure.
I assume its that oldskool anti-threading anti-OO attitude. Perl5 still isn't compiled with threading support by default and it breaks a tonne of modules and apps when it is.
Perl6 can't get here soon enough.
No, I did not read the f***ing article!
ASCII Factory?! ASCII is so 20th century! Haven't you heard about the new Unicode operators like @aX+<<Y@b (where X and Y are French quotes (those little >> and <<) which Slashdot can't handle)? I kid you not.
"no one pretends for a moment that they're anything but hideously ugly," Does he mean the lines of code or the programmers themselves?
Hmmmm... I'm sure he couldn't have possibly meant the new sort syntax he just sent few hours ago to perl6-language mailing list:
Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. [it should be turned off in Perl rlated articles] Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Important Stuff: Please try to keep posts on topic. Try to reply to other people's comments instead of starting new threads. Read other people's messages before posting your own to avoid simply duplicating what has already been said. Use a clear subject that describes what your message is about. Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) Problems regarding accounts or comment posting should be sent to CowboyNeal Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Important Stuff: Please try to keep posts on topic. Try to reply to other people's comments instead of starting new threads. Read other people's messages before posting your own to avoid simply duplicating what has already been said. Use a clear subject that describes what your message is about. Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) Problems regarding accounts or comment posting should be sent to CowboyNeal Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Important Stuff: Please try to keep posts on topic. Try to reply to other people's comments instead of starting new threads. Read other people's messages before posting your own to avoid simply duplicating what has already been said. Use a clear subject that describes what your message is about. Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) Problems regarding accounts or comment posting should be sent to CowboyNeal Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Important Stuff: Please try to keep posts on topic. Try to reply to other people's comments instead of starting new threads. Read other people's messages before posting your own to avoid simply duplicating what has already been said. Use a clear subject that describes what your message is about. Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. (You can read everything, even moderated posts, by adjusting your threshold on the User Preferences Page) Problems regarding accounts or comment posting should be sent to CowboyNeal Lameness filter encountered. Post aborted! Reason: Please use fewer 'junk' characters. Lameness fi
If it gets the job done efficiently, I couldn't care less how "ugly" the code looks.
IMHO, Perl 6 is merely an employment continuation program for perl authors and training consultants. 5.8 doees more than everything I need and other languages fill in where perl is lacking (thr right tool for the right job and all).
"I'd rather be a lightning rod than a seismometer." -Ken Kesey
I admire the great Portability and if you are looking at www.passport.net there is even a commercial link 2 activestate.com
I had made many TK-perl appz (on win XP) compiled with Visual Studio 7, and everything is running fine on *unix and mac.
The module section on cpan.org is amazing.. and as a sample php has only made a bad clone with pear.(I had less pain in tk-perl then using html+dhtml to be compatible with the above 3 OS.)
Hey and most of it is FREE. - (So stop it blaming on module incompatiblitys)
Some additional links:Komodo activestate.com is in my opinion one of the best editors and debuggers in this world. (Beside the new web package manager is a little bit buggy, but everything else works fine... And be sure to take a look at the great regex evaluator.)
And of course dont miss Larry Wall "O'Reilly Perl Programming" or Programming Ansi C by Brian W.Kernighan and Dennis M.Ritchie
Eighter i think you couldn't be a good unix admin without the knowledge and the module section of pe(A)rl.
Of course, design is THE most important part of a good system. Dan is doing a good job .... especially with more than 1000 instructions to the system compared the piddling .NET's instruction set.
And parrot is portable unlike Novell Mono (which JITs only on x86).
There's one thing that I dont see on the list (Mod python). But I think that even with MP's inclusion, Python lacks the depth and quality of CPAN for web server integration. There is no simply no comparable resouce for usable tested code in Python like Perls CPAN.
client sidePython integrates into gui's better. This something (currently) where perl sucks really (being embedded). Python also runs on windows extremely well. This is somthing Perl via Activestate tries but has yet to pull off. For some everything requires a hammer. For me it's python on the desktop, perl at the server.
peterrenshaw ~ Another Scrappy Startup
If they're really serious about Perl becoming an all purpose mainstream language and not just a mickey mouse lashup for doing scripting why
don't they just release a proper compiler instead of messing around with technology-of-the-month virtual machines? Yes VMs have their uses but compiled code
generally beats VMs (even JIT VMs) so why not have that as an option?
That's a really good point. Speaking as a Rubiac, I apologize. The decision to use Ruby seems so obvious to us - it'll make you more popular in school, re-grow hair, give you an Atlas body in just days, etc. . . - that we assume if someone isn't using it, well, they must never have heard of it! At this point, though, and certainly on Slashdot, we've done enough preaching that it's probably safe to assume any given person has heard about it, and made their own decisions already. Shutting up about it now, sir.
> I have heard things along the lines of JVM and .NET bytecode to Parrot bytecode convertors, but
n al s/3867
>
> I'm not sure how much speculation that is. I'm not
> really certain how easy it'd be, though my initial
> guess is "not very".
Actually, a JVM -> Parrot converter was already done (well proof of concept) about 2+1/2 years ago now:
http://www.nntp.perl.org/group/perl.perl6.inter
Huh? Hideously ugly? WTF? I find Perl to be the most beautiful language around. I bet you can't write so cool poems in other languages. Perl was designed to look like natural language. In fact I really like languages that look somewhat like perl (PHP for instance look like a mix of perl and C).
They should be replaced by something better, such as Xerox' Extended Regular Relation Calculus: Here are some examples.
The nice thing about it is that it's fully declarative and bi-directional, i.e. a:b can be applied substituting a by b or vice versa (if run backwards), whereas the traditional
pattern-action paradigm that Perl has inherited from awk is only partially declarative (only the pattern).Another interesting property is that xfst, one of Xerox' compilers, allows naming and re-use of subexpressions:
(all without any ugly '$'sAbstraction by naming is a powerful feature, as Abelson and Sussman (SICP) and other good elementary textbooks point out.
Maybe anybody wants to volunteed to build something like this into Perl6 instead?
alt.sources is (kind of) part of Usenet, which were initially build upon UUCP, and entirely unrelated to the Internet.
...wasn't it going to save the net or something ;)
A more concise variant is: s/(\s+)\([^)]*\)/$1/g
A possibly unintended consequence of all examples (that is best exposed in the last one) is that they do not preserve balancing of parenthesis. To remove only pairs of parenthesis that do not contain other parentheses, use: s/(\s+)\([^()]*\)/$1/g which may be nested.
> Although Perl 5's expressions are the most sophisticated available and aspired to by other programming languages
;)
Hey, you young ones sometimes forget the power of ancient programming languages. Check out APL some time
If you're looking for an open source native code lisp compiler, google for SBCL, CMUCL, or OpenMCL. There's also ECLS and GCL that compile via C. The only modern common lisp system that doesn't include a native compiler of any kind is clisp... For a lisp-head, this whole slashdot discussion is deja vu all over again, with all these people discovering for the first time the idea of a dynamic language with an integrated compiler. Good luck for them...
Object-orientation is primarily a design philosophy and only secondarily a language feature. If you want to write object oriented code, make your data structures contain the algorithms that process them -- this is very easy to do in Perl since Perl has first-class functions.
You don't have to call something an "instantiation of a class" to use it as an object: simply have it contain its own message handling methods and pass it messages.
All's true that is mistrusted
The first fucking time around!
Larry Wall please put the crack pipe down and create a syntax and structure easy to maintain. Jerking around with Parrots and Ponies is a joke. This is exactly what we need more CRAP to go into the clusterfuck called CPAN...
Anyone ever try to use perl cpan -e through a restrictive firewall.
Better yet has anyone trying to get a open source package using Perl to ever compile without access to CPAN?!?!? Fuck PERL in it's fucked ass!
I seriously had no idea that perl could do OO. thanks.
http://www.interactivetools.com/iforum/P15734/
;-)
cLive
-- Trinity in high heels carrying a whip: The donimatrix - there is no spoonerism