We interrupt the recent holiday-related posting hiatus for an interview with Tony Arcieri
, creator of Reia
. Tony has a lot more information on Reia in the FAQ
, where he covers reasons for some of the design decisions of the language. He can be reached at his blog tonyarcieri.org
, and on Twitter at twitter.com/bascule
. This has become part one of two, as I have some follow up questions for Tony on the status of the language and how people can contribute.
EI: What gave you the idea for Reia?
TA: About this time last year I was developing an Erlang-like implementation of the actor protocol for Ruby called Revactor. While this was fun to use, two things kept annoying me. First, actors in Ruby duplicated a lot of the functionality of objects, and the more I tried to unify the two the more frustrated I got. It felt like I was reimplementing method dispatch on top of the Actor protocol. Second, even though I was using the new “fibers” feature of Ruby 1.9, the messaging speed between actors was over a hundred times slower than Erlang.
At the same time I was dealing with a number of minor annoyances in Erlang. Having worked primarily in a dynamic scripting language like Ruby for some years I missed Ruby’s syntax. I’ve never been a fan of single assignment. But more than any of that, any time I tried to cultivate interest in Erlang among other Rubyists I knew, they shyed away. Erlang was too weird for them.
I was also talking to Zed Shaw who really sold me on the idea that everyone should try to make a programming language. Erlang gives you easy access to all the different parts of its compiler and makes it easy to load compiled code directly into the virtual machine. So I figured I’d give making my own language a try. I really sought to find a way to make objects and actors play well together, and I decided to do that by having objects talk the actor protocol. This also makes all objects concurrent, as they are fundamentally Erlang processes.
EI: What’s your background with functional programming? Have you built substantial applications with Erlang, Lisp, Prolog, etc?
TA: The first functional language I tried out was Standard ML, which was probably a mistake. Since then I’ve explored Scheme through virtue of SICP. I’ve never built a substantial application in any functional language, including Erlang. That’s probably a bad thing considering I’m building a language on top of what’s largely a functional language platform, but what can I say, if I were content to write substantial applications in functional programming languages I probably wouldn’t be making Reia in the first place.
EI: How do you see a web framework working with Reia? Do you forsee a Rails-style "convention over configuration" framework being constructed with Reia?
Not only do I foresee it, people have already started working on it. Phil Pirozhkov has written a binding between YAWS, the Erlang web server, and Reia, and also begun writing a small Merb-like web framework.
Concepts from existing web frameworks written in Ruby, Python, and Erlang should port over to Reia easily.
EI: How do you think programming in Reia will make the average developer more productive? Do you see Reia as an entry-point into Erlang programming or something more? Do you see a time when people will build projects only in Reia with little understanding of the underlying Erlang language?
TA: I see Reia as allowing Erlang-like programs to be rapidly prototyped as I believe Reia will lower the cognitive load of developing distributed applications and also simplify many day-to-day tasks. It can certainly be seen as a stepping stone to learning Erlang. I see the main audience as being people completely unfamiliar with Erlang, but perhaps familiar with Ruby or Python.
EI: Let’s talk about the Erlang Community – have they been receptive to the idea of a scripting-style language on top of BEAM?
TA: Reaction to Reia in the Erlang community has been fairly mixed. Most people in the Erlang community don’t see the use of Reia, which is understandable. Others seem to like it conceptually but would probably not use it themselves. Perhaps the strongest reaction in the Erlang community has been an almost universally negative opinion of abandonment of single assignment, which has overwhelmingly been the one aspect of the language people have latched onto and complained about.
Conversely, the reaction among Ruby and Python programmers has been overwhelmingly positive.
EI: How do you see this community evolving versus Rails or Python community?
TA: There’s been a surprising amount of interest given the early state of the language. I see Reia as more of a spiritual successor to Ruby than to Python, yet so far most of the people interested have a Python background, perhaps because the Python community is larger. However, that said, I still think it’s too early to tell what community will form around the language. I hope it appeals to enthusiasts of concurrent and distributed programming in general, who have grown frustrated with threads or event-driven programming and are seeking a friendlier way to make their programs scale across multicore CPUs or multiple computer systems.
As CPU manufacturers continue to increase the number of cores of their processors and network services shift towards deployment on cloud computing systems, I see the niche for a concurrent and distributed languages expanding dramatically. I see people whose interests lie in these areas as forming the basis of the Reia community.