Mike Samuel - Temper

Quick Overview

Mike Samuel, creator of the Temper programming language, explains that Temper aims to be a multi-language ecosystem that allows developers to write code once and deploy it across various runtimes, offering a balance between high-level functional features and low-level control, which he believes differentiates it from other languages like Scala, which he notes had a more complex ecosystem.

Key Points: Temper's goal is to support many language communities and libraries with an idiomatic interface, aiming to allow developers to write code once and deploy across multiple runtimes. The language was intentionally designed to avoid the perceived complexity and lack of widespread adoption of projects like Scala, particularly regarding its ecosystem and syntax. Temper is designed so that its core definitions translate well across different targets, such as JavaScript (via compilation to JS) and JVM languages like Java and Scala. A key feature discussed is that the compiler handles the complexity of translating high-level functional concepts (like tuples and ADTs) into lower-level paradigms like object-oriented code or imperative JavaScript. Samuel cites the need for a robust ecosystem that supports multiple languages and provides reliable security analysis/auditing as a major focus for Temper. The design prioritizes not just performance but also ease of reading and maintenance for programmers, even those unfamiliar with functional programming. The project began around 2009, predating many modern multi-language tooling efforts, and was motivated by the desire to solve the problem of language fragmentation across Google's internal systems.

Context: This interview segment features Mike Samuel, the creator of the Temper programming language, speaking with Andrew Lisowski on the DevTools.fm podcast. Samuel provides background on the motivation behind Temper, which was to create a unified, idiomatic programming ecosystem that could interoperate well between different target platforms (like JavaScript and JVM) and appeal to developers from various language backgrounds, including those familiar with both functional and object-oriented paradigms.

Raw markdown version of this recap