« Importance of lightweight languages for embedded contexts

September 25, 2018 • ☕️ 1 min read

Compilers

A programming language is the art of designing an abstraction as to abstract away the complexities upon more and more layers of complexity. Over the past decade, upon the most computationally capable systems, we’re seeing the rise of slow, large-footprint languages. I’m not talking just Electron, I mean Node.js, Python, Java, and even Rust.

The issue isn’t just with laggy UIs, it’s that both, embedded systems, and modern OSs were built with standardization, efficiency, and interaction. With an 60KiB standard library this becomes impractical.

Examples

I’ve been developing VSL which is a high-level language that has an equivilent footprint to C. Compare C:

to Rust:

to VSL:

through these it can be clear where the issue is. The memory overhead of loading a 60KiB standard runtime library at compile-time, the overhead of bridging, and garbage collection is simply not practical.

We cannot be writing in C for embedded systems throughout the next century

C is vulnerable to numerous programmer bugs, unhandled error, unsafe casting, dangling pointers, memory management issues, and more.

So what?

Point of me writing this is to illustrate that it is time to move on to a smarter, more high-level language. Language design has evolved since 30 years ago and since then we’ve created OOP, FRP, and many incredible ways for fault-tolerant and easier programming. All of this is why I am again touting VSL— the language with the ease of Swift but the portability, speed, and lightweight nature of C.