Do programming languages have a character?
While grasping basics of several programming languages, as an embodied learning — or kinaesthetics — designer I’ve often been coming to the observation that, besides being type-based and error bound for the most, each of them has a particular use, learning curve and workflow. More than that, it seems each of them has a certain character, just like various dances or verbal languages. To study this, I launched an open inquiry asking programmers to characterize the languages they use. Here is what the study showed.
keywords: #programming #language #emotion #character #learning #digitalembodiment
The study has been launched in the format of a questionnaire in 2 parts, including the following steps:
PART A — Generalities
- Country where you share the most cultural background with
Each participants was shown a list of 35 character traits to choose from and attribute to up to 3 programming languages: Proud, Soulful, Intrusive, Aggressive, Grounded, Explosive, Jumpy, Playful, Shameless, Bright, Agile, Groovy, Jazzy, Acrobatic, Elegant, Eloquent, Elitist, Fragile, Dark, Corny, Sensual, Sexual, Fast, Slow, Flowing, Zen, Visual, Light, Reflective, Meticulous, Isolated, Electric, Cartoony and Articulated. In addition, they could also write one extra character trait of their own when they judged it necessary. Here is how they were asked:
PART B — Characterization
Now you may pick up to 3 programming languages and think of them as characters with various emotions and qualities. To help, you could associate these languages with people you know well, or even movie characters.
- LANGUAGE 1 — Write the name of the chosen programming language at the end of each section
- LANGUAGE 2 — Write the name of the chosen programming language at the end of each section
- LANGUAGE 3 — Write the name of the chosen programming language at the end of each section
- If you had to recommend the easiest and useful programming language to learn, what would it be? Why?
- Would you like to add anything, concerning your inputs or more? Questions you might have?
The study comprised input from 34 programmers from varied levels. Among these 34 participants were 3 females, 30 males and 1 undefined gender. Regarding their cultural background, 19 from The Netherlands, 5 from France, 1 undefined and 1 from all countries following : Switzerland, India, Portugal, Italy, Singapore, Russia, Colombia, Japan and Iceland.
OBSERVATION 1 — TOP 5 languages
From the list of languages suggested (e.g. A.3.) and by adding their chosen languages to the list, the 34 participants generated the following order of popularity:
- 22 : HTML
- 21 : Python
- 14 : SQL
- 13 : Processing, Java
- 12 : C#
- 7 : PHP
- 6 : TypeScript
- 3 : Swift
- 2 : Ruby, Max/MSP, C
- 1 : Pascal, Objective-C, Assembly, Go, Super Collider, Bash, R, Basic, Visual Basic
OBSERVATION 2 — Emotional understanding
The participants had to characterize their most fluent programming language from the given list. For each language, there was a wide variety of emotional understanding. As one of the participant even mentioned: “My answers above are associations to projects I have done and written in those particular languages. It’s a bit difficult (for me) to characterize languages on their own.” Therefore it seems reasonable to assume that the context and purpose in which a programmer is using a specific language are key in conveying a certain emotional trait. In that sense, using a programming language in various experiences brings more comprehension of its character, as a verbal language could do for instance. Nevertheless, being sensitive to the various forms of communication we use on a daily basis is not given to all, just like body language. A repeated and conscious involvement (emotional training) is often necessary to connect more easily to these forms.
The characterization was boiled down to the most shared traits, therefore if 3 or more participants shared a certain trait for a common language, it would be taken into account. The top 5 languages stood out as the following :
- C++ : Grounded(8), Proud(6), Fast(6), Meticulous(5), Elitist(5), Dark(5)
- Python : Playful(7), Agile(6), Fast(5)
- HTML : Grounded(4), Fragile(3)
- CSS : Visual(3), Playful(3)
I would like to thank all the participants for contributing thoughtfully to the study.
By far, Python was the most popular language when the contributors were asked which one is the easiest to learn. One even stated that it “reads like a human language”. Funny enough, knowing that it has all been made my humans. It shows how very disconnected from our regular communication standards programming can be.
As you might know, I run Body.coding, a project aiming at bringing the youth to learn and perform programming languages, by transforming them from a type-based to a kinaesthetic-based format. Our current chapter is Body.scratch where we teach basics of Scratch language through choreography so youngsters’ body memory and expressivity is directly involved in the process.
I would now be curious to ask movers to associate certain disciplines and movements from their practice to the collection of character traits that the programmers found out. If you would like to take part in the study, contact me via Linkedin or comment below.
Thank you for reading me. I’m curious to know what was the most unexpected to you? Do you have any questions I could tackle for a next stage of the study? If you find this study insightful or intriguing, share it!
You can also check out Body.scratch or find more articles here.