Ethical Autonomous Vehicles by Matthieu Cherubini.
From genetic code to music notation, from communication systems for sensory impairments, such as sign language, to Morse Code, from safety codes and standards to social rules of conduct, the term »code« may outwardly designate recognizable elements and familiar processes, but what does it mean in terms of programming and computing?
The »Dictionary of Computing« defines code as »a rule for transforming a message from one symbolic form (the source alphabet) into another (the target alphabet).«  Therefore, code could be seen as a set of instructions »that changes the input from one state to another, and as a consequence the code performs work.«  This way of performing designates precisely one of its main characteristics: code is at the same time legible and executable; it is simultaneously a medium and an instruction. This essential virtue makes code different from common languages, which can be read or written but do not cause any changes by doing this per se. In that sense, computer code »is the first language that actually does what it says – it is a machine for converting meaning into action.« 
Another crucial aspect of computer code is its deceptive invisibility. Code is generally hidden; it lacks materiality in itself and remains mostly unseen inside the machine, but it generates visible, concrete, and tangible effects in the world. Taking a programmed sound work as an example, the different sounds or compositions would be the output, in other words, the result of one or many lines of code.
Similarly to code, the word algorithm is often associated with computing and programming, although the definition of algorithm, being a sequence of actions to be performed, could be applied for various procedures. An algorithm is a set of rules that specify how to solve a problem or perform a task. In that sense, a recipe or a manual of production could be understood as an algorithm, too. In computing, these sets of rules or steps are established in order to process data and, as we have already seen, produce an output.
Algorithms and code are also the invisible part, commonly summarized under the term software, which is »a generic term for those components of a computer system that are intangible rather than physical.«  By contrast, hardware is the compilation of physical components that form a computer system like, for example, the mainboard. In order that software and hardware can exchange information, a third element is needed, the interface, which also can be the link between software, hardware, and humans. To understand how this exchange works, we only have to think about a »power« button: the button is, namely, the interface between you and the electrical wiring behind the machine. You press it and the machine turns on and off.
Even in common, ordinary applications such as sending an SMS, code executes an extremely high number of algorithmic operations. In computers, encoding is the process in which a sequence of characters is transformed into a specific format for efficient transmission or storage. In order to convert an encoded format back into the original sequence of characters, the opposite process, called decoding, would be necessary. Both processes are commonly used in data communications, networking, and storage, and especially with regard to wireless communications systems. By running these and other processes, code nowadays has the capacity to process and control many different operations within seconds, shaping and creating new horizons for social, economic, or cultural activity.
 Andrew Butterfield and Gerard Ekembe Ngondi, »A Dictionary of Computer Science,« 7 ed., Oxford University Press, Oxford, 2016, p. 93.
 Rob Kitchin and Martin Dodge, »Code/Space: Software and Everyday Life,« The MIT Press, Cambridge (MA), London, 2011, p. 25.
 Alexander R. Galloway, »Protocol: How Control Exists after Decentralization,« The MIT Press, Cambridge (MA), London, 2004, p.166.
 Susan M. Hockey, »A Dictionary of Computing,« 2 ed., Oxford University Press, Oxford, 1986, p. 352.