Computer Science and the Humanities: The Study of Abstraction

Nicholas Chen
5 min readSep 16, 2019

I’m reading The Origins of Political Order by Francis Fukuyama right now. It was published in 2011, but 8 years of tumultuous developments later, it’s hard to believe it wasn’t written more recently — I’m pretty early in the book, but its analysis of political institutions and how they decay is uncanny in its relevance. Again, I’m far from finished with the book, so there’s not much I can say on that front. However, there was something in the first chapter that I found very interesting, on Fukuyama’s approach to theories. I’ll quote it below:

“What I am aiming for in this book is a middle-range theory that avoids the pitfalls both of excessive abstraction (the vice of economists) and excessive particularism (the problem of many historians and anthropologists).”

On the excessive particularism of historians and anthropologists, he earlier states the following.

“A lot of historical writing has been characterized as ODTAA — ‘one damn thing after another’ — without an effort to extract general rules or casual theories that can be applied in other circumstances.”

It’s easy to see his point. Grade school students believe history to be boring because they’re taught that it’s an arbitrary sequence of events and individuals. The Stamp Act, Boston Tea Party, Salutary Neglect, it all happened in some order no student is particularly excited to learn about. On the other hand, historians have good reason to fight against human tendencies to find order where there is none. It’s easy to abuse history, to impose your own trends on it to further some political/ideological aim, or even to just satisfy your own subconscious desire for order.

So, historians fight their hardest against careless generalization, and debate the particulars of history excessively. On the opposing end of the abstraction spectrum? Economists, who have no choice but to use some degree of abstraction to construct models are inevitably imprecise. Fukuyama wants to put himself between these extremes, and find some sort of desirable middle ground. In other words, he wants to moderate abstraction.

This raises an interesting question. Is there a way to systematically study abstraction? I think there is, and one field that does this very well is Computer Science.

What is abstraction?

Broadly speaking, abstraction is just short hand.

When you write a computer program in C++, it compiles into binary. In that sense, C++ is an abstraction of binary. But abstractions are commonplace in the humanities as well. Supply and Demand is an abstraction of an uncountably large number of real-life economic interactions. Another example: the historical statement, “Industrialization, nationalism, and alliances led to World War I.” A broadly true statement, if not a bit reductive. You could certainly go into more detail and get a statement that’s a lot more true than this broad summary, but the broad summary has it’s advantages.

In both code and the humanities, there is a tradeoff between briefness and precision. The less detail you go into, the more imprecisions there are, but the more practical and usable your theories are.

In this sense, generalized historical predictions like Mahan’s The Influence of Sea Power on History are like the Javascript/Python/high-level-languages of the humanities. Mahan’s book was widely influential and used in official US foreign policy for the better half of a century. Why? The same reason Javascript, Python and Ruby are used by startup companies. Like scripting languages, Mahan’s theories were abstracted to the point that they were actionable, and thus extremely useful to decision makers in the State Department. I’m not saying more abstraction is better. (Non hardware) startup companies shun low level languages like C in favor of high level ones like Javascript, but they’re still not (widely) adopting no-code platforms or visual scripting. Like Fukuyama, startup companies have to moderate abstraction. It’s not about more or less abstraction — it’s about finding the right level of abstraction.

There are many cases in history where using a theory with the wrong level of abstraction resulted in disaster. Extremely abstracted theories like Marxism resulted in the deaths/starvation of millions of people in China and Russia. On the opposite side of the coin, careless faith placed in the idea/abstraction of the free market resulted in economic disaster in the 2008 financial crisis.

Clearly, there is a need in the humanities to moderate abstraction, and there are dire consequences when this isn’t done well.

Why Computer Science

So why should the humanities look to Computer Science to learn how to moderate abstraction?The biggest reason is that there’s a profit incentive for computer scientists to moderate abstraction. Software companies that don’t moderate abstraction don’t survive.

Look on Medium and you’ll find a million stories written by startups on why they use their particular stack. Don’t use Electron. Use React Native. When to use functional programming, or object oriented programming. These technologies and paradigms are all abstractions. The difference here is that software companies are subject to profit incentives, and so they have to optimize much more aggressively towards moderating abstraction.

Additionally, there’s a much higher turnover rate: Startups fail a lot faster than nation-states or cultures do. When a startup decides its stack isn’t working, it either adapts or it fails, and very quickly another company takes it’s place. How long does it take for an abstraction in the humanities to fail? Take Mahan’s The Influence of Sea Power upon History. It’s thesis was that sea power, in the form of massive gunships, was the main measure of geopolitical power. This was taken to be fact up until WWII, when aircraft carriers proved superior at projecting power. Still, nations bought into Mahan’s abstraction — Imperial Japan prioritized the construction of destroyers over carriers and anti-submarine measures, leading to its eventual downfall. Buying into a theory with the wrong level of abstraction is far costlier in the humanities — it can quite literally lead to the collapse of entire empires. The cost is much lower in the world of information technology, and the high turnover rate means much more can be learned about abstraction.

Conclusion

All this is very speculative, and I don’t have any concrete examples of insights about abstraction you can apply from CS to the humanities. Still, I can think of a few places to start looking.

Fukuyama describes his approach as “comparative” and stitches together insights from diverse fields like Biology, Anthropology and History, having consulted many experts in those fields. It strikes me as somewhat analogous to importing libraries into your code. Fukuyama is not a biologist, but he’s consulted biologists who have packaged decades of research into concise insights he can then use in his analysis. Isn’t that somewhat similar to using someone else’s library in your code? As far as I can tell, there’s not much “infrastructure” surrounding comparative approaches to the humanities. Yet, anyone who’s written a line of code knows there’s a billion package managers out there, all dedicated to helping programmers build off of each others work. The only thing I can really think of that’s similar is academic citations, but that seems a lot less robust to me than a package manager (though I admittedly have 0 experience in academia). That’s one very tentative example of abstraction in CS applied to the humanities, I’m sure there are more.

In the humanities, there has always been a tradeoff between precise but uninsightful inquiry, and enlightening but error-prone generalization. I think there are many parallels between this and the concept of high/low level languages in Computer Science.

--

--

Nicholas Chen

Student; interested in Philosophy, Economics, and Computer Science, not in that order.