Thesis: Graceful Language Extensions and Interfaces
My thesis, Graceful Language Extensions and Interfaces, was completed at Victoria University of Wellington in 2014, supervised by James Noble and David Pearce.
It is available in the university library, or for download here or from the university's research archive.
Grace is a programming language under development aimed at education. Grace is object-oriented, imperative, and block-structured, and intended for use in first- and second-year object-oriented programming courses. We present a number of language features we have designed for Grace and implemented in our self-hosted compiler. We describe the design of a pattern-matching system with object-oriented structure and minimal extension to the language. We give a design for an object-based module system, which we use to build dialects, a means of extending and restricting the language available to the programmer, and of implementing domain-specific languages. We show a visual programming interface that melds visual editing (à la Scratch) with textual editing, and that uses our dialect system, and we give the results of a user experiment we performed to evaluate the usability of our interface.
There is accompanying additional auxiliary data for the benefit of future researchers:
- Minigrace: The source code of Minigrace, the Grace compiler I built, including its complete revision history as a Git repository. The repository is also available with Git from https://github.com/mwh/minigrace. Several bootstrap tarballs are also available:
- Grace web IDE: The web interface to Minigrace's ECMAScript backend.
- Tiled Grace: The source code of Tiled Grace, the combined graphical-textual interface described in Chapter 7 of the thesis. The repository is also available with Git from https://github.com/mwh/tiledgrace.
- Experimental data: Anonymised data from the experiment I conducted using Tiled Grace, including survey responses, instrumentation data, analysis scripts, and the instrumented interface used in the experiment. The data set is distributed under CC-BY 4.0 and created by Michael Homer.
- Grace-GTK: The source code of the Minigrace bindings to the GTK+ widget library described in section 8.4.1 of the thesis. The repository is also available with Git from https://github.com/mwh/grace-gtk.
- Grace-CUDA: The source code of the Minigrace plugin and runtime library for GPU programming described in section 8.4.2 of the thesis. The repository is also available with Git fromhttps://github.com/mwh/grace-cuda.
Several of my publications correspond to chapters of the thesis. These are:
- Patterns as Objects in Grace. Dynamic Language Symposium (DLS), 2012. Michael Homer, James Noble, Kim B. Bruce, Andrew P. Black, and David J. Pearce. (author copy) (Chapter 4)
- Modules as Gradually-Typed Objects. 7th Workshop on Dynamic Languages and Applications (DYLA), 2013. Michael Homer, James Noble, Kim B. Bruce, and Andrew P. Black. (author copy) (Chapter 5)
- Graceful Dialects. European Conference on Object-Oriented Programming (ECOOP), 2014. Michael Homer, Timothy Jones, James Noble, Kim B. Bruce, and Andrew P. Black. (author copy) (Chapter 6)
- A Tile-based Editor for a Textual Programming Language. IEEE Working Conference on Software Visualisation (VISSOFT), 2013. Michael Homer and James Noble. (author copy) (Chapter 7)
- Combining Tiled and Textual Views of Code. IEEE Working Conference on Software Visualisation (VISSOFT), 2014. Michael Homer and James Noble. (author copy) (Chapter 7)
Michael Homer — 2015