A característica definidora dos computadores modernos que os distingue de todas as outras máquinas é que eles podem ser programados. Isto quer dizer que algum tipo de instruções (o programa) pode ser dado ao computador, e que vai transportar os processar. Enquanto alguns computadores podem ter conceitos estranhos "instruções" e "saída" (veja a computação quântica), computadores modernos baseados na arquitetura von Neumann muitas vezes têm código de máquina na forma de uma linguagem de programação imperativa.
Em termos práticos, um programa de computador pode ser apenas algumas instruções ou estender a muitos milhões de instruções, assim como os programas para processadores de texto e navegadores da Web, por exemplo. Um computador moderno típico pode executar milhares de milhões de instruções por segundo (gigaflops) e raramente comete um erro ao longo de muitos anos de operação. Programas de computador grandes que consistem em vários milhões de instruções pode levar equipes de programadores anos para escrever, e devido à complexidade da tarefa quase certamente conter erros.
Armazenados arquitetura programa Artigos principais: programa de computador e programação de computadores Um cartão 1970 que contém uma linha de um programa Fortran soco. O cartão lê: "Z
(1) = Y + W
(1)" e é rotulado de "PROJ039" para fins de identificação. Esta seção aplica-se a maioria dos computadores baseados em máquinas de memória RAM comum. Na maioria dos casos, as instruções do computador são simples: acrescentar um número a outro, mover alguns dados de um local para outro, enviar uma mensagem para algum dispositivo externo, etc.
Estas instruções são lidas da memória do computador e são geralmente realizados (executado) na ordem em que foram dadas. No entanto, geralmente há instruções especializadas para dizer ao computador para saltar à frente ou para trás para algum outro lugar no programa e para continuar a execução de lá. Estes são chamados de instruções "Jump" (ou ramos). Além disso, as instruções de salto pode ser feito para condicionalmente acontecer de modo que diferentes sequências de instruções podem ser utilizadas, dependendo do resultado de algum cálculo anterior ou algum evento externo.
Muitos computadores apoiar directamente sub-rotinas, proporcionando um tipo de salto que "lembra" o local em que saltou de instrução e outro para retornar à instrução seguinte ao instrução de salto. A execução do programa pode ser comparado a leitura de um livro. Enquanto uma pes