Methods of Data Collection + Analysis + Representation
Data Collection
To begin, I plan to research existing programming languages, ranging from languages with a higher barrier to entry to languages that have been specifically designed to be easily accessible to beginners. This research will be conducted in two parts. The first will be solo research focused on the language features themselves, as described by their official documentation. The second will be interviews that I will conduct with programmers and writers about their personal experiences with programming languages, including both people with little experience with programming and people with extensive experience.
Moving on from these existing examples, I plan to conduct research into theories and techniques of programming language design to learn about rationalising design choices and implementing them.
As for potential collaborators, I am a member with Creative Code Collective, a group based in Media Arts + Practice where creative and critical coders workshop and share around code. Within this group, I have often shared my work with other members—in particular, with Sarah Ciston, whose work is similarly centered around platforms in the programming experience. Between our individual but parallel projects, I hope to continue discussing and building upon each other’s ideas!
Analysis
With research gathered from existing languages and subject interviews, I will summarise the programming experience of various programming languages, determining philosophies and features that make a language feel “friendly” or “unfriendly”. In addition to analysing user-friendliness, I will explore reported experiences to outline how existing programming languages are able to embrace meaning, emotion, and poetics.
From this analysis, I will set out specific goals and ideals for designing my language in working towards both user-friendliness and poetics.
Representation
In the first stage, I will lay out all proposed language features. As demonstrated in this prototype website, individual pages explain how various proposed features in the language would work, and longer examples show sample programs using these features.
In the second stage, I will implement a working version of the language. This will involve a compiler or interpreter that can take these language features, process them, and produce real results. I anticipate that this will be the most challenging aspect, as I do not have any knowledge of this field and do not have a firm sense of how much I would be able to accomplish.
Throughout these two stages, I will be testing and iterating on features to make sure all abstract and technical aspects are sound. I will also be maintaining documentation by keeping a log of changes and updating the reference pages on this website.
As a potential third stage, I will also consider designing and developing an IDE (Integrated Development Environment) for the language. This would be an extension of the language, incorporating the philosophies of emotion and poetics into a broader programming experience. However, as my focus is currently on the language design itself, this will only be a stretch goal if time allows.