Thoughtstream | Courses

Raku: Transparadigm Programming 101

Raku is a new production-ready multi-paradigm language. It offers everything from low-level bitwise operations on raw bytes, to a full range of built-in system commands, to hygienic source code macros, to direct symbol-table introspection and manipulation, to run-time composition of multiply-dispatched multimethods from mixins, to object-oriented parsing grammars with hybrid DFA/NFA rules, to concurrent higher-order functions applied over infinite lists of pipelined arbitrary precision integers.

More importantly, Raku does not restrict you to a single paradigm across your entire application; nor within a single compilation unit, namespace, block, subroutine, or even statement. Instead, you can easily combine and integrate all these functional, procedural, declarative, OO, and concurrent constructs within any chunk of code, no matter how small, without losing readability or efficiency. We call it "transparadigm programming": not five separate choices of computation model, but a single computation model with five integrated choices.

In other words, we stole the best features from 20 different languages, and then spent over a decade working out how to fit them together in a way that is clean, efficient, powerful, and still usable by actual human beings. Raku was the result.

In this class, Damian will explain, discuss, and demonstrate Raku by examining some of the most interesting transparadigmatic features of the language, using familiar real-world examples stolen from every Programming 101 class you've ever taken.

Course format

1-day

Who should attend

This tutorial is designed for those with some experience in one or more functional, procedural, declarative, OO, or concurrent programming languages. Participants will be expected to recognize and understand simple programs for such tasks as mean/median/mode calculations, quicksort, mergesort, Fibonacci number generation, simple data validation, prime number recognition, bank account management, LaTeX parsing, LZW compression, and SHA-256 digests.