How to Learn Perl
modernperlbooks.com
modernperlbooks.com
Python and Ruby are sexy but they both feel like subsets of Perl to me.
I would hazard a guess (with nothing really to back me up other than a quick google search and my memory of the data I have seen presented on this subject in the past) that perl has a slight performance edge (cpu and memory) over python and more so over ruby. That isn't a great argument though, since they are all in roughly the same performance class.
I think the main difference between those three languages is cultural, rather than technical.
So to answer your question I guess I'd say: "Because you find the perl culture and community (and it's technical mores - such as it's approach to testing, documentation) more to your taste than the other languages". Basically if you prefer "TIMTOWTDI" to "pythonic".
But practically speaking, given the similarity between them, I'd guess you're likely to stick with the first of those you learn thoroughly, unless you change job or are swayed by "Perl is dead!/Perl is ugly!", "Ruby is slow!/Monkey patching is evil!" or "Whitespace-sensitivity is bad!/Broken lexical scoping is broken!" or whatever other clarion call washes through various blogs.
Personally, I really like the partial static checking perl does with strict mode on and I feel a little horrified that python doesn't provide that safety net (I don't know if Ruby does).
I know this is a dumb benchmark, but I think it backs up my general pt about performance above. (JVM/CLR implementations are interesting - are they widely used?)
python2.7.1: 2.0s
perl5.10.1: 1.3s
ruby1.8.7: 4.3s
python code below (perl+ruby are direct transliterations. Yes, there may be a more idiomatic way to write it in all languages, I'm trying to do a very simple apples-to-apples comparison of each languages dominant production VM implementation): total = 0
i = 10000000
while (i > 0):
total += i
i -= 1
print "total is ", totalPython is obviously plenty fast: Blender (3D modeling application) is written in it. There is also Twisted and all that other stuff.
>are they widely used?
My impression is that they are. The JVM is everywhere these days.
Could you give me some info on why you think there isn't a performance edge "these days"?
Or are you making the point that all these languages are "fast enough" and so a perf difference between them isn't important for real-world use?
> Blender (3D modeling application) is written in it.
I'm surprised that the performance-critical parts are in python. Do you know if the rendering etc is in python or is it at python UI on a C core?
I'm saying perl might be faster at some loop that adds 1s together, but ruby might be faster at networking and python might be faster at method calls, etc. When you weight it all together it equals out.
In other words, if you wrote a big enterprise trading application in all 3 languages (i.e. write it 3 times with the best practices of each language) and then only looked at charts showing various performance benchmarking results of the application I think you'd find all 3 very close in performance.
>Do you know if the rendering etc is in python or is it at python UI on a C core?
I thought it was last time I looked but I'm not certain.
Java might have been a good choice in this regard as well but our team was used to using Dynamic languages.
I would suggest that anyone looking at a particular language should consider what they want to achieve and then investigate the existing libraries etc to complete that task.
Having committed to using Perl we have had no regrets things like Moose and roles IMHO put it on par with Languages like Python and Ruby. Edit: Formatting
And if your only consideration is the size of the library, don't bother with perl. Java's library collection dwarfs it easily.
I've seen (and track) CPAN's numbers. Where can I see similar statistics for Java's library collection?
No, I'm not aware of a central CPAN-like repo for Java, so what?
If what you say is true, you should easily be able to provide hard numbers.
There is a long tail for libraries, too. That is, the sum of all seldomly needed libraries is big. So you will often find yourself in need of libs where you'll get a better hit rate on CPAN.