A few weeks back, I was just getting into Elixir. I was so interested that I hopped on IRC and started asking questions, much to everyone’s annoyance. I asked the creator, José Valim, a couple of questions. José is well-loved in the Ruby Community, so I dropped him a line and he was kind enough to respond. After answering some of my questions I thought, I have to interview him. Here is the resulting conversation.
- For the people that don’t know you. Could you tell us a bit about yourself?
- I am José Valim, creator of the Elixir programming language and co-founder of Plataformatec. I am a Brazilian living in Poland who spends the days working on Open Source.
- José, You’re very well know as an active member of the Ruby Community. You also built a programming language on top of Erlang called Elixir. Could you tell us how you got to creating a programming language? Were you familiar with the idea of building one?
- I don’t have a formal Computer Science background. Therefore, when I decided to create Elixir, I knew I had to catch up on the background required for lexers, parsers, and so on. I have read a couple books on the matter, read the source code of how different languages are implemented, and also played with different tools to have a better grasp of what is possible and what isn’t. Of what is simple and what is complex. Working in the parser was still challenging, especially when you run into corner cases and finding a solution can be a lengthy process. I used the Bison manual as well as the Dragon Book. I can remember checking the parsers for Erlang, Ruby, and a bunch of different compile to JavaScript languages.
- Could you tell us more about it? How did this happen?
- It is a long story, but I will try to make it short and sweet. Back in 2010, I was working on improving Rails performance when working with multi-core systems, as our machines and production systems are shipping with more and more cores. However, the whole experience was quite frustrating as Ruby does not provide the proper tool for solving concurrency problems. That’s when I started to look at other technologies and I eventually fell in love with the Erlang Virtual Machine. I started using Erlang more and more and, with experience, I noticed that I was missing some constructs available in many other languages, including functional ones. That’s when I decided to create Elixir, as an attempt to bring different constructs and excellent tooling on top of the Erlang VM.
- What are the main features (is that what I should call them?) that Elixir adds to Erlang? And why did you choose it?
- Elixir was designed with excellent and accessible tooling, documentation, and resources in mind. On the more technical side, Elixir provides a macro system and polymorphism via protocols, both aiming to make the language more extensible.
- Why do you think we have this sudden diversion of interest to functional? What do you think it offers the average OO programmer?
- This is a tricky question because functional and object-oriented programming do not have precise definitions. Especially when we are talking about OO languages that can be drastically different from each other. In fact, Alan Kay, who coined the term object-oriented, has a definition of OO much closer to Elixir processes/actors than to the objects found in languages like Java and C++. That said, I have a very personal definition of functional programming: functional programming is about making the complex parts of your system explicit. For example, mutable state is data that changes through time. Time is a source of complexity because it adds a bunch of moving parts to our system. We end up having different pieces of data changing at different rates. Therefore, you don’t want “mutable state” to be a primitive, but an abstraction you resort to only when you need it, and you’ll do it explicitly. And that’s the most interesting part of it all. Functional programming is associated with concurrency but it was not by design. It just happens that, by making the complex parts of our system explicit, solving more complicated issues like concurrency becomes much simpler.
- Could you just tell us about the Elixir community a bit?
- The Elixir community is growing steadily. For example, last October we had ElixirConf 2015 in Austin with 250 attendees and more than half of the attendees were already using Elixir professionally. We already have books released by the major publishing companies and more coming out fast. What’s most exciting, however, is that it is a healthy growth. When you start with Elixir, it is not only about learning a new language, but the whole ecosystem and tools provided by the Erlang VM. And it was really exciting to see a great interest during ElixirConf in mastering this ecosystem, starting with the VM byte code up to the abstractions for building scalable distributed systems.
- Thank you José, we wish you and Elixir very good luck. Thank you for the work you’re doing for the community.
- Thank you.
If some of the things that José talked about today interests you, check out Elixir at elixir-lang.com and tell us what you think in the comments.
Frequently Asked Questions (FAQs) about Elixir and its Creator, José Valim
Who is José Valim, the creator of Elixir?
José Valim is a renowned software developer, best known for creating the Elixir programming language. He is a Brazilian computer scientist who has made significant contributions to the field of software development. Prior to creating Elixir, Valim was a significant contributor to the Ruby on Rails community. He is also the co-founder of Plataformatec, a software consultancy firm based in Brazil.
What is Elixir and why was it created?
Elixir is a dynamic, functional language designed for building scalable and maintainable applications. It leverages the Erlang VM, known for running low-latency, distributed, and fault-tolerant systems. José Valim created Elixir to address certain limitations he encountered while working with Ruby on Rails, particularly concerning concurrency and performance.
What are the key features of Elixir?
Elixir is known for its scalability, maintainability, and reliability. It supports metaprogramming, allowing developers to write code that writes code, leading to more efficient and cleaner programs. It also supports concurrency, which means it can handle many tasks at the same time, making it ideal for real-time systems.
How does Elixir compare to other programming languages?
Elixir stands out for its ability to handle concurrency, which is a challenge in many other languages. It also offers superior fault tolerance and low-latency performance, making it ideal for high-traffic systems. Its syntax is friendly and it supports metaprogramming, which is not common in many languages.
What is José Valim’s contribution to the Ruby community?
Before creating Elixir, José Valim was a significant contributor to the Ruby community. He was a member of the Rails Core Team and authored several libraries, including Devise, a flexible authentication solution for Rails.
What is Plataformatec and what is its relation to Elixir?
Plataformatec is a software consultancy firm co-founded by José Valim. It has been instrumental in the development and promotion of Elixir. The firm provides services related to Elixir, including training, development, and consulting.
How can one learn Elixir?
There are several resources available for learning Elixir. José Valim himself has authored several books and tutorials on the subject. Online platforms like Pluralsight also offer courses on Elixir.
What is the future of Elixir?
Elixir is gaining popularity for its unique features and capabilities. It is increasingly being adopted in industries that require high-performance, real-time systems. With continuous development and support from its creator and community, the future of Elixir looks promising.
How can one contribute to the Elixir community?
The Elixir community welcomes contributions from everyone. One can contribute by writing code, reporting bugs, suggesting new features, or even writing documentation. José Valim and the Elixir team are active on GitHub, where they interact with contributors.
What are some notable projects or companies using Elixir?
Elixir is used by several high-profile companies and projects. These include Discord, a popular communication platform for gamers; Pinterest, the image-sharing and social media service; and Bleacher Report, a sports news website.
A Student/Web Developer/Writer with too much time on his hands. Life Goal: Become Aaron Patterson (@tenderlove)