December 15, 2013

Memory: what matters

Advent Computing: Memory: what matters

We know our computers store numbers, but the only way we’ve talked about how to store those numbers was that infinitely long piece of tape the Turing machine had. I want to spend a bit of time talking about how computers actually store data. Before...

December 14, 2013

Atomics and locks

Advent Computing: Atomics and locks

When writing a simple program, you will normally only have a single “thread of execution”. That means that you’ll write a series of instructions for the computer, and the computer will follow them one-after-another. There might be jumps and loops (“do this five times” or...

December 13, 2013

A green steam train

Advent Computing: Threads, trains and tortured analogies

Imagine you’re running the train network. You have a whole bunch of train tracks, a whole bunch of people to get from one place to another, and just one train to do it with. Simple, right? Move your train from place to place, and let...

December 12, 2013

Making things faster

Advent Computing: Making things faster

Back to something a bit more practical. When you’re working with a computer, it’s pretty common to want it to go faster. It’s pretty rare that going to fast is a problem. So how can you make your computer go faster? How can computer manufacturers...

December 11, 2013

A black-and-white photograph of two women operating a large computer. The computer has two large sections, both taler than the women, with a control panel visible in the left one, vacuum tubes visible on both, and a large paper tape reel on the right of the machine.

Advent Computing: A historical divergence: Wartime advances

The key idea from Babbage’s analytical engine was that of a single computer which could solve multiple problems. Previous devices were built to solve a single problem, and at best would need to be disassembled and rearranged before they could be used for anything else....

December 10, 2013

A line drawing showing many interlocking cogs and wheels, some with numbers and indicators marked on them, with a hand crank at the top

Advent Computing: A historical divergence: Babbage and Lovelace

Back in the 18th century, a “computer” was a person who performed computations. They would calculate mathematical tables by hand – long lists of numbers that could be referenced for calculations. It would be a slow and arduous process prone to error, but was vital...

December 9, 2013

Numbers changing numbers

Advent Computing: Numbers changing numbers

The Turing machine we saw has its instructions, which we often think of as its program, and its tape, which is its memory. That’s not really accurate, though, and hasn’t really been accurate since we stopped writing programs by punching holes in bits of cardboard....

December 8, 2013

Programs without compilation

Advent Computing: Programs without compilation

Both assembled and compiled languages require some form of translation to convert them from a language a human programmer can (more-or-less) understand to the machine language the computer can understand. But what about if we could skip that step? That’s where interpreted languages come in....

December 7, 2013


Advent Computing: Compilations

A computer will take a sequence of numbers and interpret them as instructions. It has to – a computer can only store numbers, and the meaning of those numbers (that they’re instructions the computer should perform, rather than, say, ingredient weights for baking a cake) comes...

December 6, 2013

Writing for a computer

Advent Computing: Writing for a computer

A number can represent some sort of “instruction” to a computer, and what instruction a given number means is determined by that computer’s “machine language”. The number sequence “27, 48, 19” might mean “store the number 48 in the bit of memory at address 19”,...