Stretching the strangeness budget to bridge language communities
This series of articles explores differences between programming languages—differences that might make each language the right tool for a different job, but that complicate translating concepts across languages.
What good is a programming language that translates to all the others? If its semantics don't translate faithfully, not a lot. If they do, developers can easily identify common problems and craft shared solutions even across language communities—the software community becomes less divided despite working on different stacks. Data scientists use Python, the web platform uses JavaScript, mobile app and backend people each use their own preferred languages (and legacy systems—ugh). But our different stacks shouldn't divide us.
Temper is a programming language designed for one thing: translating well to the others. It fills this gap in our collective toolbox; it allows sharing common solutions across all the language communities in an engineering organisation, or across the whole open-source community. One developer or a small team can use Temper to write a library that translates into all the other languages, supporting many language communities.
Each article in this series starts with a code fragment and explains problems with straightforward translations of it into various languages. Translating faithfully and providing idiomatic interfaces is hard, so understanding these differences is crucial to bridging language communities and preventing the languages we work in from dictating whom we can collaborate with.