"Noether: Symmetry in Programming Language Design" by Daira Hopwood (2013)

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

Introduction to Neta and Language Symmetry

0:04 - 43 sec

Dara introduces herself, the Neta language, and the concept of symmetry in programming languages.

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

Software Crisis and Language Evolution

0:47 - 2 min, 25 sec

Dara discusses the software crisis and how languages have not evolved sufficiently to address it.

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

Symmetry and Language Properties

3:12 - 1 min, 45 sec

Exploration of the symmetries in programming languages and how they can be applied to practical language design.

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

Stratified Language Design in Neta

4:57 - 1 min, 27 sec

Dara details the stratified design of Neta and the trade-offs between language levels and symmetries.

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

Symmetry and Security in Programming

6:23 - 1 min, 52 sec

The role of symmetry in creating secure and reliable software and the impact of flawed language features.

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

Object Capability Model and Neta's Properties

8:15 - 1 min, 45 sec

Introduction to the object capability model and key properties of the Neta language.

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

Influences and Rationale Behind Neta

10:00 - 3 min, 7 sec

Dara explains the influences behind Neta and the rationale for a new language.

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

Transactionality and Performance in Neta

13:07 - 3 min, 38 sec

Discussion on transactionality in Neta and the impact of language design on performance.

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

Neta's Language Structure

16:45 - 26 min, 33 sec

The structured design of Neta from the core to the full language with concurrency and event loops.

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

Conclusion and Questions

43:18 - 56 sec

Dara concludes the presentation and opens the floor for questions.

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)

"Lessons from building GitHub code search" by Luke Francl (Strange Loop 2023)

Strange Loop Conference

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)

"Making Hard Things Easy" by Julia Evans (Strange Loop 2023)

Strange Loop Conference

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

"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson

Strange Loop Conference

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)

"The Trouble With Types" by Martin Odersky (2013)

Strange Loop Conference

Strange Loop Conference

An in-depth examination of Scala's type system, its challenges, and potential simplifications.