"Noether: Symmetry in Programming Language Design" by Daira Hopwood (2013)
Strange Loop Conference
44 min, 20 sec
Dara presents the concept and design of a programming language called Neta, emphasizing the importance of symmetry in programming language design.
Summary
- Dara introduces Neta, a programming language demonstrating symmetry principles in language design.
- Explores how programming languages have not kept up with hardware advancements, contributing to a software crisis.
- Argues that correctness, security, and reliability in software are interconnected and can be improved through language symmetry.
- Discusses stratified language design, where each level of the language breaks a symmetry from the previous level, retaining only essential ones.
- Details the structure of Neta, which ranges from a pure functional core to layers with added features like parallelism, transactions, and concurrency.
Chapter 1

Dara introduces herself, the Neta language, and the concept of symmetry in programming languages.
- Dara, the creator of Neta, aims to convince the importance of symmetry in language design.
- Uses Neta as an example of applying symmetry principles to create better programming languages.
- Highlights the need for languages to express powerful abstractions to tackle the complexity of modern computing.

Chapter 2

Dara discusses the software crisis and how languages have not evolved sufficiently to address it.
- Computers have vastly increased in power and storage, yet languages have not adapted proportionally.
- Quotes Dijkstra on the complexity of software and the ongoing software crisis.
- Mentions that the NSA exploits flaws in software due to inadequate language tools.

Chapter 3

Exploration of the symmetries in programming languages and how they can be applied to practical language design.
- Defines symmetry in the context of programming languages, linking it to the concept in physics and mathematics.
- Discusses several symmetries that are desirable in programming languages, such as confluence and variable renaming.
- Analyzes how certain language features can interfere with these symmetries and proposes strategies to mitigate these disruptions.

Chapter 4

Dara details the stratified design of Neta and the trade-offs between language levels and symmetries.
- Introduces the concept of stratified languages, with different levels of complexity and symmetry.
- Each level adds features and breaks one symmetry from the previous level.
- Discusses the importance of retaining certain symmetries and the trade-off in the number of language levels.

Chapter 5

The role of symmetry in creating secure and reliable software and the impact of flawed language features.
- Examines common language features that hinder the creation of secure software, like side effects and unhygienic features.
- Emphasizes the need for languages that avoid these pitfalls to enhance security and reliability.
- Highlights the connection between symmetry, security, and reliability in programming.

Chapter 6

Introduction to the object capability model and key properties of the Neta language.
- Describes Neta as an object capability language that ties authority to references, avoiding separate access control layers.
- Points out that Neta is parallel and concurrent, separating parallelism for efficiency from the more complex concurrency.

Chapter 7

Dara explains the influences behind Neta and the rationale for a new language.
- Names the language after Emmy Noether, a mathematician known for her work on symmetry.
- Explains the need for a new language by highlighting the limitations and safety issues in existing languages like OCaml and Haskell.

Chapter 8

Discussion on transactionality in Neta and the impact of language design on performance.
- Describes how Neta handles failures through transactionality, providing a strong exception guarantee.
- Addresses the misconception that performance should not be an issue due to hardware advancements, explaining the need for efficient transactionality.

Chapter 9

The structured design of Neta from the core to the full language with concurrency and event loops.
- Details the various subsets of Neta, starting with a deterministic, strict, pure functional core.
- Sequentially adds features such as parallelism, transactions, laziness, and full concurrency.
- Ensures that despite the added complexity, the language remains memory safe and avoids race conditions.

Chapter 10

Dara concludes the presentation and opens the floor for questions.
- Summarizes the key points of the presentation, including the motivation for Neta and its language design philosophy.
- Emphasizes the importance of symmetry in creating efficient, secure, and reliable programming languages.
- Encourages the audience to review the slides for more detail and invites questions for further discussion.

More Strange Loop Conference summaries

"Lessons from building GitHub code search" by Luke Francl (Strange Loop 2023)
Strange Loop Conference
Luke Francl at GitHub discusses the challenges and solutions in building the new GitHub code search, 'Blackbird'.

"Making Hard Things Easy" by Julia Evans (Strange Loop 2023)
Strange Loop Conference
A detailed exploration of why systems like DNS, HTTP, and Bash can be challenging to master, even when they seem fundamental, and strategies to demystify them.

"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
The talk discusses the benefits, challenges, and techniques of simulation testing in distributed systems.

"The Trouble With Types" by Martin Odersky (2013)
Strange Loop Conference
An in-depth examination of Scala's type system, its challenges, and potential simplifications.