More Thoughts about the Current "Embodiment" of Code and Some of Its Impacts
How might the "random access", branching nature of our current computing paradigm affect our engagement with story and play - and how might that impact affect us?
I don’t feel quite ready yet to start shooting the next episode of the World of Code, so I thought I’d instead collect some of the further resources I’ve found and thoughts I’ve had on the current way in which code is “embodied” in computer hardware and some of the implications of that embodiment.
Diving more deeply into logic gates and their relationship to transistors and thus the integrated circuits that are the basis of almost all modern computers, I found the following videos particularly helpful:
The first helpful YouTube video I found was this hand-drawn intro to logic gates.
Much higher-quality, and much more helpful were these videos on how transistors run code and how transistors remember data from CoreDumped - although it probably helped that I’d worked through the previous less-polished video first.
In the background, as I’m refreshing and expanding my limited understanding of assembly language and how it relates to low-level computer hardware like opcodes (or, rather, the binary decoders that opcodes are triggering) and registers, has been a comment made in a conversation I had with a Ph.D. in Computer Science (AI) at my parish, who mentioned that “We’ve been through this same loss of knowledge about how computers actually work (that we’re experiencing now in the movement from actually programming computers to operating them with AI) in programming before, as we moved from ‘low-level’ computer languages like ‘assembly language’ [which are closer to how computers actually operate] to high-level computer languages like BASIC [which are designed to be easy for us humans to learn and use, but which need to be ‘compiled’ or ‘interpreted’ back into the low-level computer binaries that actually operate the computer]. The difference now is that the first move from low-level to high-level programming was deterministic [every high-level command that is compiled into a binary code sequence is always translated into the same binary code sequence, so it always works (or doesn’t work) in the same way], while this current move is probabilistic [AI will generate a stochastic (semi-random) solution that has an increasing chance of being a good solution, but which may or may not work].”
This comment, in conjunction with my research has also gotten me thinking a bit more about the current model of computing (random-access computing) not only in contrast to Alan Turing’s original thought-model of computing, but also in contrast to stochastic (semi-random) computing, which was another computing model that the one of the fathers of modern computing, John von Neumann, also thought up - and which seems at least somewhat related to what little I understand about quantum computing [link is to the Kurzgesagt video that was the first comprehensible entry point into understanding logic gates that I found], which is the main alternative to our current model of computing that we’re actively developing right now. [If anyone reading this knows whether there’s any real parallel between stochastic and quantum computing - or if I’m completely out to lunch here, please let me know in the comments!]
Of course, for the purposes of my World of Code videos, all this research is really just to get a stronger understanding of how computers actually “embody/enact” code, which I hope to be able to describe simply and accurately to people who really don’t want to know any of the details about code, but whom I am hoping to convince that a knowledge of at least the broad outlines of how code works is important and useful for thinking about the World of Code around us.
Given this, I’ve also been trying to wrap my brain around some of the implications of what it means to live in a World of Code, especially in contrast to the earlier World Without Code. What have we gained? What have we lost? What are some of the powers we can use and how should we use them and what are some of the very real dangers we may be unaware of and should watch out for?
One important aspect of this that I’ve been thinking about, of late, has been the impact of the World of Code on two fundamental human activities: stories and games.
In my recent presentation at Doxacon Seattle, I focussed on a few of the more positive impacts: the opportunity that increased engagement and immersion presents, as stories and games are merged into interactive fiction and/or emergent narrative computer games, for safely learning deep lessons through play and for increasing empathy and mutual understanding through immersive role-play.
In the following lightly edited article that I just wrote on the subject for the weekly parent bulletin of the school that I work for, I raise (at the end) some of what I would see as the potential negative implications of this impact - but I think the more important point that this article raises is the intrinsic connection between our current computing paradigm and the branching/looping gameplay of interactive fiction as a genre.
Connecting Computers, Code, Games, and Stories in Interactive Fiction
Ever since I began teaching computers, some form of "interactive fiction" - usually a choose-your-own-adventure-style game - has been the main example program I use to teach my students about computer programming. As I've been reflecting on the ways in which computers have been changing the world we live in for the new World of Code arc of my personal "Geek Orthodox" podcast, I've begun to think that this isn't so much due just to personal preference (I have always been a fan of games, especially "role-playing" games, and the "Choose Your Own Adventure" books, and narrative-focussed computer games in general), as it is to something fundamental to the "computerization" of the world in which we live.
Computers, given both their ubiquity and their usefulness for implementing rule-and-data-based activities such as games, have turned games from a casual, cooperative pastime into big business: millions are now being spent on and earned by so-called "triple-A" computer games, with one of the latest mega-hits, Baldur's Gate III, costing $100 million to make and earning over a billion dollars in sales.
While humans have always told stories and played games, computers have significantly changed the way we do both. And while the most visible version of this change may be the amazing CGI special effects that have become a standard part of modern movies, a much more significant and subtle change has come through the rise of "interactive fiction", the gamification of storytelling that one could say started with "Dungeons & Dragons" but which is now, either through branching or emergent narratives, an integral part of almost every major computer game on the market.
Computers, as already noted, lend themselves naturally to such activity: narratives naturally engage our attention - humans have always been fascinated and even driven by stories - and the complex branching and tracking of choices and their consequences is not only easily facilitated by computers, it actually parallels the natural structure of computer programming.
Computer programs, as I try to teach every one of my programming students, are essentially just a series of commands executed in sequence, with the natural sequential flow of the program being redirected in branches or loops depending upon the data stored in the computer's memory as a result of user input. In other words, computers
obey commands
in a sequence
that is alterable by conditions
dependent on data the user/programmer has entered in the computer's memory.
Once we understand that this is pretty much all there is to computer programming, we can begin to see why computers lend themselves to interactive - as opposed to simply sequential - fiction.
Interactive fiction involves not only our imagination, but also our agency, making it at least potentially more immersive and engaging than the more standard and traditional sequential fiction of a movie or a book. This, I think, is a far more fundamental reason why children find computer games so engaging, as opposed to the way my friend used to dismissively describe their attraction: "Ooh! Look at all the pretty colours!" Pretty colours (and good graphics) are nice, of course, but what is far more powerful is that we are involved in and actually controlling (to some extent) the story they are being used to present.
What this move from sequential to interactive fiction means for our society is something we'll inevitably explore together as we continue becoming ever more intertwined with the World of Code - the rise of the idea of the "multiverse" comes to mind, along with the illusion of unlimited agency, and maybe even our current obsession with AI as we move from playing games with one another to playing with the computer. But, whether the ultimate outcomes are positive or negative for our society, whether or not we as individuals become programmers - or even whether we as humans continue to do things like programming, with the rise of AI - it's probably a good idea to have some understanding of what's going on "behind the scenes" in our increasingly computerized world. This is why I feel so immensely privileged to have the opportunity not only to be able to help others understand and use computers as a member of our school’s Tech Team, but also to be able to teach those of our students who are interested in Computer Science about the World of Code in which we live.
"Forewarned is fore-armed," as they say, or, maybe less ominously and more positively: understanding is essential to knowing where you're going - and which routes and destinations we should choose.
By the way, for a great historical work (and some thought-provoking reflections on) the history of interactive fiction in computer games, be sure to check out Jimmy Maher’s work as “The Digital Antiquarian” at filfre.net!
If any of you have any thoughts to offer on any of the above, I’d love to receive your insights via the comments to consider as I work through the next episodes of the World of Code arc of the podcast!