As an engineer, I program from time to time. Sometimes I need programs to perform calculations, sometimes to structure data. And sometimes things get more hands-on, when a microcontroller needs to monitor, regulate, or control something — in other words, when working close to the hardware.

Over the years, I have worked with many other technicians and seen the same programming difficulties come up again and again.

I have noticed that every programming language has its own character and serves a particular audience. Some prioritize low-level control and therefore count from zero rather than one, because an index represents a memory offset — not, as we learn as children, the first position. Others prioritize memory safety but pay less attention to mathematical correctness: for example, large numbers can be converted to smaller types, silently changing their values. And the list goes on.

But which language places a particular emphasis on physical correctness in calculations?

Can I write:

var s as f64 in <cm> = 5

and trust the compiler to make sure I never accidentally add a value in inches to it?

If not, the best-case scenario is losing a few hours of work. In the worst case, such an error can be far more costly — as the loss of the Mars Climate Orbiter in 1999 demonstrated.

And which language lets us write physical formulas the way we learn them?

For example:

E = m⋅c²

instead of:

E = m * c**2

Beyond these technical requirements, another question matters to me: Can a language truly be easy to understand and, as a result, easy to maintain?

For me, that comes down to three requirements:

  • physical correctness,
  • mathematical notation,
  • and a simple, intuitive language.

I haven't found a programming language that brings these three requirements together.

So I started designing one myself.