Explicit and Controllable Assignment Semantics

07/25/2019
by   Dimitri Racordon, et al.
0

Despite the plethora of powerful software to spot bugs, identify performance bottlenecks or simply improve the overall quality of code, programming languages remain the first and most important tool of a developer. Therefore, appropriate abstractions, unambiguous syntaxes and intuitive semantics are paramount to convey intent concisely and efficiently. The continuing growth in computing power has allowed modern compilers and runtime system to handle once thought unrealistic features, such as type inference and reflection, making code simpler to write and clearer to read. Unfortunately, relics of the underlying memory model still transpire in most programming languages, leading to confusing assignment semantics. This paper introduces Anzen, a programming language that aims to make assignments easier to understand and manipulate. The language offers three assignment operators, with unequivocal semantics, that can reproduce all common imperative assignment strategies. It is accompanied by a type system based on type capabilities to enforce uniqueness and immutability. We present Anzen's features informally and formalize it by the means of a minimal calculus.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
12/06/2021

Hyperstyle: A Tool for Assessing the Code Quality of Solutions to Programming Assignments

In software engineering, it is not enough to simply write code that only...
research
11/02/2021

Do Names Echo Semantics? A Large-Scale Study of Identifiers Used in C++'s Named Casts

Developers relax restrictions on a type to reuse methods with other type...
research
07/15/2021

A Functional Programming Language with Versions

While modern software development heavily uses versioned packages, progr...
research
04/03/2021

Intersection Types for a Computational Lambda-Calculus with Global State

We study the semantics of an untyped lambda-calculus equipped with opera...
research
12/04/2009

Deterministic Consistency: A Programming Model for Shared Memory Parallelism

The difficulty of developing reliable parallel software is generating in...
research
07/02/2019

Local Reasoning for Robust Observational Equivalence

We propose a new core calculus for programming languages with effects, i...
research
10/15/2020

World Age in Julia: Optimizing Method Dispatch in the Presence of Eval (Extended Version)

Dynamic programming languages face semantic and performance challenges i...

Please sign up or login with your details

Forgot password? Click here to reset