Philosophy
From Reia
Contents |
Concurrent programming is the future
Multi-core computers are the norm. It's actually harder to purchase a single core system than a multi-core system nowadays. Most languages are not designed to embrace the multi-core future. Erlang has done an excellent job targeting multiple CPUs, and its VM now supports seamless load distribution across all available CPU cores. Reia leverages these same strengths and ensures that programming for one CPU is the same as programming for many.
Concurrent programming requires a paradigm shift
The bad news: the traditional way people program is not well-suited to concurrent systems. There is no way around this simple truth.
The good news: it can still be supported in concurrent systems with some modifications to the way the underlying language operates. If implemented properly, the concurrency tools Erlang provides can be seen as an extension of existing synchronous programming techniques, rather than something completely different.
Reia supports both the traditional synchronous object-oriented programming style as well as an asynchronous approach which allows for concurrent systems. The two can be used in tandem, with objects providing synchronous APIs to concurrent, asynchronous backend implementations.
Programming should be fun
As a programmer you should spend your time expressing your ideas, not jumping through hoops to accommodate a language. If you spend the majority of your time solving low level riddles instead of solving a high level problem, the language you're working in probably isn't very good.
High level languages should be designed to minimize frustration and cognitive load. Things that programmers do often shouldn't require a lot of syntactic boilerplate.
Most programmers are used to dealing with imperative languages. In the case of Erlang, a programmer is asked to make multiple conceptual leaps at once: from imperative to declarative, from procedural to functional, and from synchronous to asynchronous. Erlang has good reasons for asking you to make these leaps, but for most people this is too many leaps to make at once, and thus Erlang is too "weird" for them to understand.
Reia requires fewer conceptual leaps for the average programmer because it follows in the Algol / C tradition of languages, and as such, most operators and keywords should work more or less as a programmer of other languages in the same family expects them to.
Don't build what you can steal
Reia combines the strengths of existing language concepts. The goal of Reia is to provide a mix of existing approaches for writing concurrent programs. To that end, Reia feels syntactically like Ruby with a dash of Python, and the semantics of Erlang provide the underpinnings of the language.
Reia also leverages the highly mature Erlang VM and OTP framework. These both provide a bulletproof foundation for concurrent systems which has been highly optimized over the years, particularly in regard to distributed and multicore systems.

