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.
87 Citations
Digital Competencies of the Future Programmer: SWIFT
- 2020
Computer Science, Economics
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
- 2019
Computer Science
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
- 2023
Computer Science
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
- 2019
Computer Science, Engineering
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
- 2023
Computer Science, Linguistics
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
- 2021
Computer Science
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
- 2019
Computer Science
This paper presents the evolution of Racket’s macro system, including a false start, and assesses its current state.
Macros for domain-specific languages
- 2020
Computer Science
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
Computer Science, Education
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
- 2024
Computer Science
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.
45 References
Programming languages as operating systems (or revenge of the son of the lisp machine)
- 1999
Computer Science
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
- 2015
Computer Science
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
- 2010
Computer Science, Engineering
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
- 2006
Computer Science
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
- 2001
Linguistics, Computer Science
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
- 1987
Computer Science
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
- 1990
Computer Science
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
- 2006
Computer Science
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
- 2007
Computer Science
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.