O propósito de qualquer linguagem de programação é transformar um computador de um caro peso de papel eletrônico em um dispositivo útil de processamento e armazenamento de dados. Escolher um idioma para realizar essa tarefa é uma troca entre eficiência e facilidade de uso. A linguagem de máquina representa os extremos do espectro para esses dois fatores.
Linguagem de máquina
A linguagem de máquina produz o único conjunto de instruções que um computador entende sem um tradutor. Os computadores conseguem realizar a reprodução de áudio e vídeo, processamento e armazenamento de dados, comunicação pela Internet e todas as outras tarefas especializadas, respondendo a um conjunto de instruções que reconhece apenas uns e zeros. Escrever centenas de linhas de código consistindo de uns e zeros é um processo exigente e tedioso que explica a popularidade de linguagens de alto nível, como C e Java.
Vantagens iniciais
O primeiro computador pessoal da IBM estava equipado com 512 kilobytes de memória de acesso aleatório e uma unidade de disquete de 360 kilobytes. Depois que o sistema operacional foi carregado na memória a partir da unidade de disquete, os programas foram carregados no espaço de memória restante, deixando uma área muito pequena de RAM, geralmente menos de 100 kilobytes, para o programa ativo processar os dados. Durante esse período, a principal preocupação de um programador era um código enxuto e eficiente. As ferramentas de programação escolhidas nesses primeiros computadores eram geralmente a linguagem de máquina, que pode ser consideravelmente menor do que uma versão escrita em BASIC ou C. Também era um pouco mais fácil usar a linguagem assembly descendente.
Dependência de plataforma
A linguagem de máquina aborda diretamente o hardware do computador, dando ao programador controle completo sobre todos os aspectos da execução de um programa. A desvantagem dessa abordagem é que o programador deve conhecer a arquitetura de cada chipset antes de poder escrever um código eficaz. Quando um componente como uma placa de vídeo ou controlador de unidade é alterado, por exemplo, o código de linguagem de máquina deve ser atualizado para reconhecer e endereçar o novo dispositivo.
Idiomas de alto nível
As vantagens da velocidade e da pequena quantidade de memória da linguagem de máquina são cada vez mais superadas pela dificuldade de escrever instruções no nível do chip em código binário. Gigabytes de RAM e terabytes de armazenamento disponível eliminaram a necessidade de código enxuto e eficiente em computadores pessoais modernos. As demandas adicionais de memória e armazenamento feitas por programas escritos em linguagens de alto nível, como C e Java, não são mais um fator na escolha de uma plataforma de desenvolvimento. A facilidade de uso e as preocupações com a manutenção futura do programa substituem a velocidade e a eficiência na maioria dos projetos de software modernos.