Why Raku? Introduction to the Series
Published on Oct 26, 2023 by Tom Gracey.
So we are supporting Raku. But what is that anyway? Is it not just yet another Latest ThingTM ?
With the vast plethora of languages, tools and - let's face it - software development fashions already in existence, why would anyone even begin to think about moving on to something new? Why can't we just be happy with Python, Ruby, Java or any of the profusion of other languages that are already in widespread use? Isn't it long overdue that we stopped reinventing the wheel?
This article is intended to serve as an introduction to a "Why Raku?" series of blogposts, in which I aim to demonstrate avoiding the mess created by faddish reinventions is actually a good part of the rationale behind Raku as a language choice. The industry does indeed reinvent the wheel, a tireless treadmill of breaking solid engineering principles in favour of paper-thin ideologies, so that each time the wheel becomes a little more square. The latest idealistic dogma seems so much more attractive than boring traditional tried-and-tested methods, everyone goes loopy, and immediately entire ecosystems spring up around concepts that are fundamentally unsound. We become swamped with millions of lines of problematic code - a situation which could have been avoided if someone had thought to ask some basic questions right back at the beginning. But it is worse when no-one learns from the mistake - or even acknowledges a mistake was made - no doubt because the prevailing belief system has become so entrenched that no-one has experience doing it any other way. Lessons have been forgotten instead of learned.
The main reason I stand behind the Raku project is because I believe it provides a rediscovery of some important areas of conventional wisdom. Of course the language also introduces plenty of novel features, without which it would not be a competitive choice; but it is the combination of these new features with a much older, neglected set of philosophies which wins my vote. In fact, for me its existence is not just a bonus, it is very much a relief: finally there is a sensible choice that avoids the ugly structural problems that have needlessly plagued scripting since the widespread adoption of Python in the early 2000s. Finally there is a future-orientated language which actually builds upon lessons learned instead of ignoring them, making the same mistakes all over again and forcing me to accept them when I know there is a better way.
I am not even saying I like everything about Raku. It is still rough around the edges, a fact which anyone considering using it should be aware of. Of course stability and optimisation continue to improve at a rapid pace - so hopefully the wrinkles will iron themselves out before too long. But even aside from the roughness there are certain aspects I mutter disappointedly to myself about; then there are some I perhaps still haven't warmed to - and finally many others I haven't used enough to form an opinion. The scope of functionality is enormous, leading some to assert that the project as a whole is over-engineered. I heed that argument; I personally do not feel I need all the features, and would have been happy with a substantially smaller subset. But then again, it would have been a certain subset - and I'd rather have extra than miss ones I wanted. Indeed what about other coders, who may also only want a certain subset - but perhaps just not same subset as mine? One important philosophy we haven't heard much about in recent times is programmer freedom; and Raku has been developed with the versatility of a swiss army knife. Those unused features might only stay unused until I suddenly need to build that certain application. So while I definitely do have misgivings about Raku, on the whole it still remains my greatest hope.
By now I'm sure you've realised that my explanation is going to involve challenging narratives, and this is the reason for a series instead of a single article. Most of my discussion is not even going to be about Raku itself; we'll need to dip into the history of web scripting and explore the objectives behind the creation of the various languages which existed before Raku was ever even on the drawing board. I will make no secret of the fact my arguments will centre around two languages: Perl, which was really the first web scripting language to gain widespread popularity, and Python which later superseded it. At last we will have laid enough foundation to arrive, via our somewhat meandering route, back at the present, and finally answer the question, "Why Raku?"