what is software

by Alexia Lavoie Landry

For a better understanding of software, we must ask the question of how it started and with whom it started with. Some answer to that question can be found in a text from Michael S. Mahoney, an historian of science that published an article about the history of software. In his article, he emphasis on the fact that software should not be seen as a single device, but more as schemes provided with instructions that we, humans give. Software has been designed by humans for their own purpose, and still, we often see it as something that “happened to us”. If we want to understand how software was created, we need to acknowledge that its creation happened simultaneously in various communities that were in the need of greater research capacities in their respective fields. We must be aware that the evolution of software didn’t happen in a linear perspective, but in a long-lasting process of accumulation of new paradigms, theoretical frameworks in which theories are formulated. Those communities were mathematicians, scientists, production teams, maintenance people, government structures, military divisions, designers, etc. Each of them had its own specific needs and perceptions (interpretation) of their field of study and developed their respective languages and diagnostic compilers, as well as representation techniques to interpret data.

When we think about computation we need to stop separating the subjective from the theory, because in fact, it has much to do with the vision the communities had of the world at the moment they created them. Software is the product of our own decision process, will and capacity to structure data. « There were never indications on how the machine should formally look like or be programmed »1. We are the one that designed and programmed, in order to create the symbols which have the capacity to lead to actions. But those symbols do not mean anything for the computer, we still end up interpreting them.

Beyond it’s relatively complex heritage, how can we describe software? Software can be difficult to explain because it is « virtual », or not « physical » like computer hardware is. Instead, software consists of non-tangible lines of code, written by computer programmers that are compiled into a software program. The software program and it’s codes is stored as binary data, a numeric system that only uses two digits — 0 and 1, on a computer’s hard drive. The message from the software is a priory intangible and needs to be transmitted to the user, this is also the role of the software. The actual image that we will read and interpret on the computer is made by signals passing through the tangible elements of the machine. It creates voltage-contrast images that we see through a user-interface, which is also part of the software. When we buy a software program, it comes on a CD-ROM, DVD, or other type of media, but it is only a physical way of storing the software. In other words, it is not the actual software that is tangible, it is only the medium that is used to distribute the software.

In one of his articles, Alan Kay, an American computer scientist uses the analogy of the human body to help us understand the concept of software. Computer hardware relies on many physical systems such as shafts, cards, transitors, circuits, chips, etc. Those are the tangible elements and we could compare them to our bones, veins, artery, tissues that form organs. We could then compare our body to our own computer, “the sommation of our human hardware”, accumulating data from our senses (the user interface). At the center of the loop, our brain retrieves information from our senses and produces an interpretation of them that leads to actions. Our neurone as well as our senses is our “human software”.

Why is that concept so hard to understand? S. Mahoney explains that computing and software has not one, but “many histories”, and that it is part of what makes it so difficult to represent. In order to study the history of computation, he suggests to turn the question of « how we have put the world into computers » to « how we have come to view the world through a computational lens ». We have now an indications of the primary motivations to it, we must recognize that It is much later that automating programming environment allowed more people to use software. Automating programming environment restricts the amount of choices the programmer has and direct his tasks. It has brought democratization of the process and small teams and individuals were able to start exploring computation.

The user-interface in time has also evolved a lot. User-interface is used in order to amplify the stimulation on the user. It is important here to define the concept of interface in the context of a software and how it impacts on society. An interface is an abstractions that helps us read and interpret the informations. It is presented to us under various forms. For example, the same application will be appearing differently on an apple watch than on a website, even if they allow both the same function. User interface has been a great tool in the context of capitalism because it has participated into democratizing access to software and allows to whom are behind them to influence the user. The way an interface is designed impacts on a high level the lecture of data. In that sense, it has a big role in setting the trends and raising the awareness. Through it’s creation and selection of the content, designers have the power to transform the way we see things.

Since 1850, software has evolved from the desire to come up with operational unified theories to the development of complex communication patterns between humans and media. We are now far from the low-level programming called coding, developed by research communities. We have now developed many languages and ways of programming, all of them in the will of increasing efficiency and minimizing mistakes. Whit it’s relative democratization, software occupies a central place in society since it is at the heart of contemporary decision- making strategies. It’s implementation comes upstream in the process and repercussions are extremely difficult to control and it has led to new contemporary challenges such as data storage and management.

Finally, with a narrative structured around human agency, how can we consider a possibility for software to interpret themselves, learn and reason? If computers can only do what they are programmed to do, we could have a doubt about the possibility of artificial intelligence. Alan Kay argues; « it will be the same for a fertilized egg, and yet, it will develop an intelligence »2.
Biology demonstrates that simple materials can be formed into exceedingly complex organizations that can interpret themselves and change themselves dynamically. « Some of them even appear to think »3.

1 Mahoney, M. S. “What Makes the History of Software Hard.” IEEE Annals of the History of Computing 30, no. 3 (July 2008): 8–18
2 Kay, Alan. “Computer Software.” Scientific American 251, no. 3 (September 1984): 52–59.
3 Idem


by Alice Cormier-Cohen

The term software is defined by the Oxford English dictionary as “the programs and other operating information used by a computer.” Software is written in a certain language by a programmer and translated into machine language by a device. It tells the hardware what to do. In a computer, software is the variable and hardware is the invariable. Software is the changeable part of a system.

The history of software is often told in the sequence of evolution of its form. According to Michael S. Mahoney in What Makes the History of Software, it should not be about how the computer itself has changed activities, but how people have used it to change their activities. It is not as if people have been waiting for the computer to appear. “The history of software is the history of how various communities of practitioners have put their portion of the world into the computer. That has meant translating their experience and understanding of the world into computational models, which in turn has meant creating new ways of thinking about the world computationally and devising new tools for expressing that thinking in the form of working programs.”1
In this sense, a common misconception about software is what we think it does versus what it really does. What it can do relies entirely on its instructions, on the narrative it was given. Software has the potential of doing anything, it only depends on what people want it to do and if they make themselves understood by the machine. Engineers bring a new universe to life by designing. Software is full of potential and open to imagination but has become a commodity. It is seen as a tool, something that you do something with. We often just adopt them instead of improving them. Software should be used in a way that is changeable, or hackable as Matthew Fuller writes in Software Studies, in a way that “allows and encourages those networked or enmeshed within it to gain traction on its multiple scales of operation.”2

The mix of data and information at different scales and the freedom that its design allows makes software so powerful and interesting. “It is a medium that can dynamically simulate the details of any other medium, including media that cannot exist physically, it is not a tool, although it can act like many tools. It is the first metamedium, and as such it has degrees of freedom for representation and expression never before encountered and as yet barely investigated.” 3 Research and development has led to so many new ideas. Alan Kay in Computer Software argues that they must become a part of our knowledge and valued as reading and writing are for personal and societal growth because they have such an important role.

There is a wide variety of what we can program machines to do. To understand software, we need to understand not only what it does, but where it comes from and anticipate what it can do. The idea of change is very important in software, as most are born out of improvements. It is the designer that decides what to develop and what to change. Change is an important part of designing as most software is based off existing symbols and scripts. Designing software is about understanding sequences and transforming and modifying existing ones. This might cause problems as the complexity of software sometimes makes it too complicated (time wise and cost wise) or impossible to modify. Also, with time, older software is hard to use because of changes in technologies and therefore cannot be experienced and understood properly. The legacy of a software is a challenge we will have to live with and learn to deal with as it changes so rapidly.

Software “provides a way of talking about the materiality of abstraction.”4 A lot of literature mentions the flexibility, creativity and freedom software allows and how it makes its design close to art. Software has entered the world of art like many other fields. Software is operative and, as art is, is about experiencing. It allows to trigger actions and create new worlds. It is a medium that opens the door to the ‘invisible’. There is a fine line between art and software.

As in art, in architecture software can allow the development of new design strategies or new ways of showing what one really wants to do. The field of architecture has been very slow to embrace digital technologies compared to other branches and in other ways than drafting. Architecture selected the more conservative aspect of technology. Today, most architecture offices use drafting and modeling software as tools. Building information modeling (BIM) has helped construction professionals visualize, plan and design together on a central model more efficiently. These examples show how software, in architecture as in many fields, is used as a tool. In A-Ware, Keller Easterling argues that software could be used in a more complex way in architecture. Other fields have used it to multiplicate information and things creating diverse and complex networks. Architects, for example, should employ these strategies to multiply geometric components with sites and data for a more complex understanding of the territory. A good example is Zaha Hadid Architects who use existing software, but also develop their own software tools and scripting techniques to achieve their design goals.

It appears today that we cannot live without software which for Jack Burnham in Notes on art and information processing, is more dangerous and problematic than the dilemmas they are designed to solve because we are used to using it as a tool. It has become a necessity for many tasks. It is clear though that software occupies an integral part of our lives at many levels and that it is important to understand it, use it and change it. It is a skill that should be learned by all because of the possibilities it offers. Software is designed by us, for us. With the place they have in our lives, would it be dangerous if everyone was able to hack or change a software?

1 Michael S. Mahoney, What Makes the History of Software Hard.
2 Matthew Fuller, Software Studies.
3 Alan Kay, Computer Software.
4 Matthew Fuller, Software Studies.



Timeline of Computer History

Alan Turing “On Computable Numbers” (1936)

Demonstration of a Turing Machine:

Time Magazine Interview of Alan Kay (2013)

Seymour Papert on LOGO and coding literacy:


Leave a Reply

Your email address will not be published. Required fields are marked *

Blog authors are solely responsible for the content of the blogs listed in the directory. Neither the content of these blogs, nor the links to other web sites, are screened, approved, reviewed or endorsed by McGill University. The text and other material on these blogs are the opinion of the specific author and are not statements of advice, opinion, or information of McGill.