Perl 6
This page contains a few bits about my involvement with the Perl 6 project. If you're looking for useful information about Perl 6 itself, then head over to perl6.org. There's also a site about Rakudo, the Perl 6 compiler I hack on.
Why do I work on Perl 6?
My main areas of interest in the computing world include programming languages, compilers, runtime environments and type systems. Working on Perl 6 brings all of these together into one big, fascinating and challenging ball. In many senses, my involvement in Perl 6 ended up being the path I chose as a kind of alternative to going to do a PhD, because it's more fun and, in the end, will more likely lead to something of value to the wider computing community.
I deeply believe that programming language design is a hollistic process. Academia seems to have a tendancy to make it all about mathematics, whereas in reality it's also highly important, along with the mathematics, to consider other fields:
- Linguistics: because programming languages are languages. While I accept there is a difference between natural languages and the mathematical definition of langauge, I believe that both are important. When we're designing a programming language, we're designing something that people - who primarily experience natural language - have to work with.
- Psychology: how to people take a problem and break it down? How can we design languages that support this process? How can a programming language help make programming a rewarding and positive experience rather than a frustrating one?
- Sociology: any large system is built by multiple developers. Natural langauges form an important part of people's social interaction, and in the same way programming languages are a factor in the way a team of developers interact. What language features are pro-team? How can we help flag up conflicts earlier rather than later, to avoid frustration between team members? How can we design languages that encourage development practices that make code more accessible and maintainable by others?
- Engineering: if a bridge collapses, people probably get hurt, and there's certainly a good deal of inconvenience for those relying on it. We encounter dozens of computer systems - many of them large and complex - every day now. Failure certainly results in inconvenience, but there's situations where it can also cost lives. What can be learn from the worlds of software engineering and from the principles in engineering in other fields to help us build languages that encourage development of robust, failsafe systems?
Being designed by a linguist, Perl (all versions, not just Perl 6) certainly has a heavy linguistic influence. In many ways that's what makes it distinctive. The Perl 6 parser goes to a lot of effort to give good and helpful error messages, just one part of trying to make programming in Perl 6 a more pleasant experience. Perl 6 features roles (known in academic literature as traits), which give early warning of incompatibilities, easing development of large systems by a team. And the list goes on.
In many ways, I feel that Perl 6 isn't Just Another Language. It's got high goals: the aim is more revolution than evolution. If it was just a small, safe, incremental step, I'd probably have taken a lot less interest. It would probably also have been finished by now, but equally would have been a much lesser language than the one we're converging on today.
What do I do in Perl 6?
I work on the Rakudo Perl 6 compiler. Rakudo is, at the time of writing, the most advanced Perl 6 compiler in existence today. My focus so far has been on the implementation, and helping solidify the specification, of the following areas:
- Classes, roles and the underlying meta-model
- Type system issues, along with parametric polymorphism
- Multiple dispatch
- Signature handling and parameter binding
Going forward, my interests - in addition to those given above - will most likely include:
- Transforming Rakudo from a single backend compiler to one capable of targetting multiple backends
- Targetting the .Net CLR
- Concurrency
- Optimization stratergies for Perl 6, especially type-based optimization and gradual typing
Talks
See my talks page for slides from the many Perl 6 talks that I have given.
Funding
My work on Perl 6 has been and continues to be funded by a few organizations.
- The Perl Foundation, through a donation by Ian Hague
- Vienna.pm
- DeepText
I'm highly grateful for their financial support, and open to contact from any other parties interested in funding my work on Perl 6.
Training
In the future, I will be available to provide Perl 6 training.