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.