Skip to content. | Skip to navigation

Personal tools

You are here: Home / Overview / Evolvix needs Flipped Programming Language Design

Evolvix needs Flipped Programming Language Design

Evolvix exists to make it easier for biologists to accurately model the systems they study. To meet this mission, we needed a new approach for designing programming languages in a stable way. Here we provide an overview.

It is the mission of Evolvix to make it easier for biologists to accurately model the systems they study. This requires:

  • accurate expressivity for biology's vast diversities, complexities, uncertainties, and scale differences;
  • simplicity to make it easy to get started and help experimental biologists plan experiments or analyze their data; 
  • long-term backwards compatibility to allow future users to efficiently build on published modeling code archives.


"Use the right language for a problem", programmers say. Yet, so far, no general language exists for biology.  Implementing such a language demands entirely new approaches, beyond improvements and additions to existing programming languages.

Evolvix flips the conventional approach to programming language design by pioneering a process that allows many diverse users to help review new capabilities for Evolvix before they get implemented. This improves essential capabilities, usability, long-term stability, and reduces implementation costs by avoiding unnecessary coding experiments.


Everything can be added later to a programming language, except simplicity.


Here is what the current prototype of Evolvix (Release 0.3.1) can do:

  • Evolvix makes it easy to implement pure mass-action models that are widely used in biology by providing a user-friendly way of describing them. Many biologists can productively use Evolvix without the need to know about the underlying mathematics of Continuous Time Markov-Chain models.
  • Evolvix makes it easy to simulate these models either deterministically (no randomness) or stochastically (with the randomness that inevitably comes from the in-divisible nature of individuals).
  • Evolvix makes it easy to extract from these simulations only those time series observations that are actually needed. It provides a dedicated time series query syntax that reduces the amount of data that must be recorded to observe results with a desired accuracy. This avoids swamping your hard drive with uninteresting numbers. 

What it cannot do, is take the mysteries and challenges out of biological research - no matter how much it simplifies modeling.


Experiences with this prototype of Evolvix have shown that it's lack of general-purpose programming capabilities can make it challenging to efficiently describe complex modeling scenarios (see the first simulation study that used Evolvix). The obvious solution is to integrate one of the many existing general-purpose programming languages into Evolvix (or the other way round). However, experiments and careful analyses we conducted have shown, that such a hybrid would greatly increase the overall language and system complexity and severely limit future development opportunities.

Therefore, Evolvix has taken an unconventional route: ultimate simplicity and long-term backwards compatibility come first. These requirements have resulted in our experimentation with diverse design approaches. After reviewing our experiences, we have defined the:

Flipped Programming Language Design Approach

that has first been published in the Annals of the New York Academy of Sciences. Here is Figure 4 from that study:


      A brief overview of the unconventional approach to designing the general-purpose programming capabilities of Evolvix.


(A) Most programming languages are designed by advanced programmers aiming to solve important types of problems in a better way; usually implementation is urgent and capabilities allow coding to start early. Due to the specialized nature of programming and the cost of gaining broad expert and user perspectives, a small sample size is often used. That small sample size lacks enough user and expert feedback during language design to break the curses of knowledge and ignorance. These curses make designers oblivious to idiosyncrasies and important missing features that frustrate both beginners and experts using the language. Many changes can be added after implementation starts, but fundamental redesigns are often prohibitively costly (e.g. changing names of logic operators that are confusing). Therefore the program's targeted environment and user accessibility should be integral to design. 

(B) Flipped Programming Language Design turns the tables in important ways by putting language designers in the hot seat (red) tasked with minimizing previously un-noted problems in language proposals as highlighted by users. Delayed implementation allows fundamental redesigns where needed in regards to environment and user accessibility. As an example from a different field, consider the 1940 Tacoma Narrows Bridge. Designs could have been changed before implementation, if more had known about “exceptional winds”. After construction, nothing could be done until it collapsed (see film ). It is often more difficult for a language designer to anticipate how a programming language for biology will be misread or fail than to solve such problems (as judged from several dozen redesigns of Evolvix); thus repeated rounds of rigorous review by users and experts are critical. Not all words and concepts in a language need maximal scrutiny, but basic concepts and operators certainly do.



Please get in touch, if you wish to support this rather unique ongoing work. There are many diverse opportunities, including providing expert or usability review, contributing to naming sessions or some aspect of project organization, or by providing financial support.