| That's not exactly fair to Raku. I know that Raku supporters disagree with me, but that has been my considered opinion for several years. And this has been something I put a lot of thought into. Let me lay out the case. What are the key ideas invented or promoted in Perl 6 / Raku that people get excited about? - Object-oriented programming including generics, roles and multiple dispatch - Functional programming primitives, lazy and eager list evaluation, junctions, autothreading and hyperoperators (vector operators) - Parallelism, concurrency, and asynchrony including multi-core support - Definable grammars for pattern matching and generalized string processing - Optional and gradual typing I got this list from https://www.raku.org/. It is what Raku people think is interesting about their own language. (So I don't get to bring up things I really don't like, like twigils.) Some of these ideas are mainstream, some not. According to Tiobe (yes, not to be taken seriously but it is accurate enough), the top languages today are Java, C, Python, C++ and C#. Let's eliminate from the list of Raku features anything that is supported by at least 2 of them to come up with things that are novel in Raku while not being broadly adopted today. The list gets much shorter. - Roles (OO programming) - Junctions, autothreading and hyperoperators (functional programming). - Definable grammars for pattern matching and generalized string processing - Optional and gradual typing How many of these will be widely adopted by top languages in 25 years? My best estimate is 1. Could be none, could be 2, I'd be shocked if there were 3. I say opinion, but it is a fairly well educated opinion. Here is my argument about each. - Roles. They have been around for some years. The only language where I have seen them used heavily is Perl 5. Nobody else seems excited. - Junctions are mostly a bit of syntax around any/all which is pretty convenient already. Autothreading and hyperoperators are a cool sounding way to parallelize stuff, but getting good parallel performance is complex and counterintuitive. I don't think that this is a good approach. - Definable grammars are an interesting rethinking of regexes, but parsing is a difficult and specialized problem. I don't see an interesting approach in an unpopular language changing how the world tackles it. - Optional and gradual typing sounded great when it made it into the Common Lisp standard. But over 30 years later, only Python supports it of the top 5. And it isn't widely used there. I see nothing about the next 25 years that makes it more compelling than in the last 25. (Though Raku's implementation is far, far better than Perl 5's broken prototype system. But that is damning with faint praise.) So use Raku if you find it fun. You'll get a view into an alternate universe of might have beens. But I still believe that the ideas that are new to you won't be particularly relevant to the future of programming. ----- It is hard at this date to make what a similar list would have been for Perl 5 at a similar stage. People were excited about CPAN. Perl people kind of took TAP unit testing for granted and didn't appreciate exactly how important it was. Perl people liked the improvements in regular expressions but probably couldn't have guessed how influential "perl compatible regular expressions" would become across languages. Ideas we were excited about like "taint mode" went approximately nowhere. And some ideas that Perl helped popularize, like closures, were ones that few Perl programmers realized were actually supported by the language. However it would be a true shocker if Raku was anywhere near as influential on the programming landscape 25 years from now. |
A quick look at Raku junctions makes me think they're basically a slightly tarted-up version of Icon's generators and goal-directed execution (which is no bad thing, of course but hardly novel.)