Perl 6, Early, With Rakudo Star
Perl 6 may have been "finally coming within reach" in 2004, but now it's even closer. Reader rnddim writes "The Perl 6 implementation Rakudo Star has been released today for 'early adopters.' This release of Rakudo is different from the normal monthly compiler releases in that it is bundled with a draft of a Perl 6 book, and several modules. It's not complete, and it's not as fast as it should be, but Rakudo in its current state is proving to be usable and useful. Rakudo Star releases will come monthly or as major features or bugfixes are made. It is available for download at github.com."
Calling anything whatsoever that involves Perl 6 'early' is the funniest thing I've seen in weeks.
Ice Cream has no bones.
$$][/^&]l/:^$& :&}::*'%'''^';^;
(To prove my point, the Perl that powers Slashdot told me I hit the junk filter. The ironing is delicious.)
The Welcome Rakudo Star post on the new Perl.com explains some of the motivations for the Star releases and why this is such a big milestone for all of Perl.
how to invest, a novice's guide
Considering that Python 3 scripts are being written, I see no reason to doubt that Perl 6 scripts will be written too. Perl may not be trendy anymore, but I am sure that there are still people writing new applications in Perl.
Palm trees and 8
More computers are available in the hands of more people today than at any other time in recorded human history. More novice programmers exist now than at any other time in recorded human history. What worry about sheep stealing from other languages (as if programmers or novices can only ever use or learn a single language at a time) when hundreds of millions of people could write useful programs?
how to invest, a novice's guide
This is going to be huge! Every application that comes out for the next 10 years will use this I predict.
Just an FYI: I eat paint chips.
Why? Even if some sort of statute of limitations prevents you from learning new things, the rest of the world suffers no such malady.
(That's setting aside the fact that a Perl 6 released in 2001 would not have included amazing features such as roles, grammars, constraints, multidispatch, and autothreading hyperoperators. "Minimal benefits" indeed!)
how to invest, a novice's guide
The GPL does not require you to make your changes public, stop spreading the FUD. You are free to keep your changes private, just as much as you are free to do so with the BSD and MIT licenses. The only difference is that the GPL requires you to make the source code available to everyone you give the program to under the same license. You are not required to distribute your program to anyone, you are only required to follow certain rules if you do distribute your program.
Palm trees and 8
It's flexible, powerful, and easy to extend. 84,296 modules are freely available from the CPAN (at least when I checked; the upload rate is staggering). It has an immense culture of quality and testing. It's amazingly portable. It scales from the freshest novice writing baby Perl to large-scale applications which must not fail, written by experienced professionals. It's malleable; you can program in a compiler-checked subset of the language or express yourself in the most clear or (if you don't care about maintainability) the most expressive, creative way possible.
It has amazing libraries for network access and databases. It sets the standard for text processing. It's been an integral part of usable Unix installations for years. You can find it just about everywhere, and you can do just about anything with it.
how to invest, a novice's guide
Considering that Python 3 scripts are being written, I see no reason to doubt that Perl 6 scripts will be written too.
Well, Python 3 is pretty much just the same old Python with some nifty new features added and a couple of long-deprecated "mistakes" removed. Perl6, OTOH, is almost a completely different language from Perl5. People are going to have a bit of a learning curve if they're planning on transitioning to this new version.
Perl is still a great language for processing text, and plenty of people are still writing new Perl programs. The main reason Perl is not trendy anymore is that its strength, text processing, is not as relevant to the trendy programming styles use in webdev these days. Perl's syntax is weird and lends itself to unreadable code, sure, but I have seen horrible code in a lot of other languages and programming models.
There are still plenty of text processing tasks to be done, and Perl is still strong for those tasks.
Palm trees and 8
Rakudo Star includes a PDF of the Perl 6 introduction book; the print version should come out late next month. Moritz Lenz's Perl 5 to 6 article series is always informative and useful. The official Perl 6 site's documentation page links to current and accurate documentation.
how to invest, a novice's guide
A subtle but scathing point! I apologize and amend my comment: hundreds of millions of literate people could write useful programs.
how to invest, a novice's guide
Why? Even if some sort of statute of limitations prevents you from learning new things, the rest of the world suffers no such malady.
(That's setting aside the fact that a Perl 6 released in 2001 would not have included amazing features such as roles, grammars, constraints, multidispatch, and autothreading hyperoperators. "Minimal benefits" indeed!)
Minimal to perl's real audience: sysadmins.
I would wager that 80%+ of perl coders are Unix/Linux sysadmins. That's certainly where I've seen the language most widely used. By the time something is big enough to be a real development project - or it comes from a natural "a developer writes this" angle - people are usually working in python or ruby.
Time was when perl was a web development language. Slashdot - created in 1998 - is an example. But few people start a new web project in perl. (Yes, I'm sure you're jumping in now to paste URLs....I said few people, compared to php, python, java, ruby, etc.). Desktop GUI programming in perl? Can be done but rarely is/was. Glue code? Sure...tying together things and using DBI, etc. But mostly perl is used for system things, not application things.
I love perl. But it has never outgrown its roots as a log-processing utility. Yes, sure, you can do all kinds of amazing things with it - talk to DBs, write GUIs, handle web CGI, OOP, etc. But few people do that. HTML::Mason (perl's answer to php)? Sure, you can find some older sites where it's rooted in their ecosystem (e.g., Amazon), but not many people are firing up new HTML::Mason projects. How many books were published for HTML::Mason? One. CakePHP has at least four and Ruby on Rails has God knows how many, which gives you an idea of mindshare, and those are very new frameworks. Heck, even symfony and CodeIgniter have books. Not that I'm endorsing them, but how many new perl books have been published? Where are the great perl-based frameworks? Perl is a systems utility language. Not many new books are published on bash or awk these days, either.
BTW, what languages can you program in for the Google App Engine? Java and Python, not Java and perl. Who did Google hire? Guido, not Larry. Next language to be added to GAE? Probably Go or maybe php. Perl is not on the radar.
Again, I love perl. Used it since 3.x-something. Coincidentally, Damian Conway's Object Oriented Perl is sitting two feet from my monitor as I type this. But who really does large OOP projects in perl? There's a book on php design patterns, for pity's sake, but no one has publishedone on perl. There is a wiki, but to me that speak volumes (no pun intended) about where the developer mindset is.
You can say that's unfair, or short-sighted, or just crowd fashion. Fair enough. But people vote with their eyeballs.
So no, I don't think most people care about perl6. Most people who use perl don't do more than open a file, run some regex, and maybe make a DB connection.
Advice: on VPS providers
It seems like the current way to be hip in developer circles is to make fun of Perl.
I really want to understand this phenomenon as I doubt most of these people bashing Perl have never even seen any Perl code written in the last 4 years. Hell, I could bet that a lot of people have never seen any *real* Perl code at all.
Perl 5 is a modern language which has the features of other currently more trendy dynamic languages and more. We have modern web frameworks. We have robust database bindings and state-of-the-art ORM libraries. We have have a well-tested modern object-system with optional declarative syntax. Perl is used by several high profile sites which, at this point, everyone already knows (BBC, DuckDuckGo, Slashdot, etc).
Perl 6 is a different language but shares a lot of the common minds behind all these awesome Perl 5 tools. However, even if you don't like Perl 5 for whatever reason keep in mind that Rakudo Star is a completely different thing (as a matter of fact, the name "Perl 6" should probably be dropped in favor of Rakudo - to avoid all this cargo-cult).
Nonsense.
They're significantly different from Haskell's typeclasses, Haskell being a language which tends to avoid the OO paradigm.
I've never used SML or Scala. Can you modify the grammar of the language in place?
Does Haskell offer parametric pattern guards?
Indeed it has, and no one familiar with languages would claim otherwise.
That process sounds much more manual than Perl 6 hyperoperators.
Even if that were true, so what? (Mature poets steal.) My point was that a hypothetical Perl 6 released in 2001 wouldn't have had those features.
how to invest, a novice's guide
I'll do you one better: it's hearsay supported by anecdotal evidence. The existence of one Mason book versus a hundred PHP/MySQL books is evidence of... publishers. Larry's not working at Google is evidence of... he turned them down. Did you know that the top Perl books sold still outpace the top Ruby and Rails books sold?
You're welcome to argue that your perceptions and feelings add up to evidence of something, but "Languages which hipsters with ironic facial hair hack in coffee shops in San Francisco" is a very small data point, even if you could measure it accurately.
how to invest, a novice's guide
Only Python comes close to having anything resembling Perl's level of testing. (Ruby's improved a lot thanks to Rubinius, but to my knowledge the latest stable releases don't include test suites.) PHP's testing was abysmal, last I checked.
None of those languages have anything like the CPAN, despite saying for years "We should build something like the CPAN."
None of those languages are as malleable as Perl 5; see MooseX::Declare for example, or even Moose.
PHP is still easier to deploy for web programs than Perl. Python has an advantage with GAE, and I understand Ruby has something called Heroku.
Healthy communities flourish from the healthy interactions between and cooperation of many individuals. If you thought Larry's job was to make sure that everyone is happy and doing exactly what he thinks they should do, you've never understood Larry or the Perl community.
how to invest, a novice's guide
I don't know. My interest lies in doing other things with Perl 6. I'd like to see a minimal hosting environment for Perl 6 applications based on something like Parrot bytecode, but we're not quite to the point where we can bundle an entire application, run it in its own memory space, and offer sandboxing and other limits.
(I agree completely about PHP's advantages in the cheap shared hosting world.)
how to invest, a novice's guide
The first time I wrote any serious code in Perl 6 (five years ago), I had to look up a few pieces of unfamiliar syntax, but the whole experience felt very comfortable. Perl 5 and Perl 6 share the same essence, the same perlishness.
how to invest, a novice's guide
Care to elaborate?
One would think the meaning is obvious, but I'll spell it out: the vast, vast majority of code is developed to be used in-house. A tiny, miniscule fraction of code "is written with the intent of releasing an application to the general population."
"Convictions are more dangerous enemies of truth than lies."
From someone who worked there 2 years ago- mason and Java are in totally different places and not competing with one another. The backend is dominated by C++ and Java. Mason was never used for backend- it's a front end concept. And it's widely in use there by the front end. I don't know of any front end code written in java or JSP. For frontend mason wasn't going anywhere, it was too easy to integrate perl with the middleware stack to talk to backend services. There wasn't any way as of 2 years ago to do that with php, python, etc. THey may end up using a different framework than mason, but it'll stay perl due to that.
I still have more fans than freaks. WTF is wrong with you people?
In the old days the people that used perl were mostly script kids and because there wasn't much else on the web for doing fancy server stuff. All the resources at the time pointed to perl this perl that, because it was the easiest path. Nobody bothered to fire up the c compiler and write their CGI programs that way. This was the mid to late 90s and at that time object oriented programming was starting to pickup steam with C++ and Java. For that time, perl was certainly a competitor but all languages still carried major faults.
A few years back I was browsing through job listings for perl positions and not surprisingly there weren't many. I had also done some Java based stuff so I also took a look at the Java positions. But most of the positions available were PHP positions and maybe a few Python positions here and there. Ruby was available but still too new to be in use; I didn't see any Ruby positions.
Between the interviews the surprising thing to note is the Java positions were largely big corporate based things and people would grill you on the intricacies of Java instead of talking about what the job really was about. It was very not personal, not that it needed to be, that's just the vibe I got. The perl interviews still grilled you but I noticed a huge difference in the demeanor of the interviewers. They were much humbler Maybe it was the fact that perl5 really was that big of a pain therefore made you humbler as a software dev or maybe it was the fact that they couldn't find any *good* perl developers. Anyway, I also made it a point to ask the perl shops why they chose perl. The answer is largely the same, "we were stuck with it". Somehow, someway, perl was chosen and nobody wanted to rewrite everything just so they could use ruby or python. After all, the language is a tool, not necessarily the actual solution.
The huge difference was, the perl people of today were no longer the script kids of the 90s. They were actual software engineers. Perl was typically just one piece of the puzzle and they were using a bunch of technologies together to get to their solutions. Meanwhile the Java shops were hooked to whatever the latest framework happened to be. At the PHP job listings seemed tailored to script kids. All kinds of widely varying positions from full blown systems to cheesy scripts for some person or small website. So to me it seemed that PHP slurped up all of the script kids that perl once was popular for and Java was still trying to be fashionable (not sure why).
Sure I understand your point and accept it; people today, right now, don't care about perl6. But not all of them are sysadmins. Some of them actually are legitimate software houses.
Now will all of these people move to perl6? That's a tough question. I sometimes ask myself if that would be a good business decision. For the business, having readily available devs for your language of choice means more candidates available to hire. In that sense Perl6 and even Ruby aren't good choices. You will definitely be forced to use what is mainstream if you are a seasoned or senior developer. The risks in using a new cutting edge technology aren't worth it if you don't need the cutting edge features to implement your solution.
But I don't doubt that history will repeat itself and some young software dev will make the same age old mistake and proclaim "we should use *this* because it is the newest and it is cool." That is after all how Ruby and Python got their starts. Some sort of fancy project called Ruby on Rails got a lot of publicity and suddenly everyone was interested.
Perl6 does have a lot to offer that is cutting edge so it does have a chance. Take a look at the PDF and the Regex Grammars section where they implement JSON in a few pages. And it isn't in "one liner" style. It is in true language grammar style just like everyone learns (or should learn) in their compiler studies. That's at least worthy of something.
I am also *very* interested in the perl6 object model as it seems to understand objects in a
As a fairly skilled computer scientist I absolutely hate Perl. I recently inherited a perl project that was fairly large and fairly complex and had to really dig into the more complex parts of perl with it. The biggest problem with perl is it's readability and the fact its a "do what I mean" language that rarely does what you mean. If you've rarely dealt with shell scripting, the logic behind the syntax for it is nearly non-existent. It has a massive learning curve, which is probably why they sell so many damned Perl books. The worst part about perl is that its difficult to look up how things work online. Perl's insistence on using special characters instead of words makes things difficult to read, understand, and look-up, and the number of special exceptions to things make things damned impossible at times when something is syntactically correct and yet still doesn't work right. I've found an amazing number of websites give simple incomplete examples for Perl. For example one popular reference website lacks a lot of useful and common parts of perl, like something as basic as getline.
:r & :x {...}
Trying to remember what specifically was wrong with Perl; issues that eat up hours of time the first time you encounter them or when they aren't freshly in your memory:
having a $1 instead of a $l.
Arrays of arrays. Hashes of hashes. References to hashes of arrays... etc. Then pass them into a subroutine that is part of a class.
Using the debugger.
Trying to understand someone else's regular expression
a mysterious $_ in someone else's uncommented code
A class's function's reference. WTF does "can't create sub Main:: " mean? If I can call the function why can't I reference it?
Trying to use parenthesis to change precedence only to accidentally create an array instead.
Not knowing that parenthesis can create an array
Trying to create a naked hash
Thinking my $a, $b, $c = @something; is the same as my ($a,$b,$c) = @something;
Coming across the heap corruption bug in IO::uncompress in earlier versions
Not knowing how to typecast using squiggly brackets
Not realizing the requirement that arrays and hashes be typecasted after being dereferenced from a reference
Trying to read from standard input
Trying to write to a file
Not understanding the difference between print and printf
Not being able to slice a substring from a string
Not being able to index a character in a string
Trying to use a class like you would in C++
Trying to use a $ when it should be a @ or vice versa.
Trying to see if a file exists
Trying to use @somearray to get the number of elements, as directed by a website, only to get the array instead. (i.e. not knowing about the scalar keyword) Trying to read a line of Perl out loud
And more...
And Perl 6 doesn't improve anything at all. Be ready to do some legitimate stuff that won't do what you thought it would do... all over again!
Some of my favorites:
Was: $#array+1 or scalar(@array)
Now: @array.elems
The easy to read __FILE__ is now $?FILE
Was: $str =~ m/^\d{2,5}\s/i
Now: $str ~~ m:P5:i/^\d{2,5}\s/
Was: if (-r $file && -x _) {...}
Now: if $file ~~
Yes sirree, they really helped improved the shortfalls of Perl. It really was not $$bugprone.enough(@{($confusing, $hardto$read)}).
http://wiki.catalystframework.org/wiki/sitesrunningcatalyst
That's just those using Catalyst (a popular Perl based Model View Controller system) but if you glance down the list you are going to see some huge sites with big, big traffic loads. All new stuff, things launched within the past two/three years max. BBC iPlayer alone is one of the heaviest hit sites on the web, and that's Perl.
So you are wrong in your guess that "80%" of Perl programmers are sysadmins writing cron jobs. Whoever modded you up should have done a bit of checking, because marking your opinion as insightful is highly inaccurate.
There have been several new Perl books written just for Catalyst in the past two years, so just because you are not finding anything new for Mason (which is probably not the framework of choice for the modern Perl programmer anyway) that is not much of an indicator. There's tons of FREE docs and examples for Perl in any case (http://search.cpan.org/)
As far as Google's lack of commitment to Perl, well, I'm sorry to hear about that, but that's one company. Google Appengine is a pretty small garden, and the Perl interpreter has trouble running under its confinement. To be honest, Python doesn't run everything under appengine either, you need to write code for appengine. I think getting PHP or other languages to run under it will be equally difficult.
If you want to program in Perl on the cloud you have a ton of options, such as EC2, Rackspace cloud and pretty much any cloud provider with an open system (not Appengines walled garden) Oh, and if you want a smarter search engine, trying http://duckduckgo.com/, which is written in Perl and I find more useful than Google search.
I realize that the Perl community needs to do a better job showing that we are not stuck in 1998, so I forgive your lack of knowledge in this matter. I do actually appreciate the opportunity to discuss it, since this is really the only way this perception problem with be solved. However I hope you can meet me halfway and do a bit of checking on modern Perl before you make such sweeping judgments again. Because to be honest this exact opinion you've expressed I've seen over and over again for several years, and it's totally different from what I see everyday, as a fulltime, highly paid Perl programmer for at least 15 years. Take a look at Moose (http://moose.perl.org/) if you think Perl's OO is lagging, or Plack (http://plackperl.org/) if you think Mason and mod_perl is all we have, for example. Our community is smart, diverse, highly active and strongly focused on the next 20 years of Perl.
John Napiorkowski
Peace, or Not?