Larry Wall has approved renaming Perl 6 to Raku
619 points by Ovid 5 years ago | 439 comments- edflsafoiewq 5 years agoFrom what I could tell, Raku appears to be from Rakudo, the Perl 6 compiler, which is a shortened form of rakuda-dou (="way of the camel" in Japanese). Rakudo also means "paradise". The "raku" from "way of the camel" means "camel", while the "raku" from "paradise" means "fun" or "enjoyable" (or "music").
Incidentally, it also happens to sound similar to "roku" (="six").
- Sharlin 5 years agoThere was something strangely familiar about the word "raku" but it took me a moment to make the connection. In Finnish, "raakku" is a common name for the mollusc species Margaritifera margaritifera, better known as the… freshwater pearl mussel! [1] I'm really not sure if this is an amazing coincidence or yet another layer of linguistic brilliance.
- GolDDranks 5 years agoOh wow, I didn't know that, but I know that there is/was a band called "Raakku ja helmet". I always thought "Raakku" was a humorous nickname of the singer, because "raakkua" means "to cry like a crow", i.e. not so well. But "raakku" meaning "a mussel" brings a whole new level of meaning: "Mussel and the Pearls".
- GolDDranks 5 years ago
- rcthompson 5 years agoThis is exactly the type of linguistic naming shenanigans I'd expect from the Perl community.
- Grinnz 5 years agoIt is also a type of Japanese pottery. "Raku pottery is "imperfect but sophisticated", so that's a fit :)" https://colabti.org/irclogger/irclogger_log/perl6?date=2018-...
- zumu 5 years agoSo as a Japanese speaker, I don't think I ever would have made the 'raku' == 'rakuda' camel connection.
Also, while 'raku' is the reading for 楽, which connotes easy, simple and other good things, it is also the reading for a bunch of other characters--namely, 落, which means or carries the connotation of falling, declining or otherwise missing the mark.
When I see the 'raku' transliteration in the context of Perl, I think of 落. Not sure if that says something about my subconscious perception of Perl or not, but I can't help but think 'Raku' is a bad choice for the name of a language mired in indecision and falling from public favor.
On another note, I find the inclination of tech projects towards poorly translated Japanese words amusing. It nicely compliments the phenomena you see in the use of random English words for the naming of Japanese cars, condo buildings, and other 'prestigious' products. So if you find that ridiculous, you should find these 'Japanese' technology names ridiculous as well.
- Ultimatt 5 years agoRaku isnt falling from public favor, it hasn't made it yet. It's an entirely different language to Perl 5. Like the difference between C and C# or Java.
- zumu 5 years agoYea, sorry I'm not super familiar with the project, but that is the general vibe I get about Perl.
Interestingly enough 落(raku) also has the connotation of failure or missing the target, so not very auspicious in the context of a new language either!
- zumu 5 years ago
- 5 years ago
- Ultimatt 5 years ago
- wodenokoto 5 years agoRaku means happy, fun or relaxed: https://jisho.org/word/楽
Rakudo means paradise: https://jisho.org/word/楽土
Rakuda is a camel: https://jisho.org/word/駱駝
- tvaughan 5 years agoAnd back when we had to read books to learn a language, the definitive guide on Perl was called "the camel book." https://en.wikipedia.org/wiki/Programming_Perl
- pvaldes 5 years ago> Raku appears to be from Rakudo, the Perl 6 compiler, which is a shortened form of rakuda-dou (="way of the camel" in Japanese). Rakudo also means "paradise". The "raku" from "way of the camel" means "camel", while the "raku" from "paradise" means "fun" or "enjoyable" (or "music").
One of the worst problems for adoption of perl6 has been always overthinking. "Hey, look at my cool name" has never convinced anybody to use a computer language. Too many names.
Raku is a good name indeed. Like a promise of prune and simplify all the former zoo of names that could finally allow the people to focuse in the program
- coldtea 5 years ago>One of the worst problems for adoption of perl6 has been always overthinking. "Hey, look at my cool name" has never convinced anybody to use a computer language. Too many names.
You're overthinking it. I don't think those who came up with the names did so to, or cared to, convince people to use the language with them...
- pvaldes 5 years ago> I don't think those who came up with the names did so to, or cared to, convince people to use the language with them
Mission acomplished then, if we take a look to the low interest in people to massively adopt the language since it was released in 2015
- pvaldes 5 years ago
- coldtea 5 years ago
- earenndil 5 years agoMeanwhile, in hebrew, it means spoiled or decayed. :)
- cben 5 years agoThat would be Rakuv רקוב, just Raku doesn't have any meaning in Hebrew. It does sound similar when pronounced though.
(Hebrew word formation is from 3-consonant roots, not concatenation, so removing a letter doesn't give a related word. It's either an invalid word or a different root with 3rd voiceless consonant רקוא which is a not a root / רקוע Raku'a "flattened" but that doesn't sounds quite differently.)
- cben 5 years ago
- amptorn 5 years agoIt's a pretty good name I think!
- Sharlin 5 years ago
- kbd 5 years agoNaming matters. Nim changing from "Nimrod" matters. Cockroachdb's name is offputting. Perl 6's name has caused endless confusion and by itself sabotaged both Perl 5 and Perl 6. Perl 6 has interesting ideas but I don't even want to touch it because its naming issue is so toxic. I'm glad they're going to rename it.
- philwelch 5 years ago“Nimrod” is a funny case. In the Bible, Nimrod is a king and a mighty hunter. In Looney Toons, Elmer Fudd, a decidedly not-mighty hunter, is sarcastically dubbed “Nimrod”, and so the connotation is reversed for those of us who are first exposed to the name as a sarcastic jibe from Bugs Bunny rather than the name of a Biblical figure.
- pvaldes 5 years agoAgree. To name another example, I personally can't take seriously anything named 'webinar'.
Webinar is similar in spanish to the word huevina that means "egg beaters" (a replacement cheap and second quality). It sounds also like "web-vaina" (a vaina is "something" and specially used when something annoying happens) and has common roots with words like "huevín" (little testicle) and "huevada" (something irrelevant, lacking of any real interest and a total lose of time).
Definitely looks like something created to be dismissed. I can't thing in a worst 'hype' word for replace (without any real need or reason) the perfectly neutral and good old term 'videoconference'. Webinar is the kind of term that Ned Flanders would use.
- coldtea 5 years ago>Agree. To name another example, I personally can't take seriously anything named 'webinar'
Seeing that webinars have caught on like wildfire, become a multi-billion dollar business, and forced all kinds of eLearning and online platforms to say they offer the ability to produce/share "webinars", I'd say this is rather a counter-example.
I.e. more like "A few might find X or Y name off-putting, some outliers might even come with contrived meanings in unrelated not-exactly homonyms in different languages that supposedly would make a name unsuitable, but in most cases nobody really cares".
- exikyut 5 years agoI agree with you and the GP.
The execution, the thing, the multibillion dollar industry, are excellent, and the world would be worse for their nonexistence.
The naming, on the other hand, is indeed a disaster. I too can't take it seriously, although I can't quite put my finger on why as well as the GP can. To me it just sounds like the "lite" version of something, but to the extreme where it might as well be the toy version.
Yet another case of buzzword intolerance, it would seem.
- exikyut 5 years ago
- coldtea 5 years ago
- anonytrary 5 years agoIs there a TLDR on what's wrong with the name "Perl 6" for those of us who have zero context?
- sundarurfriend 5 years agoIt was not a version upgrade from Perl5, but instead practically a new language with some similar design principles. So the name was both holding Raku back by associating it with the warts of Perl5, and also holding Perl5 back because people assumed "Perl 6 was the upgraded version so why use the old one". People have been talking for a long long time that the language is different enough to deserve a different name, and things finally seem to have come to a head recently. As a Perl 5 fan and an early ~Perl 6~Raku enthusiast, I'm happy about this change, though it's almost certainly coming too late. Better late than never, I guess.
- takeda 5 years agoI believe the issue was that Perl 6 had too many changes that made it hard to convert apps from earlier version.
That created some kind of limbo where people weren't sure if they should use perl 5 or perl 6 (”why develop in perl 5, when it is probably a dead end and perl 6 is the future” and at the same time "why should I convert to perl 6, what if it will be a failure and I wasted my time?")
By renaming it, it revives Perl 5 so developent can continue, and at the same time Perl 6 is presented as a new language, now whichever wins will be based on its merit.
- Grinnz 5 years agoAlso, importantly, reflecting that they are in no more competition than Perl and Ruby are.
- Grinnz 5 years ago
- goodcanadian 5 years agoThe sibling comments aren't wrong. However, Perl 6 was originally intended to be the next version of Perl. For a long time it was vapourware, however, and development restarted on Perl 5.
When Perl 6 finally arrived, it was too much of a step change from Perl 5 to convince many people (myself included). Meanwhile, Perl 5 had continued to develop and was, in no way, in need of a replacement.
- alexmint 5 years agoPerl 6 sounds like a successor of Perl 5 but in reality it is a totally new language. Many long time Perl 5 users think a new name for a new language would have been better.
The name Perl 6 was damaging to the popularity of Perl because beginners were confused whether they should learn Perl 5 or Perl 6. The same confusion existed in Python: Python 2 vs. Python 3 but the Python Wiki was always very clear. Until a certain point, it recommended Python 2 and after Python 3 became very popular, it recommended Python 3. That sort of clarity was missing in Perl. Due to the number of new programmers learning Perl decreased rapidly and finally Python overtook in popularity.
- BrandoElFollito 5 years agoThid said, Python 2 vs 3 did not matter for a beginner. Beside print they would not see a difference.
I started to use Python when 3 was taking off. Did some code on 2 for a few months, then just swapped the interpreter without any modification of the code (beside print).
For advanced devs the story may be different.
- BrandoElFollito 5 years ago
- sundarurfriend 5 years ago
- coldtea 5 years ago>Naming matters
Not that much.
>Nim changing from "Nimrod" matters
Hardly.
>Cockroachdb's name is offputting.
Not enough to matter. They still raised over $60 million in funding...
Many people have internalized Marketing/SEO/enterprise-pointy-hair-boss thinking about "what matters", but in the grand scheme of things, naming is not really that relevant...
- Grinnz 5 years agoTo someone versed in both languages, no. Otherwise, the name giving official credence to assumptions that no longer hold is damaging to both.
- Grinnz 5 years ago
- philwelch 5 years ago
- mikece 5 years agoKudos for making this change! This is what the folks at Microsoft should have done when ASP became ASP.NET and ASP.NET became ASP.NET Core. I know... keeping the root of the name the same makes management think the technology is fundamentally the same (and, therefore, cheaper) but the SEO confusion trying to find the right version of an answer is a PITA.
Secondarily, while Perl has never appealed to me I am more likely to admit I'm checking out Raku because the chances that someone will ask me to look at and debug their cousin's friend's manager's Perl 3 CGI app is considerably reduced.
- seirl 5 years ago> Kudos for making this change!
Rakudos, even!
- seirl 5 years ago
- Upvoter33 5 years agoI'm amazed that Perl is still around. I personally find it the least readable language that I've ever used, and that includes a lot of languages. But some people really seem to love it, for reasons a bit beyond me.
- pmoriarty 5 years agoHow familiar are you with Perl, and how much have you used it?
Most of the anti-Perl comments I've heard have been from people who really didn't know it very well, if at all.
Some of them might have glanced at some Perl code and saw a dense regex and dismissed it as "line noise". Well, yeah, if you don't know regexes you would be forgiven for thinking it was line noise, but if you did know regexes it should look no more like line noise than a similarly dense regex in any other language.
For a long time now, Perl has allowed regexes to be commented. Commenting dense regexes and splitting them up in to short regexes assigned to judiciously named variables is just good style in any language, and has been the norm in Perl for a long time. Furthermore, modern Perl style guidelines advise code to be written with verbose, English words instead of ancient Perl one-character special variable names.
So setting aside both dense, uncommented regexes and ancient single-letter special variable names, both of which have been recognized as poor style in Perl for decades now, I'm really not sure what the complaints about Perl readability are about. To me it looks really no uglier than any other mainstream language, and one could easily make the argument that any other mainstream language you care to name is uglier in some of its own ways.
If you include non-mainstream languages, some languages which have a lot of fans here on HN are arguably a lot less readable than Perl to someone only familiar with traditional Algol-style languages. In particular, I'm thinking of Forth and Haskell. Yet you rarely hear complaints on here about their readability.
- j9461701 5 years ago>How familiar are you with Perl, and how much have you used it?
It's what my company's entire code base is written in. So every hour of every work day for the past 6 months.
>To me it looks really no uglier than any other mainstream language, and one could easily make the argument that any other mainstream language you care to name is uglier in some of its own ways.
It's no one thing, but a bunch of little things that compound on top of each other. Until you get something like this:
while (<>) { ($h{$_}++ == 1) && push (@outputarray, $_); };
Mostly though it's how it's used. It can technically do anything, so a lot of the times it is asked to do everything. Until one day you wake up to find you have hundreds of perl files, all tens of thousands of lines long, that all interconnect in an insane Object Oriented hierarchy soup stretching across every conceivable programming space - from database control to money processing to security to web site design.
- skinniks 5 years agoI've worked on large 20 year old Java and C applications (OLTP and batch processes) and I can assure you that they can be as ugly as any old Perl code you have dealt with.
Saying that I see absolutely nothing wrong with that perl code you are highlighting as being obtuse or ugly. Anyone who understands Perl should not have an issue with that line. It is clear and concise.
- kbenson 5 years ago> while (<>) { ($h{$_}++ == 1) && push (@outputarray, $_); };
That's a business culture thing. If you set the expectation, that it's okay to do that, people might do that. If you set the expectation that it's not okay, people shouldn't.
The equivalent C and Python are likely just as ugly (given that the equivalent python might be using a far too complex range statement or put it on a single line using : and ;, which is possible...).
That said, as bad code goes, that's not really that bad. The only non-standard things are <> and $_, and if you don't know what those are, you really haven't done the minimum of learning about the language (<> might be somewhat exotic in that form depending on the codebase, but $_ is not something you can get way with not knowing about). In all, the major problem with it is that it's not commented and uses poor variable names, which is something every language needs to deal with. I would write it like so if I wanted it on a single line (but I would probably use 2-3 lines):
But I would likely opt for the following if doing it myself:# Report each duplicated line once my (%lineseen,@linedups); # This was required in yours too right? I assume you're using strict... while (<>) { (++$lineseen{$_}==2) && push(@linedups, $_); };
Assuming I was using <>, which I generally don't since File::Slurp is usually available and clearer.# Report duplicate lines once my %lineseen; my @linedups = grep { ++$lineseen{$_}==2 } (<>);
- wumpus 5 years agoHuh, I worked at a company that wrote 1.5 million lines of perl together, and we never ended up with those problems. Maybe you picked the wrong co-workers? You can screw up in any language.
- weare138 5 years agoI have a decent amount of experience with Perl 5 and one of Perl's greatest features is also sometimes it's greatest liability, versatility. It's permissiveness tends to facilitate poor coding styles and methods which is why there's alot of bad Perl out there. Plus Perl 5 is just different for lack of a better term. If your proficient newer languages, Perl 5 and the Perl way of doing things probably seems a little strange.
- lenkite 5 years agoSeriously...? I last worked with Perl in college (more than a decade ago) and thats perfectly understandable to me. There is nothing un-readable about that code as long as you understand Perl conventions. The more important part regarding code quality was whether that piece of code was encapsulated into an independent function or a snippet of a wall of text.
You should see C++ Templates! Even the idiomatic examples in cppreference.com will blow up your head and require multiple re-reads.
- b2gills 5 years agoNote that:
Would be written as the following in Raku:while (<>) { ($h{$_}++ == 1) && push (@outputarray, $_); };
my @output-array = lines.unique;
- tangental 5 years ago> while (<>) { ($h{$_}++ == 1) && push (@outputarray, $_); };
We use Perl::Critic [0] to deal with issues like that. It has enabled us to develop a very consistent style, and helps new devs adopt to it quite quickly.
- 5 years ago
- skinniks 5 years ago
- commandersaki 5 years ago'x' is an operator...
- 5 years ago
- lilSebastian 5 years ago> Most of the anti-Perl comments I've heard have been from people who really didn't know it very well, if at all.
Indeed, I hope this thread gets picked up by http://n-gate.com/
- AlexCoventry 5 years agoYou are violating the prime directive.
- AlexCoventry 5 years ago
- j9461701 5 years ago
- Shoop 5 years agoEven if you never want to write any Perl code, I definitely recommend checking out some of the features of Raku. As someone who is interested in language design but never has (or likely will) use Perl for a project, I still found reading about Raku's feature set super interesting. Here's a whimsical slide deck that introduces a lot of the most interesting features: [0]. Even if you find yourself shaking your head at all the craziness, you at least have to admire Raku's success at fulfilling its goals of being a post-modern language optimized for fun (-Ofun).
- cutler 5 years agoI love Perl - the syntax, community, Larry Wall's writings and The Monastery. Occupationally I'm forced to write Ruby for a living these days but Perl's influence is there and enhances my appreciation or Ruby. I came into programming after reading in the Dreaweaver Bible that you could extend the search facility with regular expressions. Jeffrey Friedl's monumental Mastering Regular Expressions was listed for further reference and I was hooked. Perl was the natural language to learn if you were inspired by regexen and wanted to create dynamic websites back in the early 2000s so I sought-out Larry Wall's Programming Perl. That book is such a joy to read. I still dip into it today just for the quality of the writing ... and a little nostalgia.
Take time to really grok Perl and you may find the soundbite swipes at Perl don't make sense any longer.
- eruci 5 years agoJust because you can't read it, is not a good reason to hate it. But, as Larry says, "It is better to be hated by those who don't know you, than by those who do"
- theonemind 5 years agoI find programming perl fun inversely to program size and proportionally to the need to slice and dice text. I didn't learn perl until the perl 5 era, but from what I can tell, I would've been as satisfied with perl 4, before they bolted on OO and tried to expand the applicable problem domain of the language. I mostly just use it as a super-charged awk and bash replacement for scripting.
- tyingq 5 years agoThe bolted on OO is really just one new function...bless(). The rest is package namespaces, which are also used for non OO purposes.
I'm never sure what people don't like about OO Perl. There's a tiny bit of boilerplate in a constructor, other than that, it doesn't seem different from other OO script languages.
- hnick 5 years agoIt's not terrible to get working, but for many people a major point of OO is encapsulation and it doesn't work out of the box like that. You have to install another package or use the inside-out object model to prevent direct access to package variables and 'private' functions are usually by naming convention only.
It's just another example of Perl's biggest strength and weakness. Total freedom to build something amazing or shoot yourself in the foot.
- kbenson 5 years agoAgreed. Not to mention, from what I understand they just borrowed the OO system from Python, so it shouldn't be that foreign to most people.
- hnick 5 years ago
- tyingq 5 years ago
- GuB-42 5 years agoI also find it one of the least readable language. Or more precisely, the language that requires the most effort to be made readable. Every language can be made unreadable.
But it is also one of the most writable language. In Perl, for most problems, there is a quick and dirty way of addressing it. It is especially true when it comes to processing text files, the thing that Perl is best known for.
Many languages try to be clean and consistent, it is obviously good for readability, but it means that choices have to be made. Sometimes the best way is the "wrong" way and you have to fight against the language. Perl solved that problem by not having a "wrong" way of doing things, screw cleanliness and consistency.
Also, first class regex are awesome for quick and dirty text processing.
- takeda 5 years agoPerl gets a lot of flak, I am no fan of it, but frankly the least readable language IMO is bash.
- WheelsAtLarge 5 years agoTrue, it's very easy to make your code unreadable but other languages have the same drawback too. I would never pick it as the language for team projects. But with Perl you can really pack a lot of power into each line of code. It's hard to beat for scripting.
- 5 years ago
- h1d 5 years agoSeems you've never used shell scripting.
- pmoriarty 5 years ago
- natch 5 years agoThis is great news both for Perl and for Raku. I will probably bother to take a serious look at Raku now, sometime, if anything just for curiosity. Why not before? I have no good answer for that.
But my main worry about it is that I suspect it has brought along with it the community's dysfunctional fascination with over-the-top cleverness and arcane constructs. I'll probably stick with Python and Perl 5 on an as-needed basis, but Raku will be fun to look in on for brain stimulation.
My best case hope is maybe it's clarified some things! Like having an agreed on best practice for how objects are implemented, that would be nice.
- ergothus 5 years agoI was a Perl dev a long time ago, and I think it made me a stronger coder. I still miss it, and I've not coded Perl for real in a decade.
You're correct about "over-the-top cleverness and arcane constructs" being a problem, but it's also about using code as communication. We code in _languages_, and on one extreme is coding newpaper style - lowest common linguistic denominator. On a good day this is a common, understandable language, and on a bad day it is trying to communicate with stilted baby talk. On the other extreme is dense linguistic cleverness. On a good day this is nuanced yet clear and informative, on a bad day it is James Joyce.
As coders we like to talk about using the right tool for the job, but in code we so often assume that the most stilted repetative pattern is always best. It often is - like newspapers, we can't (or shouldn't) assume our audience is well-versed in our material. But we have other constraints as well. I often argue in favor of _skimmability_ over _readability_ of code. That means that the attention/focus of the eye is important. Stilted languages with minimal syntax give you almost no control over that. More fluid languages like Perl give you a lot more flexibility. Learning to use that flexibility to increase clarity...for MOST people, not just for yourself...is a skill that most of us have only limited practice at, and none of us have mastered.
But it's a good idea to work at it, and when done well you communicate MORE with LESS, and it's something people notice because it's not buried in the midst of visual noise.
- tangental 5 years agoInteresting perspective there. Worth noting that Larry Wall trained as a linguist and "often compares Perl to a natural language and explains his decisions in Perl's design with linguistic rationale" [0]
> On a good day this is nuanced yet clear and informative, on a bad day it is James Joyce.
So true. I think Perl golf could be Samuel Beckett.
- codesections 5 years ago> On a good day this is nuanced yet clear and informative, on a bad day it is James Joyce.
If Raku's "bad day" is basically like "one of the most influential and important authors of the 20th century" (according to Wikipedia)… well, then, maybe I should check Raku out!
- tangental 5 years agoI think the reference was to languages in general. In James Joyce's Ulysses there are four or five chapters which all tell basically the same story, but written in wildly different styles - one like an ancient legend, another a 'stream of consciuosness', and so on.
- tangental 5 years ago
- tangental 5 years ago
- Grinnz 5 years agoPerl has pretty much coalesced on Moo(se) for this, though it's not core yet. And yes, Raku has a thorough core object system.
- petre 5 years agoWhy not before? Because Perl is you know, dead. Jokes aside, it's a pretty nice language apart from the !$double .@sigils. If I'd switch from Perl 5, I'd probably switch to Ruby, as Perl 6 oops Raku is quite slow.
- xisukar 5 years ago> ... apart from the !$double .@sigils
In this case, `!$double` isn't a sigil. `!` is just the old prefix operator for negating a value [1]. If you meant to write `$!double`, then it's the twigil [2] for class attributes [3]. Twigils could be considered as secondary sigils but they affect the scoping of a variable. In this instance, `!` is for class attributes and will only be found there.
As for `.@sigils`, I've never seen this syntax. I'm probably out of the loop in this one.
As an aside, sigils are one of Raku's interesting features. They convey information [4] that might not be easy to discern from just looking at the code. What kind of structure is this variable holding? Is it holding an array? A hash? A code object? What's the scope of this variable? Is it class-scoped? Is it dynamically-scoped? Is it a compile-time variable?
> ... Raku is quite slow.
This is a legitimate reason for avoiding the language. However, it's worth pointing out that Raku core developers have made great improvements to the language in the speed department since it was first officially released in 2015. They recognize there's a lot of room for improvement. [5]
[1] https://docs.perl6.org/routine/!
[2] https://docs.perl6.org/language/variables#index-entry-Twigil
[3] https://docs.perl6.org/language/variables#index-entry-$!
[4] https://docs.perl6.org/language/faq#Why_sigils?_Couldn't_you...?
[5] https://docs.perl6.org/language/faq#Is_Perl_6_fast_enough_fo...?
- petre 5 years agoOk, twigils, whatever. They're next to each other so they're double the crazyness. Like the $#last_index in Perl. In Raku the . and ! are used to designate a private or public variable within a class definition. I got it backwards, which sort of proves the whole point. Push a private array nested into another and you have a bunch of gibberish worse than in Perl, where you'd only prefix it with \. Use an auxilliary variable and it feels too verbose. OTOH @{$hash{array_ref}} dereferentiation in Perl is quite annoying. And no, $hash{array_ref}->@ is definitely not how you fix this mess. I agree that sigils offer some insight into what type of the variable you are looking at.
Great improvements are not enough compared to other languages, even Ruby which is quite slow itself. Have you wrote anything in Node, Dart or Lua? They feel like a F1 car where Raku is an 17th century cart.
- petre 5 years ago
- SwellJoe 5 years agoRuby is also quite slow. The last benchmarks I saw makes it pretty clear Raku has closed the gap with Ruby (at least the mainline C implementation of Ruby) on a lot of fronts, and is likely to be faster for many things in another year or two and the VM gets better at optimization. My google fu isn't up to finding those benchmark results now, but it's no secret that Ruby is pretty sluggish compared to Perl 5.
- yesbabyyes 5 years agoHere's a great talk from PerlCon.EU 2019 about Raku Performance given by Jonathan Worthington: https://perlcon.eu/talk/80
- petre 5 years agoI sure hope it will be faster because in my own tests it's slower than Tcl. And I've tested at least two releases a year since october 2016 when the stable Rakudo came out.
Ruby 2.5 has a jit which uses the C compiler to generate dynamically linked objects. It looks more like a workaround but it produces fast code. Then there's Jruby, Rubinius, Truffle, mruby. Crystal too, which is a different language but yet similar. No need to learn Go. Just take your Ruby background and pretty much start using it for writing Crystal.
- yesbabyyes 5 years ago
- 5 years ago
- xisukar 5 years ago
- MichaelMoser123 5 years agoHow much of a difference is it going to make? I mean nowadays most people are going with python, for better or for worse.
- ergothus 5 years ago
- rollschild 5 years agoI really wish the Perl 6 -> Raku change could let it catch up with other languages such as Python.
Edit: sorry for the confusion. I meant popularity-wise. I wish the change would clarify to people that Perl 6 and Perl 5 are basically two different languages and people should at least consider Perl 6 as an option when they start a new project.
- eddyg 5 years agoWhat do you mean? Perl6/Raku has some great features that make it much better than Python. In addition to no GIL, there's other advantages, like discussed here: https://techbeacon.com/app-dev-testing/why-perl-6-game-thron... and https://www.evanmiller.org/why-im-learning-perl-6.html
The features demonstrated in this talk are worth a watch (or at least a scroll through the slide deck): http://tpm2016.zoffix.com/
- resonantjacket5 5 years agoAssuming you mean rename the next version of a programming language — I think that’s a horrible idea. The entire point of continuing with the previous name is that eventually the community will move onto the new language. I’m guessing Perl 6 made too many incompatible changes from Perl 5 though I don’t know much about them.
- daotoad 5 years agoPerl 6 started out as a plan for the next version of Perl.
Over the years (announced in 2000, delivered in 2015) it evolved into a distinct language.
In the meantime, Perl5 suffered from the Osbourne Effect.
Meanwhile a rift developed in the Perl community. Some are for Perl 5 forever. Some are Perl 6 forever. Some Perl 5 people blame Perl 6 for Perl 5's perception as a dead language. Some Perl 6 people blame Perl 5's reputation for being "write only" and "dead" for difficulty getting people to try Perl 6.
IMHO, both sides are correct, both sides over-state their case.
Renaming Perl 6 has been discussed for close to a decade, by people who are Perl 5, Perl 6, and just plain Perl partisans.
It's been a difficult decision. Many people have worked very hard on both projects, and have strong feelings tied up in the issue. Important contributors to the projects have quit as a result the issues.
This isn't a change that was lightly made. It's far bigger than the Python 2 to Python 3 divergence. It's more like moving from C to C#.
- daotoad 5 years ago
- meesles 5 years agoI don't understand this comment. What needs to 'catch up'? They are vastly different languages with different philosophies, there's problems better solved in either language.
- rollschild 5 years agoI meant popularity wise.
- rollschild 5 years ago
- eddyg 5 years ago
- Ovid 5 years agoThis has been a huge deal for the Perl community.
First, it was thought that Perl 6 would be the replacement for Perl 5.
But it was long ago recognized that there was no clear upgrade path from Perl 5 to Perl 6, so it was agreed that Perl 6 was a "sister" language to Perl 5 rather than the successor.
Except that many people expected that Perl 6 would be the replacement, so that stalled many projects. So an "alias" for Perl 6 was created, but that didn't seem to help.
Larry has now agreed with the change and Perl 6 will be renamed to "raku" and Perl 5, which has regular, major releases every year, will now be able to simply be "Perl" and be free to continue on its own way.
If I had my choice, I'd program in raku because it's a lovely language addressing many pain points (including being one of the few dynamic languages with a working concurrency model). But it's not adopted widely enough yet for that to happen. Time will tell ...
- msla 5 years agoAnd this might save Raku.
Lisp has a social problem: It's been called Lisp too long. People look at some simplified LISP 1.5-esque thing in a programming languages textbook and see a "pure" language (which isn't so pure compared to Haskell, but the creep of what "functional programming" means is its own post) which is completely useless. They don't see modern Common Lisp with its package management facility and its packages which you can manage which provide actual functionality and its FFI bindings to external libraries and the fact it compiles to optimized machine code... no, they only see some parentheses thing which is interpreted-and-therefore-slow (you know... like Javascript on V8... ) and is too elegantly pure to be bound to the outside world. Meanwhile, all the Foogols get new names every couple decades (PL/I to Ada to C to C++ to Java to C#... ) so everyone knows they're completely up to date.
My point is, Perl is a tainted name, because everyone knows Perl is dead and Perl 6 is the Duke Nukem Forever of programming languages. Calling it Raku is a chance to get what the Perl 6 team actually did out into the world without the stench of death following it.
- ddaa10 5 years ago> Foogols get new names every couple decades (PL/I to Ada to C to C++ to Java to C#... )
+1 for Foogol. Reference to commercially obscure language but annoyingly influencial Algol?
- msla 5 years ago> +1 for Foogol. Reference to commercially obscure language but annoyingly influencial Algol?
Yes, even though I don't dislike Algol and the Algol syntax style, necessarily, I just wish they'd imported more Lisp influence sooner.
- msla 5 years ago
- cgh 5 years ago> Calling it Raku is a chance to get what the Perl 6 team actually did out into the world without the stench of death following it.
"Raku" = "cancer" in Polish. Not a lot of Polish enthusiasm forthcoming, I'd imagine.
- techcode 5 years agoI'd imagine that chances are high that whatever name you pick for something in one language - there would be another language in this world in which same or similar word means bad/offensive thing.
- janeroe 5 years agoAnd not just Polish, most (if not all) Slavic languages. What a perfect name indeed.
- Merg 5 years agoNo it is not. "Rak" is both cancer and crayfish in Polish.
- techcode 5 years ago
- Jach 5 years agoThe social problem of the name is less similar to Lisp than I think you're making it, but I do agree it is probably not a terrible thing in the end and could be considered good. I don't think it's going to be impactful enough to "save" or not save the language (as someone mentioned elsewhere, if you called Betamax by a different name, it's unlikely the ultimate outcome would have changed).
The reason I think it's not related to the Lisp issue is because the relation of Perl 5 and Perl 6 was like an unofficial successor with a compatibility mode, like C and C++, whereas the relations between Lisps that create the social problem you highlight of people not knowing about "Real Lisp" are the relations of very incompatible forks with varied functionality running around calling themselves "Lisps" or "members of the Lisp family" and people confusing that with "Lisp". (There were some "Perl 5/6, C/C++" types of relations in the path to Common Lisp like Flavors/CLOS but no one remembers or cares about those outside of Lisp users...) Another reason is the timing, why the name change now, years later -- it turns out Perl (5) is less dead or possessing a stench of death as you put it than people might want, it's still vigorous in its own rights, and so really it makes most sense to just call the new thing by a new name and not destroy both. (Larry's wineskin comment is nice.) The Python 2/3 situation is a closer analog if we counterfactually imagine Python 3000 came out with the current 3.7 feature set, syntax updates, and backwards incompatibility. Python 2 users (me among them) would still have dragged their feet, since Python 2 would still have been useful, still had its own vigor, the same as presently, but it might have resulted in renaming some later version of Python 3 instead of the current situation of renaming the continuation of Python 2 (Tauthon).
Going back to the lisp issue to further elaborate why I think it's not very related to this one, the languages that called themselves Lisp (not a Lisp, but Lisp or Some Lisp) shared a heritage going back to the original McCarthy Lisp. The merely "a lisp" languages used that for marketing, but were actually called something different (Clojure, Scheme, even Racket which has to further distinguish itself from Scheme). You see the heritage in the actual Lisp 1.5 manual, where one of the earliest examples should quickly dispel any illusions today about "Lisp's" supposed purity when they show the function 'length implemented with a program block and goto. By only modifying the top-level function define format and substituting ADD1 with 1+, the program works to this day in Common Lisp. For members of the lisp family that don't call themselves lisp, you're not going to be able to make such a trivial transformation, because there's no shared code heritage, just a vaguely shared s-exp-ness to the syntax. And right after that the manual describes the "pseudo-function" 'trace, which to this day is lacking in supposedly modern languages or requires a bunch of IDE ceremony to set up. It's present in CL and behaves the same, though. Continuing to call CL as simply Lisp seems pretty well-deserved.
The Lisp social problem then is that people run into members of the vaguely defined lisp family like Scheme (especially with SICP formerly being a common gateway for freshmen or HS students) or Clojure and confuse "a lisp" with "Lisp". They can spread their confusion further by releasing a project/blog like "let's write a lisp interpreter!" that can be understood correctly as "let's make a program that interprets code for a lisp¹" but tends to be misunderstood (sometimes even by the author) as "let's make a program that interprets code for Lisp".
Of course I also think this "social problem" is way overstated, especially these days when it's so trivial to dispel the old myths and when the gateways via Clojure or Racket are actually good in their own right and so don't leave the same impressions of "Lisp's a neat toy" that only seeing SICP Scheme could. But if people keep talking about the problem as if it is big, perhaps it will become self-fulfilling, hence my long comment in disagreement. ;)
¹ aka a member of the lisp family based on my vague membership criteria that probably don't even pass Steele's 3-part acceptance test in https://www.dreamsongs.com/Files/HOPL2-Uncut.pdf that requires as its final step (atanh -2) to return a complex number. (Bonus if the correct complex number.)
- ddaa10 5 years ago
- lliamander 5 years ago>including being one of the few dynamic languages with a working concurrency model...
Elixir is worth a look. It's a pretty productive little language with a great concurrency model.
- 7thaccount 5 years agoWhen someone says they want to work in Perl6/Raku, they likely have vastly different problems than someone using Erlang/Elixer. There is overlap of course (both general purpose), but I can't imagine using Erlang for scripting, while Raku is first class here.
- lliamander 5 years agoI can't imagine scripting in Erlang. Or rather, I've seen it done and it wouldn't be my first choice.
Elixir, on the other hand, has many nice features for scripting, such as better string handling, process pipe-lining, and an excellent set of first-class generic data structures (beyond just map and list). It also happens to have Erlang's fantastic concurrency model.
- minton 5 years agoI guess it depends on what you're comfortable in? I myself have tons of Elixir scripts that I use to automate much of my life. It's replaced ruby as my go-to for one-off scripts.
- cutler 5 years agoElixir/Erlang isn't a general purpose language. You pointed-out one reason why - scripting. Computation is another area where the language is deficient. I'd go so far as to say Elixir's failure to challenge mainstream languages for mindshare is down to to it occupying a niche - lightweight concurrency and distributed systems.
- weff_ 5 years agoI'm trying to understand, what kind of scripting requires first-class concurrency that isn't fulfilled by say Python?
- lliamander 5 years ago
- tombert 5 years agoFor that matter, Erlang has been around for like almost 30 years and has had multicore support since 2007, and has always been dynamic.
- davidw 5 years agoErlang is great, and I miss working with it, but I'd never want to write much in the way of 'quick scripts' with it. Something like Ruby feels much more productive for that.
- lliamander 5 years agoOh certainly. I've done production work with Erlang, and it's great for building systems. I also love the Prolog syntax (I've also since done some side projects in Prolog for great fun).
Why I suggested Elixir is because it has all the strengths of Erlang but is also a better scripting language, and would compete better with Raku on a more equal footing in that respect.
- zzzcpan 5 years agoIn fact Elixir and Erlang are the only reasonably known dynamic languages that differentiate on concurrency. The rest either do higher order event loop concurrency, which is ok, but not a differentiator, or do worse, shared memory multithreading (threads, coroutines with synchronous channels, mutexes, etc.)
- davidw 5 years ago
- 7thaccount 5 years ago
- jolmg 5 years ago> Larry has now agreed with the change and Perl 6 will be renamed to "raku" and Perl 5, which has regular, major releases every year, will now be able to simply be "Perl" and be free to continue on its own way.
I hope that doesn't mean that when Perl needs a major number version change again, they'll chose 6. It would be pretty confusing to have 2 Perl 6.
- StevePerkins 5 years agoPerl 5 was released in 1994. At this point, the "5" isn't really a version number anymore. It's just part of the name.
If you did a "major version bump" from here, you'd probably have to bring the "5" along for the ride. Like Java version 2, where you had J2EE version <X> for years.
In reality, there probably never will be another major version bump of Perl 5, in the marketing sense. The minor version number is really the major version number now.
- WorldMaker 5 years agoWhich in turn suggests the Java (and others') solution of dropping the 5 and making the minor version the new major version. Look out for Perl 31.0 soon.
- dottrap 5 years agoAnd as another example, Mac OS X (10), which debuted in 2000, has had every subsequent version continued to be named 10.X. Just this week, macOS 10.15 Catalina was released.
Funny that the name Mac OS X went to OS X and then (back) to macOS, but the 10.X name persists.
- erikpukinskis 5 years agoIn communist Russia, minor version always have breaking change
- WorldMaker 5 years ago
- Grinnz 5 years agoI can say that at least currently, there is no appetite for Perl attempting to "reclaim" the Perl 6 version in the foreseeable future. It would be a disaster in both community relations and marketing. It will either be Perl 7 or Perl 34+.
- irrational 5 years agoPerl 2019
- irrational 5 years ago
- wvenable 5 years agoA similar sort of situation happened with PHP which is why there is no PHP 6 -- it jumped straight from PHP 5 to 7.
- RussianCow 5 years agoAnd same with ECMAScript 3 to 5.
- RussianCow 5 years ago
- joshlemer 5 years agoIt's not uncommon to leap frog versions in such cases. PHP went from 5 to 7, for instance.
- diag 5 years agoBut that's because PHP6 was dumped after being in development for a while.
- deaddodo 5 years agoThey didn't "skip" php6.
The primary goal of PHP6 was to implement full unicode support and drop mbstring. However, that took much longer than expected and multiple major features ended up getting backported to 5.3, 5.4 and 5.6; to the point that PHP 7 became the new feature version while PHP6 was worked on. They eventually gave up and PHP7 was released with unicode support built fairly deep, but basic string types and the like still being byte arrays.
PHP7 was PHP6, without the native and full unicode coverage requirement.
- chubot 5 years agoYeah there was also no ecmascript 4, it went from es3 to 5 because 4 was abandoned as too complex.
- ether_at_cpan 5 years agoFor those that can remember back that far, MacOS also jumped from 5 to 7. (7 was the first version that supported running multiple applications at once.. not counting the MultiFinder hack that came before it by a few years.)
- diag 5 years ago
- jandrese 5 years agoThat would be an issue, but I don't think there is an appetite for a new major version of Perl at this point.
To avoid confusion they would probably break the version convention entirely and name it with the year instead. So instead of Perl6 it would be Perl'19.
- yesbabyyes 5 years agoI think it's likely they will skip the 5, and continue with version 32, or whatever minor they're up to now.
- mhd 5 years agoDitch the major version. As the current one is 5.30, the next one will be Perl 31, the next stable is Perl 32.
- sdenton4 5 years agoThere's even a good mathematical justification for going from 5->32; just say that previously the versioning was in log_2 scale...
- sdenton4 5 years ago
- cjohansson 5 years agoMaybe it’s better to find a new name for the next Perl 5 language version. It would simplify internet searches. It should be clearly distinct from Raku though.. Angular is in a similar mess to Perl, very hard to find decent information on web crawlers
- FillardMillmore 5 years agoWell, PHP jumped from 5 to 7 (without there truly ever being a 6) so I think Perl could do the same with no major downside.
- sigzero 5 years agoThey'll probably skip to 7.
- dwaltrip 5 years agoThat is probably the best solution, but at the same time it is such a hilarious thing.
- b2gills 5 years agoI think it would be a better idea to make the minor number be the major number. So skip to 32.
- KSS42 5 years agoWhy not Perl 10 or Perl X?
- rurban 5 years agono, it's called cperl now. perl5 didn't see not much improvements for the last 20 years, the development happens only in cperl, which is the perl5 successor.
- dwaltrip 5 years ago
- ttkciar 5 years agoSince the language-previously-known-as-Perl6 will be known as Raku, there shouldn't be any conflict with Perl v6
- TheCoreh 5 years agoEven if file names/packages don't clash, there's still a conflict when it comes to documentation, articles, blog posts, books, stack overflow questions and other documents that might or might not be updated.
- lilSebastian 5 years agoThat would only further confusion
- TheCoreh 5 years ago
- StevePerkins 5 years ago
- 7thaccount 5 years agoHey Ovid. I'm curious...if P6 had been performant and production worthy enough for your tau-station game, how much easier would the project be than with P5 + Moose? Just curious...I remember you saying years ago that you would've used it if you could've at the time.
- Ovid 5 years agoThe https://taustation.space/ game runs great on Perl 5, but yes, with a robust Perl 6, many things would have been easier to implement. But by "robust" I don't mean just the language—I also mean the ecosystem.
There is no DBIx::Class (or related schema loader) for Perl 6. I don't know how mature the web frameworks are. Or even basic stuff like Excel reader/writers (we use lots of Excel for backend data analysis).
On the other hand, most of the async stuff we currently use can be thrown out. With raku's gradual typing, our in-house type libraries can be tossed out. Our local modules for making it easier to write clean procedural and OO code could be thrown out.
And the raku code would be far more concise and easy to read. Here's a simple Point object in Moose:
raku:package Point { use Moose; use overload '""' => \&Str, fallback => 1; use Moose::Util::TypeConstraints; subtype "PointLimit" => as 'Num' => where { $_ >= -10 && $_ <= 10 } => message { "$_ must be a Num between -10 and 10, inclusive" }; has [qw/x y/] => ( is => 'rw', isa => 'PointLimit', required => 1, ); sub Str { my $self = shift; return sprintf "[%f,%f]" => $self->x, $self->y; } }
And for those who don't "grok" the above, here it is in Python 3, just so you can see how clean raku's OO syntax is:class Point { subset PointLimit of Rat where -10.0 .. 10.0; has PointLimit $.x is rw is required; has PointLimit $.y is rw is required; }
class PointLimit: def __init__(self, name): self.name = name def __get__(self, point, owner): return point.__dict__.get(self.name) def __set__(self, point, value): if not -10 < value < 10: raise ValueError('Value %d is out of range' % value) point.__dict__[self.name] = value class Point: x = PointLimit('x'); y = PointLimit('y'); def __init__(self, x, y): self.x = x self.y = y def __str__(self): return "[%f,%f]" % (self.x, self.y)
- snapdangle 5 years agoIt's worth checking out the Red ORM, great progress is being made and it feels very Perl 6 native in terms of its semantics.
- 7thaccount 5 years agoThanks for the detailed reply Ovid!
I'm only a novice in Perl5 land (Python is usually my go-to along with Linux CLI tools and Powershell on Windows, or honestly a lot of SQL these days but sometimes I reach for Perl5 when it has something I need) but I always keep an eye out for different and interesting technologies and Perl6 is definitely on my radar to check in on every now and then. As you've pointed out, it seems to have a lot of power that could reduce a lot of the one-off scripts I write. I do a lot of basic text file manipulation and any feature that can save me time is valuable even if there is more stuff to learn. To me, Perl6 appears to allow for writing beautifully succinct and readable OO, Imperative, or FP like code. However, if I just need to wrangle some data (throwaway code) it looks like it can be for text what APL is for arrays (a powerful Swiss army knife).
On another note, while I have you here, do you ever plan on putting out another Perl book, but one on Perl 6 (I know there are several already published).
- snapdangle 5 years ago
- Ovid 5 years ago
- dimitar 5 years agoClojure has a focus on concurrency, is functional and it embraces JS and Java, the dominant platforms.
- bborud 5 years ago> This has been a huge deal for the Perl community.
I wasn't aware that there was one beyond the poor sods charged with maintaining my youthful sins.
- Causality1 5 years agoRather reminds me of what happened with Palm OS 5 and Palm OS 6. Both ended up adopting separate names but because OS 6 wasn't backwards compatible the sheer weight of legacy software kept it from ever catching on.
- rolltiide 5 years agoIf only the Python community could learn something here
- msla 5 years ago
- scythe 5 years agoI kinda wish something like this would happen with LuaJIT, so it can get out of Lua’s shadow.
Lua has breaking changes all the time, which makes sense for its original purpose — embedding — where you don’t need to follow updates. As such the version supported varies among different environments. But LuaJIT has an ecosystem that they try not to break. It’s more of a “conventional” scripting language because of that. It also has an FFI that isn’t in plain Lua.
- andreygrehov 5 years agoIf anyone is interested in working with the language, AFAIK, DuckDuckGo's backend is primarily written in Perl.
- ricardobeat 5 years agoPerl 6 / Raku introduces so many new constructs that is almost an entirely new language.
- ricardobeat 5 years ago
- bbanyc 5 years agoI find Perl 5 best for the kinds of fire-and-forget text processing scripts that are a bit too complicated for awk but not involved enough to bring in a "real" language. It's a double-edged sword - in a throwaway script it's awesome to not have to bother converting between the number 12 and the string "12", both numeric and string operators will work on them the same way. In a large project that kind of thing is just going to cause a bunch of untraceable bugs due to unidentified invisible behavior. Or you need to resort to weird hackarounds like "0 but true". Also: $_ is like that, only more so.
CPAN invented the software repository, and I'm glad it was there so PyPI/Gems/NPM/etc. could learn from its mistakes.
Every few years I tried an alpha of Perl 6, but it was always too slow and unstable to get anything real done, and it was always a totally different implementation from the previous one I'd tried. Maybe this name change shows they're getting serious now.
- Grinnz 5 years agoI very much prefer "typeless data with typed operators" over Javascript's "typeless data with typeless operators" or basically any language that was forced to add ===.
- regularfry 5 years agoDidn't CTAN predate CPAN?
- bbanyc 5 years agoIt did, but CTAN was just a network of FTP mirrors. CPAN was that initially too, but quickly got supporting software to automatically download/update packages and resolve dependencies, which AFAIK nobody else did at the time. Even Linux package managers didn't get that until a couple years later.
- 5 years ago
- bbanyc 5 years ago
- 5 years ago
- Grinnz 5 years ago
- rhabarba 5 years agoMay Perl 5 live forever. Amen.
- codesections 5 years agoOne thing that fascinates me about Raku/Perl6 is how hard it leans into object-oriented programming at a moment when so many other new languages seem to be trending in a distinctly functional direction.
- ram_rar 5 years agoCan someone explain to me, for what kinda of new projects would they use Perl/Raku in 2019 at all?
- proverbialbunny 5 years agoRaku excels at slicing and dicing input data. So, if you need to read from a database or a csv or anything similar, Raku is amazing at taking that data and converting it into the format to do processing on.
Not only that, but when Perl 5 was at the end of its life, comparing its libraries to both Python and Ruby, you'd often find the best library was for Perl.
Raku should be far faster than Python and Ruby and may in the future have better libraries with excellent concurrency support, making it a good choice to do processing over the data, not just converting it to the format you need. It has an easy interface with C and C++, so you can import libraries from there too, if you need more speed.
Before Python came to fame Perl was primarily used by two groups: 1) sys admins who needed bash style 1 liners, but in a cleaner language (This is where the dirty code stereotype comes from.) and 2) Web devs. Much of the early pre PHP internet and even post PHP internet was written in Perl. When Perl on hiatus the web world turned into this mess of frameworks like it is today. It used to be a more unified world.
And then there is the rare 3rd group. I worked on earlier ML projects in Perl before Python was a thing. I enjoyed Perl more than Python and so did the people around me. Moving to Python / R was somewhat painful knowing it could have been better. I hope Raku takes up this torch and is good as it appears to be.
- Grinnz 5 years agoPerl 5 has never been at the end of its life (though it was intended to be 15 years ago, things changed), this is one part of what this rename is meant to clarify. It still has a major release each year and modules are released to CPAN constantly: https://metacpan.org/recent
- Grinnz 5 years ago
- gillesjacobs 5 years agoA lot of my colleagues in NLP and text processing still prefer to write in Perl. Granted they are mostly the old guard but it is prevalent in academic language technology research.
- make3 5 years ago.. in the old guard of language technology research I guess, because in my NLP lab, no one knows the first thing about Perl (everything is done in Python)
- proverbialbunny 5 years agoMore than that. I wrote my first machine learning project in Perl.
Perl 5 is better than Python in many ways, but worse in other ways. Raku seems to have none of the downsides Perl 5 had, but all of the upsides. Raku looks like it could be a valid replacement for Python in the ML space.
Also, back then, Perl 5 had better libraries than Python. Though, that was quite a while ago.
- ttkciar 5 years agoWe don't have an "NLP lab" here, but when my project required NLP solutions, perl delivered quite nicely.
- proverbialbunny 5 years ago
- julienfr112 5 years agoSpacy, the new kid on the block, is in python...
- gillesjacobs 5 years agoThere are many more tasks in NLP than what SpaCy offers even though it is a nice API. I use SpaCy near daily, but academic research goes beyond NER, dep parsing and PoS tagging.
For instance, [1] is a tool for text-to-pictograph translation system I worked on. The core engine is entirely written in Perl 5.
- gillesjacobs 5 years ago
- make3 5 years ago
- pugworthy 5 years agoYears ago I worked with Rogue Wave Software, which sold C++ libraries. There was a customer who wanted to sort a huge dataset, and RW's sort code took something like 15 minutes to sort. Perl took 15 seconds. I don't know if it was ever figured out why, but it was (is) just one of those signs of how Perl still can be amazing at some things.
Still have my O'Reilly 1st Annual Perl Conference bag around. Good times.
- Grinnz 5 years agoA particularly poor algorithm choice for sorting can be catastrophic.
- Grinnz 5 years ago
- sacomo 5 years agowe are using it internally for a lot of management apps. we just deployed a new authorization frontend for graphite / carbon using cro that is handling several million daily requests (per small EC2 instance).
raku is a great language to work with for us. it is feature rich, has good abstractions, and developer friendly. if you like the syntax then give it a try.
- liveoneggs 5 years agoa project that wants to use an interesting language with a lot of depth, cool features, great c interfacing, and easy concurrency?
- 7thaccount 5 years agoYes, and also one where performance isn't a huge requirement (it's improving).
- 7thaccount 5 years ago
- joombaga 5 years agoPerl is ubiquitous. I think it's required for POSIX compatibility but I'm having trouble locating a source for that.
- Tepix 5 years agoSomething that can take advantage of the new and improved regular expressions
- riffraff 5 years agoI like raku's grammars, and I appreciate the idea of having them as first class, in a way other languages don't have them.
But you have parser libraries that work very well in all major languages, and I'm not sure being integrated in the language makes Raju more valid for any project.
What it does, imo, is offer a special way to solve some stuff by already being there. But it's like saying someone would choose python for a project because it has a built-in set data type.
- riffraff 5 years ago
- 0xdeadbeefbabe 5 years agoGuestbook cgis
- lilSebastian 5 years ago1993 is on the phone, they want their jokes back
- lilSebastian 5 years ago
- proverbialbunny 5 years ago
- smacktoward 5 years agoFifteen years too late. But I suppose better late than never.
- rubinelli 5 years agoHad they done it fifteen years earlier, I think Perl could have been the language to learn for Data Science. It still is a fantastic language to slice, clean up, and extract information from text files, and it was already very widely used in bioinformatics.
- 7thaccount 5 years agoI don't think the name change was the problem here, rather it wasn't complete until recently.
- rz2k 5 years ago"a fantastic language to slice, clean up, and extract information from text files, and it was already very widely used in bioinformatics" is a description of Perl 5, not Perl 6.
Even if Perl 6 is completed, I don't think it is a practical workhorse for many real world situations.
To me being able to create grammars in Perl 6 to parse text data sounds really compelling. However, every time I have played around with them, Perl 6 has been so slow, that I have reverted to using regular expressions in another language.
- raldi 5 years ago
- lilSebastian 5 years agoSee the section about waiting for perl 6 before doing more work...
http://blogs.perl.org/users/ovid/2019/08/is-perl-6-being-ren...
- kbenson 5 years agoI'm pretty sure GP is referring to Perl 5, not the newly renamed Raku. Perl 5 had a lot of use in bioinformatics, and to my knowledge lasted quite a while after the general Perl exodus, until eventually being replaced by biopython.
If the confusion regarding Perl 5/6 never happened, it might have retained that popularity in that domain.
- rz2k 5 years ago
- 5 years ago
- AlexCoventry 5 years agoPerl was built on a shaky foundation from the start. It was inevitable that it would collapse under its own weight.
- DonHopkins 5 years agoYeah, with Perl 6 out of the way, they would have had 15 years to clean up the syntax of Perl 5 so it was no longer indistinguishable from line noise.
- jandrese 5 years agoIMHO Perl's reputation for noisy code is mostly the result of code golf examples online and denoting variables with an explicit type character.
A sanely written Perl program is nowhere near line noise. Compare to supposedly beautiful languages like Rust and the ratio of punctuation characters to alphanumeric is pretty much on par.
- jandrese 5 years ago
- 7thaccount 5 years ago
- rubinelli 5 years ago
- ksec 5 years agoThe Author point to [1] for reason for Raku instead of Camelia.
One thing that struck me,
12. Both raku.com and raku.org are currently available.
I was surprised that a 4 letter .com or .org is still available. So I looked it up and turns out to be not true.
And it was interesting half of the discussion had domain name availability as factor.
[1] https://github.com/perl6/problem-solving/issues/81#issuecomm...
- Grinnz 5 years agoraku.org is no longer available because it is controlled by the Raku project.
- Grinnz 5 years ago
- wodny 5 years agoIt will have quite interesting implications, especially for former Perl 5 syntax enthusiasts. One could say in Polish they "code in cancer" ("programuje w raku").
- thanatropism 5 years agoNot "z raku"?
- wodny 5 years agoNo. "Z raku" would mean that "raku" accompanies you and the play on words would be gone because it would be either "programuje z raku" ("one is accompanied by raku the programming language") or "programuje z rakiem" ("codes having/with cancer").
- 5 years ago
- wodny 5 years ago
- thanatropism 5 years ago
- sys_64738 5 years agoWhat utility does Perl provide in a world dominated by python?
- ttkciar 5 years agoIts runtime is quite a bit faster and enjoys a smaller memory footprint. It is also more amenable to "bash on steroids" scripting, and has a quarter-million canned solutions in CPAN.
PyPi has caught up with CPAN in terms of sheer number of packages, but there are still a lot of differences in what those packages cover. You might find solutions in CPAN without a counterpart in PyPi.
More narrowly, every time I deal with databases in python, I find myself missing perl's DBI, which provides the same API for all databases with a corresponding DBD. Python should get a similar universal database interface someday.
- wumpus 5 years agoOne thing perl provides is a few examples of how to handle utf-8 better than Python does.
To put this another way, my 10-year-old perl-based web crawler did not have a problem crawling websites with umlauts in the hostname. Python is fixing supporting that new 2008 standard next year.
- eddyg 5 years agoPlenty.
Read https://www.evanmiller.org/why-im-learning-perl-6.html or the follow-up https://www.evanmiller.org/a-review-of-perl-6.html
Or, Why Perl 6 is the "Game of Thrones" of programming languages: https://techbeacon.com/app-dev-testing/why-perl-6-game-thron...
Lots more where those came from...
- emptybits 5 years agoI love Python and I don't see the subset of the world dominated by Python changing to Raku any time soon. But there are some things that made me smile and nod and want to read more about the language. Two, off the top of my head.
1. Raku treats math in a manner that wouldn't surprise a mathematician. Or grade school student, for that matter. Witness:
(Raku prefers rational to floating point math when possible, but of course you can force floating point if you prefer that behaviour.)$ python3 -c 'print(0.3 == 0.1 + 0.2)' False $ ruby -e 'puts 0.3 == 0.1 + 0.2' false $ perl6 -e 'say 0.3 == 0.1 + 0.2' True
2. Concurrency is a language goal in Raku and I think that's notable, compared to Python. Parallelism, concurrency, and asynchrony including multi-core support.[1]
- Grinnz 5 years agoAs a Perl programmer, this is basically a post I might have written (aside from knowing it's not dominant anymore :) One more really cool aspect is the first class Unicode support, which Perl can do but you have to work at it.
- Grinnz 5 years ago
- mhd 5 years agoThe inverse could've been asked about Python ages ago.
- pvaldes 5 years agoMaybe creativity. Perl world has always been proud to be able to solve the same thing in twenty different, often arcane, ways. Sometimes this is a good trait, other not so.
And Perl programs do not spontaneously decompose when copypasted also.
And CPAN is still a very profitable gold mine to explore.
- ncmncm 5 years agoLegit question.
Movable Type is about the only blog framework not written in PHP. If you thought Perl was a bad language, PHP is way, way worse. And Movable Type is also the only one that can use Postgres for storage.
I could not find any blog engine in Python.
- smacktoward 5 years agoThere are static site generators written in Python you could use to publish a blog, like Pelican (https://blog.getpelican.com/) and Lektor (https://www.getlektor.com/). But yeah, if you want software that works like WordPress and generates pages dynamically on the fly, I'm not sure there's any good Python-based alternatives.
> If you thought Perl was a bad language, PHP is way, way worse
In fairness to PHP, it's a lot better today than it used to be. (Though modern PHP would probably strike a Pythonista as too Java-ish.) And WordPress has had tons of engineering resources poured into it for a decade-plus now, whereas Movable Type has been maintained on a relative shoestring due to its fall from popularity.
- ncmncm 5 years agoIt is hard to imagine why anyone would want to generate blog pages on the fly, but somehow it is what everyone does.
- ncmncm 5 years ago
- matthewowen 5 years ago
- smacktoward 5 years ago
- ttkciar 5 years ago
- gpvos 5 years agoLarry's actual approval (although he has basically said before that the community doesn't need his approval anymore) is here: https://github.com/perl6/problem-solving/pull/89#pullrequest...
- halis 5 years ago
- x62Bh7948f 5 years agoI used a workflow automation system at my previous gig that used java heavily on the backend. Rakuraku Workflow was the name. I hated it. The name, that in japanese means something like “easy easy” (楽々) didn’t help much. It was a mess.
- mberning 5 years agoI wish them the best of luck, but in my experience rebranding a seriously off track project is often the treatment of last resort. It’s the vancomycin of struggling projects.
- kizer 5 years agoIs that from the Bible?
- giancarlostoro 5 years agoDoes not sound like anything from the Bible I have ever read. Theres other commentary on this HN post about the many meanings of the name though.
- Grinnz 5 years agoI think the comment was asking about the quote in the linked comment, not the name (which was chosen as an alias many months ago).
- vgetr 5 years agoIt is - the book of Matthew, specifically.
- giancarlostoro 5 years agoYou're thinking of "Raca" from Matthew, it wouldn't make sense for him to call it based on that verse though since it's not a pleasant word. Jesus specifically says not to call your brother Raca. Why would he call his language that...
- giancarlostoro 5 years ago
- Grinnz 5 years ago
- jdporter 5 years agoOf course it's from the Bible -- as a quick google would have told you. It's Mark 2:21-22.
- giancarlostoro 5 years agoThat's "rhakos" and doesn't explain it well since this comes from "Rakudo", but Rhakos means torn off cloth according to Strong's Greek concordance. I guess it fits though.
- giancarlostoro 5 years ago
- kizer 5 years agoI know he’s a man of faith as they say. No judgement of any kind intended.
- giancarlostoro 5 years ago
- lacampbell 5 years agoGood move. The name 'Perl' has connotations (good or bad depending on who you ask), but this language always seemed like a different kettle of fish.
Names matter.
- blondin 5 years agoso, raku is shortened for rakudo the perl compiler. rakudo itself might be japanese but i can't confirm.
google, in their infinite wisdom, doesn't want to translate the word because they think i am typing it wrong and they know exactly what i meant to type... but anyways, i think it has to do with paradise or heaven, but i could be wrong.
- opens3 5 years agoHallelujah! Great decision :) it will give Raju a chance to be viewed without the "line noise" lens of Perl 5.
- DonHopkins 5 years agoI'm disappointed they didn't take my suggestion to rename Perl 6 to "$#_@;\>&%}`[*~!^)".
- chipotle_coyote 5 years agoI'm disappointed that's not executable. :)
- chipotle_coyote 5 years ago
- DonHopkins 5 years ago
- janeroe 5 years agoIn Russian "raku" is a genitive of cancer / a derogatory term used for noob users.
- overcast 5 years agoCan someone give the rest of us some context on this?
- bifrost 5 years agoPerl5 -> Perl6 has been highly contentious.
Perl6 is basically a different language much to the chagrin of many Perl users. A lot of Perl users are entrenched in Perl5.
FWIW: I'm unclear why people continue to use Perl at all, I moved on in 2011.
- folkhack 5 years agoIn the same boat on the "why haven't people moved on"... Perl use to be ubiquitous but over time it's really gone to the wayside vs. Python tooling for more complex stuff, and back to basic BASH for the simple scripting needs.
Every time Perl comes up in a professional environment for me I'm reluctant to say I'm capable, because it's always a hacked-together mess from an engineer who's likely no longer with the company. (obviously this is VERY anecdotal to my career)
I dropped Perl from my resume about a decade ago because I just frankly don't want to work with it. The language is terse, and I don't think anyone who's starting off these days would be spending their time well by learning it. Make your own opinions, but mine is/has always been "ewww."
- goatinaboat 5 years agoIt’s the Perl culture, to do even simple things in the weirdest way possible and everyone will call you a wizard. Whereas the Python community praises complex ideas expressed as simple code and frowns on tricks. That’s why all but the the most obsessive have moved on. And from what I’ve seen Perl 6 takes it to the next level.
- Touche 5 years ago> it's always a hacked-together mess from an engineer who's likely no longer with the company. (obviously this is VERY anecdotal to my career)
That's what programming is.
- kazinator 5 years ago> it's always a hacked-together mess from an engineer who's likely no longer with the company.
Oh man, in 1996 I was at Nortel. Some Ms. C. in Computer Science (no longer with the company) left behind Perl cruft whose indentation levels didn't even match up:
type of thing. He didn't know how to operate a programmer's text editor.whatever { }
- dana321 5 years agoI would rather deal with that than a project with millions of classes which are mostly empty full of useless comments that tell you nothing about how the project is put together.
- bifrost 5 years agoHeh yeah, totally.
The only Perl I use these days is oooooooold software (MRTG) I guess with the exception of Spam Assassin and RT...
- overcast 5 years agoDefinitely not anecdotal, that's the story from EVERY company.
- lilSebastian 5 years ago> The language is terse
Only if you chose to write perl code in this way. The same could be said for many languages
- ether_at_cpan 5 years ago> I dropped Perl from my resume about a decade ago because I just frankly don't want to work with it.
That's exactly why I've never mentioned Java on my resume (or in earlier times, Visual Basic) =D
- goatinaboat 5 years ago
- ether_at_cpan 5 years ago> I'm unclear why people continue to use Perl at all
Because there's a huge amount of applications and websites still built in it, and it's still a great language so new projects are written in it all the time.
source: my very prosperous career, which has been almost entirely in Perl for the last 15 years
- notyourday 5 years ago> FWIW: I'm unclear why people continue to use Perl at all, I moved on in 2011.
Because it works. Scripts/software that works does not experience bit rot. As long as it works, people will continue to use it.
Edit: OK, fine. It seems the downvoters are convinced that the code does in fact experience bit rot, and spoils with time. Probably like fish.
- curryst 5 years agoI would argue that becoming "legacy" is akin to bit rot. Sure, it still runs, but everyone that knew how it worked has left the company, and it's written in a language that is no longer in vogue and will require specifically hiring people with that skill to maintain.
As a counterpoint, I think we can both agree that writing production software in one of the toy languages that pops up on HN frontpage every day is a bad idea. Writing in a language that is old enough that it has become niche has many of the same issues. It doesn't really matter whether the software is poorly understood because the language is new enough to be niche or old enough to be niche; the outcome is the same.
- bifrost 5 years agoSure but there's a reason that development has moved off of Perl.
- lonelappde 5 years agoThe environment changes, and old programs need to update to keep up with new data formats and remote services and security threats.
- curryst 5 years ago
- yellowapple 5 years agoI'm all about using the right tool for the job. Sometimes Perl is that tool, and thus sometimes I'll still use Perl.
- folkhack 5 years agoGenuinely curious - and not trying to be a jerk... but where do you find Perl fits well? I can only imagine needing it if I'm stuck on a legacy OS/strictly governed environment where it's the only option I have. (ie: governmental work etc.)
- folkhack 5 years ago
- pvaldes 5 years ago> I'm unclear why people continue to use Perl at all
It does the job
- rafaelvasco 5 years agoIn several instances it's a matter of comfort zone, one of the biggest enemies of positive progress;
- lilSebastian 5 years ago> FWIW: I'm unclear why people continue to use Perl at all
Great language, large library on cpan, great eco system, people enjoy using it, they have a large code base that's run fine for decades. Choose 1 or more.
> I moved on in 2011
You're right, it's all about you and what you do...
- dang 5 years agoHi, would you mind reviewing the site guidelines? I'm afraid your comments have already been breaking them quite a bit, and we ban accounts that do that.
The idea here is to post thoughtful and substantive comments, not aggressive ones, and to avoid the flamewar style, which degrades discussion quality and provokes worse from others.
- DonHopkins 5 years agoNo, it's all about evangelizing and recruiting as many other people as possible to go down with the sinking ship you've committed yourself to.
The Evangelism Hole: Getting People Back to Perl
- dang 5 years ago
- folkhack 5 years ago
- lilSebastian 5 years agoNot complete but enough to get the context
http://blogs.perl.org/users/ovid/2019/08/is-perl-6-being-ren...
- bifrost 5 years ago
- 5 years ago
- eruci 5 years agoA long overdue marketing move.
- guelo 5 years agoIf raku failed to catch on whilst it was named Perl it has even less chance to catch on now.
- dcompton13 5 years agoraku is a type of pottery firing, also from Japan.
- davidw 5 years agoIt would be cool if Les Claypool played Larry Wall in the movie.
- 7thaccount 5 years agoWill Zoffix return?
- 7thaccount 5 years agoNot sure how to edit, but for those who don't understand this comment, Zoffix was a key Perl6 contributor who recently left because the community and Larry Wall wouldn't change the name to something else like "Raku" among other things I guess. Now that they have made this change, I'm curious if he'd ever come back and start running the test suites again.
- 7thaccount 5 years ago
- thetwentyone 5 years agoJulia has a really great threading model coming in v1.3, which is likely to be released this month: https://julialang.org/blog/2019/07/multithreading
It already supports a variety of parallel techniques but it's about to get easier and safer (e.g. safe I/O).
- SQueeeeeL 5 years agoIs Julia getting more stable? I remember that was the big issue a few years ago, especially since it calls so many weird CUDA apis.
- chrispeel 5 years agoJulia itself is stable. Julia allows writing libraries (packages) that are as performant as built-in libraries; in some cases it's hard to remember that these external packages are ... external and sometimes not as stable as the core language and standard libraries.
- ChrisRackauckas 5 years agoThere is no CUDA API in the standard language. The tools for automatically generating CUDA code from Julia code is the CUDAnative.jl package, which at this point is pretty stable and has fairly widespread use.
- vanderZwan 5 years agoWell, that's what reaching 1.0 was supposed to represent, but I don't (get to) use it (for the kind of work I do) so I cannot say for sure if that actually worked out in practice.
- ChrisRackauckas 5 years agoThere were packages I wanted to add features to last week that I've used daily for years, and when I went to go check them out, I noticed they hadn't been touched since the 1.0 release which is now over a year ago. So I think the stability of 1.0 has worked out well since, in contrast to pre-1.0, these days core packages don't even need maitanance and will still continue to work perfectly well for years.
- ChrisRackauckas 5 years ago
- frankenbee 5 years agoOk
- chrispeel 5 years ago
- SQueeeeeL 5 years ago
- droithomme 5 years agoThe naming is a very good idea since it really is a totally different language and the numbering made it seem like an incremental upgrade. Whether it's too late will remain to be seen. Also, now maybe there is space for an actual Perl 6! :-)
- tus88 5 years agoSo will there be a Perl 6 then, or are Perl 5-ists stuck on that major version forever?
- spyspy 5 years agoApple and Microsoft have basically proven that you can jump major version numbers and no one will really care.
- spyspy 5 years ago
- mrtweetyhack 5 years agoGood. Even less people will use it.
- bipolar_lisper 5 years agothe programming community never ceases to amaze me
- harikb 5 years agohttp://tpm2016.zoffix.com/#/13 - There is so many good ideas to copy to Rustlang!
- vinceguidry 5 years agoThis should have happened with Python 2/3.
- eranima 5 years agoPerl 6 is WAY more different than Perl 5. Python 3 absolutely should not have been renamed.
- vinceguidry 5 years agoWell right now I avoid using any tool written in python that doesn't have os-level packages because there still isn't a clean way to use python repos without deep understanding of how python works.
- m45t3r 5 years agoI think this is more connect with the lack of familiarity with the language ecosystem than anything. I avoid tools written in node.js, even if installing is somewhat easy, most because I don't really know how to manage them later.
Btw, nowadays with a modern pip a simple `pip install --user package-name` works.
- m45t3r 5 years ago
- vinceguidry 5 years ago
- Grinnz 5 years agoThe Python situation had a major difference: the current maintainers of Python 2 and Python 3 are the same, and Python 2 is still intended to be EOLd. A clean break would surely have avoided many problems but it's hard to speculate how it would have gone.
- cestith 5 years agoI'm not sure I agree with you but I can't imagine why you're getting downvoted. It's definitely an argument worth making.
- vinceguidry 5 years agoNobody likes hearing their favorite language trashed.
- lilSebastian 5 years agoYou've made the mistake of thinking people vote rationally.
- vinceguidry 5 years ago
- eranima 5 years ago
- anonu 5 years agoCall me a pessimist, but its too little too late... I learned regex in perl so the language will always have a soft spot in my heart. But Python has trounced Perl for almost any task. There simply is no reason to learn perl unless youre in the unfortunate position of managing some legacy stack.
- xisukar 5 years ago> Call me a pessimist, but its too little too late...Python has trounced Perl for almost any task.
Moving forward I'm assuming you're talking about Raku and not about Perl (or Perl 5).
Do you mean little too late to be endorsed by a multi-million company? Or little too late for everything (personal projects, academia, etc.)? I'm trying to clarify this because I've never understood this sailed ship mentality regarding programming languages. And I know you're not saying this but it almost sounds like Raku is supposed to be a replacement for Python. It isn't. They're different languages, both good in some areas and bad in other areas. These areas need not be necessarily overlapping.
Whenever I read this kind of comments, they always remind of the following phrase I came across:
It's almost as if Python marks the pinnacle of programming language research which isn't the case at all. In fact, I daresay no language can since programming languages are a matter of compromises and trade-offs. A language's compromises and trade-offs you're willing to put off with might not be the same for another person. There's an interesting phenomenon I've observed in the Perl community (or at least the Raku for the most part) which seems to be rare in other places: Whenever a situation arises where Raku might not be the best candidate for, community members aren't afraid to consider/suggest/recommend other programming languages as viable options.There are two things that a programming language needs to be acceptable: - Be Python - Be a language I have used recently
- jolmg 5 years ago> But Python has trounced Perl for almost any task.
Well, I think Perl beats Python in quick and concise one-liners written from the command line, doesn't it?
Not that I know much Perl, though.
- petre 5 years agoIt does but it's still annoying to write on a line as opposed to Ruby or Lua. Writing Python one liners with significant whitespace is out of the question I guess.
- snapdangle 5 years agoRaku includes an incredible amount of new tools for writing one-liners. Furthermore, you can convert your one-liner into a command line app simply by wrapping the code in a `sub MAIN($pos-arg, :$named-arg) { ... }`.
- snapdangle 5 years ago
- petre 5 years ago
- xisukar 5 years ago