Thoughtstream | Seminars

Raku: A Language For Computer Scientists (and Other Crazy People)
Raku: A Language For Computer Scientists (and Other Crazy People)

A good Computer Science syllabus will cover everything from bit manipulation to set theory, from Boolean algebra to concurrency, from parsing grammars to graph traversal, from two’s-complement arithmetic to higher-order functions, from sorting algorithms to multiple dispatch, from macros to closures. Along the way, the CS student should also learn how to program competently in (at least) the imperative, object-oriented, and functional paradigms.

To teach all these concepts and techniques it is usually necessary to resort to a wide range of different programming languages from the 1950’s (Lisp and Fortran), the 1960’s (Forth), the 1970’s (Smalltalk, C, Scheme), the 1980’s (C++, Perl, Occam), the 1990’s (Haskell, Java, JavaScript), and the 2000’s (C#, Scala, Clojure). This diversity certainly gives the student a wider repertoire, but also encourages an unfortunate (and unnecessary) internal compartmentalization of concepts and approaches.

Raku is a new programming language that aims to provide all of the major features of all of the major languages from all three dominant paradigms. It offers everything from low-level bitwise operations on raw bytes, to a full range of built-in system commands, to hygenic source code macros, to direct symbol-table introspection and manipulation, to run-time composition of multiply dispatched multimethods from mixins, to object-oriented grammars with hybrid DFA/NFA rules, to concurrent higher-order functions applied over infinite lists of pipelined arbitrary precision integers.

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

In this presentation, Dr Damian Conway (one of the principle designers of Raku) will discuss some of the more interesting features of the language and demonstrate how it might be of value in an integrated Computer Science curriculum.