Perl 6 Grammars and Regular Expressions 202
An anonymous reader writes "Perl 6 is finally coming within reach. This article gives you a tour of the grammars and regular expressions of the Perl 6 language, comparing them with the currently available Parse::RecDescent module for Perl 5. Find out what will be new with Perl 6 regular expressions and how to make use of the new, powerful incarnation of the Perl scripting language."
Better asked at slashcode.com perhaps, but (Score:0, Interesting)
Big problem (Score:2, Interesting)
Meaning that it is not backward compatible without modifying your source code.
Note to those who are going to respond "Just install both!": look at the first line of your perl scripts.
wow, looks like boost::spirit (Score:4, Interesting)
Perl6---
# note this is just a language example, not an accurate name matcher
grammar Names
{
rule name
rule singlename { + };
};
C++::boost::spirit---
rule split = *(*space_p >>
(+graph_p)[append(tok)] >>
*space_p);
msg "Parsing input\n";
while (!header_ok && getline(input, line) && input.good())
{
tok.clear();
parse(line.c_str(), split);
There are even grammar classes in Spirit.
I sure hope perl6 is faster!
Re:Ok, start the flame wars under this post (Score:3, Interesting)
But anyway none of that is really here nor there, but I just wanted to comment that Perl "scripting" isn't just CGI forms and stuff like that. You can really do complex applications in Perl. It's a full-featured language, portable (moreso that even Java, just look at the list of archs in the Configure.sh script), and able to handle most tasks that don't require a tiny memory footprint or direct CPU register manipulation.
It is about time to change the name from (Score:2, Interesting)
Adoption (Score:5, Interesting)
Note to those ready to mod me Troll/Flamebait: I'm not trying to pick on Python, I just happened to be acquainted with this candid quote.
Re:Why would a satisfied Perl5 user migrate? (Score:5, Interesting)
Yeah, Perl 5 hasn't changed that much over time. But it has been around for a while. Perl 6 is just different.
From what I have seen from the announcements, the Perl 6 syntax looks far cleaner, probably more consistent and less ugly. Some of the new tricks look genuinely handy. For example, if it seems like type checking would be a good idea, you can have it if you want it, even on compile time!
Especially the regular expressions side seems pretty interesting, as noted in this article. Regular expressions have always been a poor but effective replacement for grammar-based parsing, and now finally Perl is going to have both integrated. There's probably going to be less whining about line noise.
And then there's something that I find especially interesting, though it hasn't been explained in detail yet: Complete tuning of the object system. In case you haven't noticed, Perl 5's object system is a complete and utter mess that looks and smells like it has been added as an afterthought, and rest assured it's going to be changed radically for better in Perl 6. I'm definitely waiting eagerly to see what Perl 6's take is going to look like - I sure hope it's something like Ruby, only it smells like a camel =)
You're a language bigot (Score:3, Interesting)
(I'm a recovering language bigot so I can say this. :-P )
Re:An anecdote and an opinion. (Score:2, Interesting)
foreach $line (@data) {
chomp $line;
my ($x, $y, $z) = split(':', $line);
update_coords($x, $y, $z);
}
Re:An anecdote and an opinion. (Score:3, Interesting)
When I started to learn Perl (coming from a C background) I had quite a different experience. I really felt I had "come home", or something like that. Sure, you can write obscure code, but that's no different from C. But you don't have to, it can be very clear.
I'll give credit to the fact that perl is compact, terse, to the point and has a reputation for string manipulation.
I just love it for the short development times, and the fact that you can really use it for just about any environment. Want to do CGI? Sure! Just GUI? No problem! Connect to about every database there is, that's no biggie.
And what about CPAN? That's a part of Perl too! You get all that ready-to-run code for just about any problem domain.
IMO, "the right job" for perl is about 2% of all programming tasks out there.
Maybe you are right, but somehow I get a lot of those 2% jobs... ;-)
Now you have to excuse me, I have some perl coding to do! ;-)
Re:An anecdote and an opinion. (Score:1, Interesting)
Not so. I think of Perl as akin to the language lovers speak...to the mindless observer, there is no meaning...to the observant, one can never predict what will happen next...to the couple, it's pure passion.
Re:Yes. (Score:3, Interesting)
Re:Perl goodness (Score:5, Interesting)
Let me guess.... the usual Perl backlash (Score:5, Interesting)
Yes, it does include a lot of symbols, but there is payback to learning them, and really most programs won't use much beyond $ % # () [] {}. Unlike some languages [java.com], Perl is not what I would describe as a 'bondage' language. If you want to program sloppy, you can program sloppy. That's fine by Perl. And this generousity is what gives Perl its bad reputation. This is funny since I and most knowledgeable Perl programmers can write perfectly clear and maintainable code. The way we do this is no secret--it's just by commenting appropriately, using meaningful identifier names and following the Perl style guidelines [cpan.org].
People can mock Perl all they like, but it is still a widely used powerful programming language and I am more productive in it than any other language. As a parting comment, a Cisco employee once told me (off the record of course!) that "Cisco would fall apart without Perl".
Re:wow, looks like boost::spirit (Score:4, Interesting)
Re:Why would a satisfied Perl5 user migrate? (Score:3, Interesting)
It features better support for key paradigms, including object-oriented
programming (finally, a real object model), functional programming (we're
getting continuations), and even some improvements for contextual programming.
In other words, Perl6 will be a substitute not just for Perl5 but also for
Scheme and Smalltalk.
Also, the whole Parrot thingydoo is going to allow software written in one
language to seamlessly use libraries written in another language, without all
the ugly messing around you have to do to accomplish that in Perl5. You'll
be able to construct a complete data structure in Perl code and pass it to
a library written in Python, for example.
Read the Apocalypse articles twice. The first time you'll recoil in utter
horror. (I did.) Then read them again, and you'll be very excited. I am.
The bummer is that we're still a while off from the release of 6.0
Re:Let me guess.... the usual Perl backlash (Score:3, Interesting)
The purist Computer Scientist in me loathes it. It is ugly, dangerous and has a weird botched together syntax.
Just as I self rightously convince myself of these self evident facts, some real cool trick saves the day and the wild inner hacker in me starts telling the CS part to stop being such a bore
Perl is a great language, though like all powerful tools it can be dangerous if misused. It is sometimes ugly, and just as often beautiful.
All that said, given the general trend within
You'll love this quote then ;-) (Score:3, Interesting)
"Much as I hate to say it, the Computer Science view of language design has gotten too inbred in recent years. The Computer Scientists should pay more attention to the Linguists, who have a much better handle on how people prefer to communicate."
--Larry Wall
Dangerous? (Score:3, Interesting)
In my experience (as a IT security guy) C and PHP are more dangerous than perl.
C - "runs arbitrary code of the attacker's choice" given _common_ stupid programmer mistakes.
PHP - developers fond of features that encourage bad/insecure ways of doing things - e.g. magic quotes, global track vars. Take away such popular PHPisms and PHP starts to look like perl
Re:Adoption (Score:3, Interesting)
Of course, the basic approaches to language design follow different philosophies (Perl's is one of inclusion, Python's is one of exclusion... both are valid). But I think in the final analysis both will be first-class citizens of the high-level language world for a long time to come, and the cooperation fostered by Parrot's runtime will help to ensure that.
ESR's problem with Perl is (and I've spoken to him at length about this) that it is easy to write bad code. I don't think there are many Perl programmers who would disagree with that. ESR's solution is to use Python. Valid choice. My solution (and that of many Perl programmers) is to write clean code, maintain it through CPAN and make sure Perl 6 makes it easier to write cleaner code. Again, a valid choice.