Um computador digital é uma máquina que pode resolver problemas para as pessoas, executando instruções que lhe são dadas.
Essas instruções básicas raramente são muito mais complicadas do que:
Juntas, as instruções primitivas de um computador formam uma linguagem com a qual as pessoas podem se comunicar com ele. Essa linguagem é denominada linguagem de máquina.
Quem projeta um novo computador deve decidir quais instruções incluir em sua linguagem de máquina.
De modo geral, os projetistas tentam tornar as instruções primitivas as mais simples possíveis, coerentes com os requisitos de utilização e desempenho idealizados para o computador e seus requisitos de desempenho, a fim de reduzir a complexidade e o custo dos circuitos eletrônicos necessários.
Como a maioria das linguagens de máquina é muito simples, sua utilização direta pelas pessoas é difícil e tediosa.
Com o passar do tempo, essas observações simples tem levado a uma forma de estruturar os computadores como uma sequência de abstrações, cada uma baseada naquela abaixo dela.
Desse modo, a complexidade pode ser dominada e os sistema de computação podem ser projetados de forma sistemática e organizada.
Denominamos essa abordagem organização estruturada de computadores.
Existe uma grande lacuna entre o que é conveniente para as pessoas e o que é conveniente para computadores.
As pessoas querem fazer X, mas os computadores só podem fazer Y, o que dá origem a um problema.