>>> print(“new blogpost”) – Why Digital HUMANISTS Should Learn the Basic Principles of Coding
Back in my school days, I was not very good at learning new languages, but I had one goal: No matter what country I am in, I will not starve, because I will be able to ask for food or order something in a restaurant. For example, I can read French quite well and understand a little bit, but the only sentence I can say without an accent is: “Un cheeseburger et un Coca Cola, s’il vous plaît!” (Important: Cola with a short “a” and emphasized on the last syllable!) Learning languages ensures that one is able to communicate – an ability that is just as necessary in a cooperation between humanists and computer scientists. For this reason, I started to learn Python:
>>> print(“I’d like a cheeseburger and a Coke, please!”)
This blog post is intended to encourage humanists who deal with or want to deal with DH and to look at the languages which they could achieve their project goals with. Historians, linguists, etc. do not have to develop their algorithms and codes themselves, as there are professionals, for example computer scientists, computational linguists, etc., at universities who do that for them. However, if both sides want to work together (and in the DH, I am strongly in favor of cooperative projects), there must also be an understanding of the approaches on both sides. Both sides must speak “one language,” which may be an exhausting approach process at first.
During my theology course in cooperation with the Institute of Computational Linguistics, my colleague and I have often noticed that we use the same terms for different topics and questions. What happens is that two young scientists might sit together and ask each other questions like school children: “Can you explain the term to me?” Discourse is a great example: First, it needs to be clarified that discourse segmentation does not have much to do with discourse philosophy. My colleague started to deal with the theological questions of our course and I wanted to understand what happens when she types some lines of code into the computer and a fascinating result will come out.
Learning languages has a long and important tradition in the humanities. Germanists, for example, learn Early Modern High German, Anglists learn Middle English, Historians learn Latin, Theologians learn Ancient Greek. We learn these languages with the belief that they help us to understand the contents and questions of our text-based sciences better and to gain a deeper insight into the subject matter. Sure, we also forget the details of the languages we don’t often use. But when we need them, we would never doubt their usefulness.
But programming languages seem to be a black box for many intellectuals. You type something into the computer and something happens. We get a result, we interpret it. This attitude is on the one hand very ignorant of those who wrote the code: They are degraded to “service providers” who do “something” to produce a result. Yet, on the other hand, it also misjudges the logic and theory behind the coding. Programming languages are also languages that lead to a deeper insight into our questions, and their rules and theories hardly differ from Latin or other “research-relevant” languages.
For humanists, it is not necessary to “speak” Python, R (or any other programming language) “accent-free,” but a basic understanding of the language’s rules, syntax, theory, and structure is needed. The German word “sprachfähig” (speech-enabled) is a good wordplay for this ability: It improves the humanists’ ability to communicate with computational scientist and their understanding of how codes and algorithms work.
The above mentioned “>>> print” example is a good starting point to explain what I’m actually about. The “print” command in Python specifies what should be displayed on the screen. In a nutshell, it is comparable to what we could also call “result.” The content of the parenthesis is what appears on the screen. I can also extend this code snippet with a small function and write a small program. Let’s assume I am in “Python-Land” where Python is spoken and I get hungry, I would say to a friend: “Oh, I’m hungry; I’d like a cheeseburger and a Coke, please.” In Python: “hungry = “I’d like a cheeseburger and a Coke, please!”” With this information, I would go to a restaurant and say “print(hungry)” and the native-speaking Pythoner would understand: “I’d like a cheeseburger and a Coke, please!” because he knows the “hungry =”-function I defined before.
>>>hungry = “I’d like a cheeseburger and a Coke, please!”
This is banal for computer scientists, but not for the average humanist. And if we apply this stupid example to loops, functions, variables, etc., we quickly notice that programming languages, like all languages, only appear complex at first, but then follow certain rules. I can promise all humanists that the “hungry” example is on the same level as “Cornelius est pater,” but Python has fewer grammatical exceptions than Latin.
I have already gained an important insight from this language learning process. Being able to communicate with partners and colleagues, because we understand the approaches of coding language theory and syntax, facilitates cooperation of one another, but also affects the presentation of results in courses and publications. Humanists must leave their “ivory tower” to do their presentations, because they must be comprehensible for mixed audiences of humanists and computer scientists. Cooperation means that both groups need progress in knowledge and insight. This ultimately leads to the fact that cooperating in DH must also develop a new “language” in the presentation of their results.