Nodes > Projects > Try Raku

Try Raku

TryRaku is a small project that I started sometime in 2016. At the time the language was called Perl6 and so the project was hosted at tryperl6.org. I started this project mainly to get myself to play with this exciting new language and hopefully to make it easier for others to do the same.

The site is a simple web based tutorial with an in-browser REPL. It was inspired by tryruby.org -- a quick 15 minute introduction to the Ruby programming language that you could easily send to a curious friend. I wanted something similar for Raku.

Note: tryruby.org which was up in its original format many years ago seems have been updated/moved to try.ruby-lang.org.

The REPL alone isn't enough to fully play with the language, for demonstrating anything multi-line it becomes necessary to use a file. And so, I've added an in-browser editor that runs the current file in the same Docker container as the REPL. You can have more than one file, and your files are saved locally.

Unfortunately, at the moment the site relies on a backend Docker container in order to execute code. Doing it this way has scaling and cost limitations. In the near future, I would like to make it entirely client-side, perhaps by compiling Raku to run in WebAssembly. At the very least, it would be interesting to see if this is possible.


(Adopted From 2016 about tryperl6.org)

Perl6 is finally here and I'm fairly excited about it. Last weekend, I thought it might be fun to set aside some time to actually learn the language. Unfortunately, I had already promised myself some time towards Docker. Naturally, I needed a project that would force me to do both of these things. And so, I decided to build tryperl6.org. This weekend I'm getting around to blogging about it.

It seemed that Perl6, for all of the amazing language feature that it provides, like hyper-operators, and optional type-safety, was a tiny bit under-advertised. I figured that anything that increased perl6's public exposure, anything that would inject it into conversation among my friends, would be a good thing.

I couldn't help but think back to the early days of Ruby in contrast. A time in which Ruby was horrendously slow, but many people still loved it. In comparison to Perl6, Ruby was very well advertised. I think a lot of that had to do with educators like Why-The-Lucky-Stiff, and friendly online tutorials like tryruby.org. Many of these guides and tutorials were targeted towards the newcomers, and I don't think that's such a bad thing.

Getting young programmers to adopt your language at an early age, during the formative years, is an effective way to gain long-term users. If you're introducing someone who has never programmed to a relatively new language under the guise of "hey look how easy it is to program", that user doesn't have the background or experience to say "this language is bad". To that user it becomes the definition of what a programming language should be. This early adoption strategy has worked very well for a number of languages, like Ruby and Python.

But the paragraph above isn't meant as an argument against this type of early-adoption advertising. Your first language or your first few languages will have a great deal of impact on what you expect from a programming language, what constructs you expect to exist on a language-level, and most importantly on how you think about problems. That fact is completely unavoidable, whether that language was advertised to you via some kid-friendly tutorial, or required reading for a college course. That's partly why I think it is important to put language learning tools on an equal plane of availability, to leave room for choice.

Many programmers that I've talked to feel that your programming language simply doesn't matter, "it's not important" they may say, or "simply a tool to get the job done", the tool itself being interchangeable. I happen to think that language matters very much. To realize how much it matters, imagine a world in which everyone only ever programmed in Fortran 77 -- a language without explicit support for recursion. Or look at code written by "enterprise" Java programmers, even when they write it in non-Java languages.

I believe that we generally form ideas on a finite set of available abstractions. Different languages offer different sets of abstractions, each of which vary in factors of ease-of-use. When a thing (language or otherwise) defines the pool of available abstractions, that thing has a great deal of influence on the set of ideas built upon those abstractions. Surely, the availability of construction materials influences the design and architecture of a building, perhaps a city, and perhaps to some minuscule extent the mindset of this hypothetical city's inhabitants.

Perl6 is a language from a community of people who truly care about language design. And my point is that Perl6 is important whether or not you ultimately adopt it for use in your projects. It's important not only because it greatly increases the diversity of available languages, but because it introduces language-level features sure to influence the way we think.