The Difference Between Normal Software and AI

Ben Green
7 min readNov 27, 2023

--

Computers are machines built to perform logical actions. Normal software is a set of instructions that a computer can run. AI software is also a set of instructions that a computer can run. It’s how they’re made that makes the difference and what makes AI so powerful and weird.

           computer(computer.logic)  >  computer(human.logic)

Modern day (normal) software is extremely complex but has only reached this state through hordes of scientists and engineers working rigorously on each and every step. From the pulses of electricity that make the 1’s in binary, to the simple logic switches that make up a processor, to the combination of these into tiny adding, subtracting and multiplication machines, to these combined in different ways to make complicated data wrangling functions.

All this is then packaged up and represented by a series of increasingly human-friendly coding languages so that when it all comes together a software developer can control the flow of electrical micro-information in what is essentially English.

The end result is completely indecipherable to any human, yet humans have created every step. The instructions that actually run have been transformed beyond all recognition, yet each level of transformation is completely understood. No one could write (complex) software in binary but through the combined efforts of 1000s of us over many decades, we write a kind of Mathsy-English that comes out as binary. Almost like how people built the Titanic but no single person could make the hull, the engines, the leather sofas, the crystal chandeliers etc, all from scratch.

The point I’m trying to make is that computers may seem to possess magic powers but they are carrying out an exact plan that we have made for them. Every single fraction of an action your phone is doing right now has been planned out and brought into reality by (a team of) people, usually with great difficulty. If this then that. A million times, a million different ways. Connected in a boggling honeycomb of complexity, but each designed and created by a mind like yours.

This puts certain limitations on what we can make. As anyone who’s written software will know, computers are idiots. Every step needs to be defined precisely in purely logic terms. Each eventuality explicitly handled. The computer will never read between the lines and never assume anything obvious. What we can say in 5 minutes might take weeks to code. It’s painstaking, it always goes wrong and it’s the reason software engineers are some of the highest paid workers around.

The results of this cerebral labour are often quite simple too really. Think of Facebook. It has 75,000 employees and all it essentially does is take user input in the form of text and images, store them in databases and show them to other users and allow them to comment on them. Most big tech companies just take some form of user input, move it around a bit, and display it somewhere else, maybe allowing the user to edit said data in fairly basic ways (YouTube, AirBnb, Photoshop). Even most video game are essentially taking basic user inputs and applying the standard laws of physics to them. Software that actually changes inputed data in a meaningful way has only just started popping up in the last decade or so.

This is because real intelligence in machines is incredibly hard to do. So hard that it’s all but impossible for people to code directly. To connect comments to photos on Facebook you can imagine the logical steps you might need a bit of software to take, but to write a poem, or detect a certain face, or extract meaning from some text, where would you begin? There are too many logical rules we would have to specify, too many chains of possibilities. Even if we had good ideas about how to do it, we wouldn’t have time to do it, and we wouldn’t be able to balance it all in our heads to make a coherent attempt at it… There’s a language barrier between humans and computers. We’ve done our best to break it down over the years but for some tasks, it’s just too great.

So. We come at it from another angle. We admit defeat and get help from the natives. We get computers to make it.

We do this by making a bit of normal software that takes in large amounts of data, and through trial and error, experimentation and refinement, in a process that takes anywhere from seconds to days, outputs a new bit of software. This is second generation computer instructions, instructions designed by instructions. We designed the author (the training algorithms), but the books it writes we could never.

That’s because it is written in a language as foreign to us as could be imagined. “Matrix multiplication”. Representing data as large sets of numbers and multiplying them together time after time in different combinations and using different constants; shrinking and enlarging and twisting them in ways that even the most mathematical among us could never understand. Then at the end, against all the odds, when they’ve been reflected and refined, cajoled and warped, melted and morphed ; these numbers come out and mean something. Whether your face unlocks your phone for example, or the configuration of pixels on one of this article’s generated images.

This large scale multiplication of numbers is essentially just a way of giving the training software infinite possibilities to carve out a very exact solution. The important thing is it can experiment with many, many degrees of freedom. Along with a sensible method of exploring these possibilities, enough computing power, and a way of telling it it’s done a good job, eventually, they’re bound to arrive at solutions that can better solve problems than our human attempts at computer based solutions.

Recently we have found, through advances in computing and technique, a viable way of creating these solutions. It really is the opening of a Pandora’s box. Before we could only make computers do things we could explain in logical terms, which turned out to be mostly moving and displaying data. Now we can make software that can take action based on the kind of unseen, unquantifible data that we make our decisions on. Software that can take the near infinite rules that make coherent and engaging language possible, digest them, and give back lucid responses that seem to understand them all. We could never purposefully arrange a series of if statements that come together to be this intelligent, yet here LLMs are, a hive of logical statements packed together as bewildering and meaningless to us as a London sized city of ants, buzzing with chaotic activity and somehow producing coherent intelligence.

What now that we’ve got computers conducting computers? The art of software is going to get progressively easier, as is already happening.

The journey from low level difficult languages to javascript will extend upwards to chat like development, where once developers know what they want, they can essentially state it in English. (this will be widespread soon when the AI tools scan all your company’s repos and knows how each bit fits together — the main problem with ChatGptDev now is you can paste a single file in when the real problem spans multiple files or repos).

And at the other end, code will be compiled in a much more intelligent manner, again in ways we could never comprehend. The problem with high level languages now is that they need to be compiled down through various stages before they end up as machine code that our processors can understand, and this makes them inefficient. I can see a near future where code is essentially rewritten when compiled, into strange forms that solve the problem described in the high level code but using an abstract set of functions that are extremely efficient and different yet have the same outputs. A confusing statement I know, but I basically think that a computer, an AI, could rewrite all the low level memory management, logic gate selection and fundamental data processing stuff in much better ways than converting human logic into machine code. And this’ll allow for any old javascript or python to be miles faster than current Rust, because it’ll be doing even smarter and more mysterious things than a Rust developer can.

Once building software is easy and hyper capable, anyone with a good idea should be able to make an intelligent agent to do his bidding. It’s gonna get pretty wild.

We’ve already got pretty attached to the stupid software of the last 50 years, some people are gonna literally fall in love with this new stuff.

As a simple software developer i may lose my job, or at least my edge, but if so then so be it. I’ve always thought ‘I shouldn’t be writing this code, I know exactly how I want this thing to work, why am I spending weeks trying to explain it to a computer?’

I’m looking forward to the ease of development of ideas, inventors always want sharper tools, but I’m definitely nervous about the coming tidal wave of human-computer interaction, surging and swelling when it’s already been doing so for decades. Dragging ever more souls out of the real world and into digitopia, making our lives easy and distant. It’s coming. Towering, unstoppable, getting real big now. It’s threatening to crash. Or maybe it already has done. Hold onto yourself.

--

--