When we think of programming, we usually think of software and computers, but there's a whole field of programming out there that uses nothing but inert materials and geometry.
We take matter for granted.
So much of our existence, especially our technological existence, can be credited to what are essentially little quirks in chemistry and physics impacting the properties and behaviors of materials most of us pay no mind to, even though we interact with them every day of our lives.
It's pretty much a guarantee that if water, in its solid phase of matter, didn't have a molecular structure that was more spaced apart than its liquid form (i.e., ice floats in water), life on Earth would have never taken off. If concrete wasn't so good at withstanding compressive loads, we probably wouldn't have skyscrapers (although maybe we would, except they'd be made of wood, which has it's own unique and desirable mechanical properties).
These properties may not seem like programming to you, but I would argue that's exactly what's going on in all of these scenarios. A program, or function, takes in some input, performs some kind of operation on it, and then gives back a result, frequently modified in some way. In the case of all the above examples, the inputs aren't a series of electrical signals (as they are in computer programming) but various mechanical inputs. Just as different computer programs are designed to complete different tasks and work with different data types, different forms of matter are suited to different tasks. The inert nature of glass makes it great for storing chemical compounds, but it's also a crappy thermal insulator (at least on its own). Furthermore, it doesn't make for the best of building materials, since it's so brittle (gorilla glass aside).
All of these examples just assume you have a block of the material in question sitting on your desk. Many more interesting things start happening when you beging to modify these materials with specific geometric patterns and/or additional materials/chemicals/etc. (ref. below ⬇⬇⬇)
A door handle made from a mechanical metamaterial. There are no "moving parts", per se, but the entire lattice structure is designed to selectively bend in specific regions, thereby executing a door handle "program". In fact, it's my belief that you can break down all of materials science into the fundamental engineering bins of hardware, firmware, and software. Below, I break these concepts down and compare them to the way we typically think of each concept with respect to a device like a computer.
For the laptop I'm writing this article on, the hardware is the physical components that comprise all of the laptop's systems: the display, the motherboard, the fans, the disk drive (yes, my home laptop is so old it still has a disk drive). It's important to note: the hardware isn't the systems themselves but the physical bits and pieces that go into them. So for the display, the hardware includes my laptop's LCD screen, the display board (and all the integrated circuits and circuit board traces that connect them), as well as the cables connecting those pieces together. Each of these hardware components can do only a handful of things (carry current, compute a particular set of inputs, deliver a voltage differential to an array of thin film transistors), but together they produce a highly complex system.
For matter, I would consider the hardware to be the intrinsic properties of the material. Things like density, elastic modulus, and conductivity (both electrical and thermal). These are properties that are set by the atomic and molecular nature of the materials. While there are lots of ways these material behaviors can be tweaked, those "tweaked" behaviors are still derived from the intrinsic material "hardware".
An example: you can make a sheet of wood more flexible by cutting a living hinge pattern into it, but you can't make it sink in water, no matter what you do. The way I think of it, "hardware" in a materials sense (since, technically, it's always hardware) is the set of material properties that limit what you can get any given material to do through physical modifications (the "firmware" and "software" components I'm about to discuss).
Going back to our laptop example, the firmware is the code that is hard written to the read-only memory. This is the code, which runs on the hardware, that enables the most basic of computer operations to happen. It's firmware that enables the disk drives, web cams, and network cards to properly operate. While firmware can be modified, the vast majority of us are neither doing that, nor even thinking about the firmware executing when we perform activities like connecting to a wifi network.
In the case of materials, I can think of no better example than the living hinge. A mainstay among laser cutting designs, living hinges can make sheets of wood an plastic dramatically more flexible and bendable than they would otherwise be. To do this, the material is only physically changed in a small way: think parallel cuts are added, perpendicular to the axis the sheet is supposed to bend along.
I would also classify the flexures featured in the latest Magnitude and Direction as a type of material firmware. By creating dramatic variations in cross section, otherwise rigid materials can become flexible and serve as hinge mechanisms that move but are made of only one part (in contrast to typical door hinges, which have upwards of 3 or 4 different components, at least).
A flexure made from laser cut wood designed to linearly translate a region in only one direction.
In any of these cases, though, it's important to note that the additional features conferred to the material through modifying its geometry are also restricted by that geometry. A living hinge can improve the bendability of something, but it can only improve the bendability. The same goes for firmware on my laptop: the code that allows my disk drive to operate can't be ported over to operate my network router.
Despite the limitations of geometric patterning (which is very "firmware" in nature), being able to dramatically change an object's behavior through nothing more than a few well-placed cuts is very powerful and opens up an entirely new design vocabulary.
For me, especially, this new way of thinking about design is important. Being able to give conventional materials unconventional mechanical behaviors is a large focus of my PhD research. In my case the goal is to take synthetic materials that are frequently used in surgery today (e.g., PTFE, silicone, polypropylene) and geometrically modify them to behave more like the human tissues they're used to repair. On first pass, you might think that it would be desireable to repair bodily tissues with the strongest materials possible, but that doesn't necessarily alleviate the problem so much as it transfers it somewhere else - the stress shielding of bone implants is a very common example.
Stress shielding: Titanium is much harder than bone. When a titanium hip prosthesis is implanted, it can remove load away from the femur, which actually needs a certain amount of pressure to heal and function properly.
Furthermore, in the case of many tissues in the body, the fibers and proteins that make up their structure are not arranged in a homogeneous manner - that is, the tissues respond to force or pressure differently in one direction than it does another. The promise of mechanical metamaterials, and the "firmware" layer of materials science is that we can, without creating new compounds from scratch (i.e., the molecular/formulation level) develop systems that can better replicate the natural behaviors of human tissues, among other mechanically heterogeneous compounds we encounter in everyday life.
If you're still a little confused by what I'm describing as a material's "firmware" then check out this video from Disney Research, which gives a great example of using a single material to produce a model with mechanically distinct regions.
Continuing our computer analogy, software is the part of the computer you most often interact with. Like firmware, it is a collection of code, but unlike firmware it is much more "generalist" in nature. Firmware controls hardware and specified how that hardware performs just one set of activities. Software, on the other hand, while still leveraging much of the same hardware, defines more abstract operations that we subsequently add our intentions to in order to get the outcomes we want. Our browsers, word processors, and photo editors are all software.
I'm not going to lie, in the materials world, we're only just getting to this level of development. The vast majority of our efforts so far have been dedicated to the discovery of entirely new materials ("hardware") and unique methods of manufacturing said materials into structures that confer unexpected properties ("firmware"). Fields of study like self-assembly and metamaterial origami are some of the best examples I can think of where materials are designed in such a way as to be able to perform several different tasks depending on the stimuli provided. Even the most advanced metamaterials, however, can only handle a few distinct operations at best, currently, far less "abstraction" than many of our most simple computer software.
I do believe we are moving towards a time, though, where we will be able to control matter to such a degree that whether a given piece of furniture in our house is a table or a bed depends only on the kind of light we shine on it, or the voltage we pass through it. And, no, any of the slick, modern, space-saving furniture that's out there today doesn't count, because it achieves these tasks through complex mechanical systems comprised out of many discrete parts. I envision a future where mechanical complexity is not tied to a parts count, but rather inversely related to it. Where the inherent patterning of a material - from the micro to the meso - determines a wide range of functionalities, just as a complex code base determines the functionality of the browser you're using to read this.
Will it take a while for us to get there? No doubt. But I do think it is something we will achieve. This is a time of matter, and it'll only be a matter of time.