A programmable programming language

@article{Felleisen2018APP,
  title={A programmable programming language},
  author={Matthias Felleisen and Robert Bruce Findler and Matthew Flatt and Shriram Krishnamurthi and Eli Barzilay and Jay A. McCarthy and Sam Tobin-Hochstadt},
  journal={Communications of the ACM},
  year={2018},
  volume={61},
  pages={62 - 71},
  url={https://api.semanticscholar.org/CorpusID:3887010}
}
As the software industry enters the era of language-oriented programming, it needs programmable programming languages to meet the needs of the rapidly changing environment.

Figures from this paper

Digital Competencies of the Future Programmer: SWIFT

The article discusses the innovative Swift programming language, and the relevance of the use of a new language in the context of the digital economy is indicated.

Emerging languages: An alternative approach to teaching programming languages

An alternate approach to teaching a programming language course is presented that results in a variety of course desiderata including scope for instructor customization; alignment with current trends in language evolution, practice, and research; and congruence with industrial needs.

Injecting Language Workbench Technology into Mainstream Languages

It is proposed that the macro systems found in emerging industrial languages open a path towards delivering language workbenches as easy-to-adopt libraries as well as an implementation of a language workbench as a macro-library atop Racket.

A Typing Discipline for Hardware Interfaces

A dependent type-system and proof-of-concept modelling language is developed to reason about the physical structure of hardware interfaces using user provided descriptions and provides correct-by-construction guarantees that the interfaces on an IP Core will be well-typed if they adhere to a specified standard.

Scrambled Features for Breakfast: Concepts of Agile Language Development

Describing a framework to support simpler development of languages best suited to express the problems and solutions of each particular domain.

LLJava live at the loop: a case for heteroiconic staged meta-programming

LLJava-live, the staged API of the low-level JVM language LLJava, can be used to complement an interpreted EDSL with orthogonal and extensible compilation facilities to accelerate embedded domain-specific languages on the Java platform.

From Macros to DSLs: The Evolution of Racket

This paper presents the evolution of Racket’s macro system, including a false start, and assesses its current state.

Macros for domain-specific languages

This paper presents an architecture for implementing macro- Extensible DSLs on top of macro-extensible host languages, which empower programmers to safely grow DSL's on their own and tailor them to their needs.

SPLASH: G: Modular Educational Languages

A new theoretical foundation is provided that expresses the friction between the programming language and pedagogical approach in terms of two novel concepts: the program behavior gap and programming language mis-alignment.

A Proposal of Naturalistic Software Development Method

This article proposes a naturalistic software development method that focuses on the analysis and design stages of the software development process and seeks to contribute to closing the gap between the problem and the solution domains.
...

Programming languages as operating systems (or revenge of the son of the lisp machine)

The MrEd virtual machine serves both as the implementation platform for the DrScheme programming environment, and as the underlying Scheme engine for executing expressions and programs entered into

The Racket Manifesto

The paper explains these principles and how Racket lives up to them, presents the evaluation framework behind the design process, and concludes with a sketch of Racket's imperfections and opportunities for future improvements.

The Spoofax language workbench

Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. It provides a comprehensive environment that integrates syntax

The design and implementation of a dataflow language for scriptable debugging

The design of a language for scripting debuggers is presented, which offers powerful primitives that can precisely and concisely capture many important debugging and comprehension metaphors.

Linguistic reuse

This dissertation develops a framework to treat programming languages as software engineering artifacts, in which languages are identifiable, reusable entities that programmers can compose and link to produce larger languages.

Macro-by-example: Deriving syntactic transformations from their specifications

A “macro-by-example” specification language for syntactic abstractions in Lisp and related languages is described, which gives a formal semantics for the language and a derivation of a compiler from the semantics.

On the Expressive Power of Programming Languages

A formal notion of expressiveness is developed and its properties are investigated to demonstrate the theory's closeness to published intuitions on expressiveness, and the expressive power of several extensions of functional languages is analyzed.

Design Principles Behind Smalltalk

A language of description that serves as an interface between the models in the human mind and those in computing hardware, and a language of interaction that matches the human communication system to that of the computer.

Debugging macros

A stepping debugger specialized to the concerns of macro expansion is developed that presents the macro expansion process as a linear rewriting sequence of annotated terms; it graphically illustrates the binding structure of the program as expansion reveals it; and it adapts to the programmer's level of abstraction.