“ It is important to keep in mind that computer code, and computer programs, are not machine creations and machines talking to themselves, but writings by humans. “ – Florian Cramer
As artist-programmers we were motivated to explore how different programming languages and creative coding frameworks offer different constraints to us, and how these constraints affect our ways of seeing and what we come to communicate through our artwork. We wanted to raise awareness of the influence of language on a programmer and explore alternative structures we can work with as a way of understanding the benefits of the constraints and to also offer routes of escape.
Our research looked at the idea of Linguistic Relativity in programming languages, as well as emotional expression in programming. We explored these ideas through writings on Critical Code Studies and Computer Mediated Communication. We then moved on to examine the programming language experiments known as Esoteric Programming Languages. These studies make the familiar unfamiliar, they test the boundaries of language, explore a detail of a process, and question if programming languages are written for machines or other people.
Our first experiments for an artefact were in code poetry. Our language of choice was C++, and using its key words we independently tried to write a biography about “Harold Warris Thompson”, a randomly chosen article from Wikipedia. These code poems did not seem to answer our questions and seemed to raise more questions about how much of the language we should use. Do we have to write poems that can compile as machine code in order to be within the constraints of the language? If not are we just playing with aesthetic properties of code? We tried a few other writing tasks but decided to examine language design in further detail.
Investigating deeper we began to reflect on the influence of particular cultures on programming language design, we explored the git history of P5.js to see how many people were contributing and where they were from. We began to see programming languages and creative coding frameworks as cross-cultural creations. Following on from Alan Blackwells essay 'Metaphors we program by: space, action and society in java' which explores the languages used in the documentation of the language rather than the language itself, we began examining the Processing reference pages, running the descriptions of functions through sentiment analysis revealing it as 'sad, analytical, and tentative'.
Esoteric programming languages are often made by smaller groups, often one person, exploring an idea of language in detail. What if we programmed with colours?(Piet) What if it looked like a recipe? (Chef) Or a play?(Shakespeare). These esoteric languages seemed to offer exciting artistic experiments, and although they were not intended to be used in production they are still ‘useful’ in illuminating the influence of language design choices in more popular languages. These esoteric languages led us to other programming environments, instruments, and tools, such as Quipu. Quipu are a 17th Century Andean database structure. Using knots and beads people could record numerical information which could be passed around and read, this data could encode stories or other detailed records of events as an alternative to our written text.
Our artefact used two resources, IBM Watson Personality Insights API and Rossetta Code. The Rosetta code is a programming chrestomathy website that present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different.
IBM Watson Personality Insights API derives insights about personality characteristics from social media, enterprise data, or other digital communications. Watson returns JSON showing how the inputted information scores on the big 5 personality indicators, as well as predictions on consumer preferences. This allows companies to take writing text from users and work out what to sell to them, or how to sell it.
We used these two resources to create a dataset on the personality insights into programming languages. This dataset then allowed us to create a website that can return the language with the highest score on a series of prompts. You can ask the website to show you a language that is calm and it will check the database for the calmest language according to the Watson api results. The list gets more ridiculous as you scroll down and we hope with this we begin to pull away at the ‘command and control’ of programming languages. Making people approach languages in a less serious way, have more fun with them. If we talk about BASIC believing in itself, or that SCHEME likes the outdoors then perhaps they seem more creative and we use them more playfully.
We are missing a scientific study here, but we are not scientists. This can be criticised as the personality insights tool is not intended for this use, the results are not really insightful, yet to us it does not matter too much. Perhaps we could have given random results from the questions and it would have been easier to create, but in following the process that we did we begin to tell a story which is easier to understand and communicate. A shared belief that BASIC is the most excitement seeking language helps us then talk about what that statement means.
With this we can start to think about ways of actually creating a programming languages that challenge authority, or are trusting, or like war films. What would those things look like? What would they feel like? Perhaps it is for artists to explore this area of research further.
“Indeed computer programs were first conceived in terms of weaving” - Alex McClean Artist-Programmers and Programming Languages For The Arts. 2011.
Written languages and computing both owe their origins to weaving. The Jacquard Loom with punch cards for patterns led to the computers we use today. The word ‘text’ comes from cloth and storytelling has long been described as spinning threads. Interesting research is being done to explore this idea of programming and weaving in the Penelope Project (http://penelope.hypotheses.org/).
Thinking of programming in these terms may allow the artist-programmer a way of using existing creative coding frameworks in a way that softens the edges of the structure. The constraints of language give us something to push up against, and being aware of where the boundaries are can help us express our ideas and choose appropriate structures for the work we make.
Fuller, M . (2008). Software Studies \ a lexicon. Cambridge, Mass : MIT.
Cramer,F. ( 2013). Anti-Media, Ephemera on speculative Arts. Rotterdam : nai010 publishers.
Cox,G . (2012) . Speaking Code, Coding as Aesthetic and Political Expression: Cambridge, Mass. : The MIT Press.
Abelson,H. Sussman,G. (1996) Structure and Interpretation of Computer Programs. Cambridge, Mass. ; London : MIT Press ; New York : McGraw-Hill
Sebesta,R. Mukherjee,S. Bhattacharjee,A. (2016) Concepts of programming languages Eleventh edition, Global edition. Harlow, Essex : Pearson Education Limited
McLean, Alex (2011) Artist-Programmers and Programming Languages for the Arts. Thesis. Goldsmiths, University of London.
Alvin Lucier (1965) . Music For Solo Performer [online video]. Available at: https://www.youtube.com/watch?v=bIPU2ynqy2Y
[epidemiC] (May 24, 2001) loveLetter.vbs reading. Bologna, D-I-N-A Festival.
[online video]. Available at: https://www.youtube.com/watch?v=jJFlRoQr96E