A Programação
Intuitivamente, o teclado é como se fosse a caneta e o monitor como se fosse o papel. Podemos utilizar o teclado para digitar “1 + 2 = 3” e isso aparece no monitor.
Contudo, se quiséssemos que o computador faça a soma para nós, deveríamos digitar apenas “1 + 2 =” e o computador traria a soma com o valor “3”, então precisamos de um programa que controle o computador para fazer isso.
Nós criámos e implementamos um programa para embutir nosso conhecimento humano sobre dígitos e símbolo de soma e deixamos o programa controlar o computador para cuidar da soma utilizando a memória e CPU.
Em outras palavras, um programador escreve um programa, o qual diz ao computador o que fazer e como fazer. Obviamente, o programa deve escrever na linguagem nativa do computador para ele conseguir executar a tarefa.
Na verdade, usar o computador é como dirigir um carro. Quando dirigimos um carro, nós estamos falando “a linguagem do carro” para virar a roda e dizer ao carro ir para direita ou esquerda ou utilizar o acelerador e pedir para o carro ir, mas rápido ou mais lento.
Linguagem Nativa do Computador
A linguagem nativa do computador é chamada de linguagem binária que corresponde a memória do hardware. A menor unidade de memória é um Bit, o qual apenas pode armazenar dois valores: 0 ou 1 como um interruptor que pode estar ligado ou desligado.
Se nós definirmos 0 como “não” e 1 como “sim”, então o computador com um bit pode apenas entender “sim” ou “não”. Indo nessa linha, o computador com um bit de memória pode memorizar e executar dois comandos.
Se quisermos que o computador execute quatro comandos: adição, subtração, divisão e multiplicação um computador deve ter dois bits, porque com dois bits podemos ter quatro combinações: 00, 01, 10 e 11.
Portanto, nós poderíamos definir 00 como adição, 01 como subtração, 10 como multiplicação e 11 como divisão. Seguindo essa ideia, três bits podem implementar oito comandos (2^3); 4 bits podem implementar 16 comandos (2^4).
No geral, o número de comando de y é igual a 2 elevado ao número de bits. Isto é, nós podemos construir um computador com x-bit para memorizar e executar o número de y = 2^x comandos.
Código ASCII
Similarmente, todos os símbolos humanos podem ser codificados baseados em binários e guardados na memória do computador. De fato, todos os símbolos do teclado de um computador estão codificados para utilizar o ASCII (American Standard Code for Information Interchange), o qual tem 7 bits.
Se aplicarmos a fórmula y = 2^x, nós teremos o seguinte: y = 2^7=128 símbolos diferentes. Isto é, símbolos humanos podem ser representados com uma sequência de 0 ou 1 que cabem dentro de 7 bits.
Essa sequência pode ser chamada de código binário. Não são apenas comandos ou dados que podem ser representados por código binário, o endereço de memória pode também ser representado por código binário.
Consequentemente, humanos podem se comunicar com computadores utilizando a linguagem binária. Contudo, uma linguagem nativa de computador é difícil para um humano reconhecer e lembrar.
Quando cada comando binário é criado com um nome mnemônico e cada endereço de memória é criado com um mnemônico, fica mais fácil para os programadores humanos aplicar mnemônico para escrever programas do que utilizar códigos binários.
Segunda Geração da Linguagem de Programação
Essa segunda geração de linguagem de programação é chamada de “linguagem de montagem (assembly language)”, o qual substitui o código binário por mnemônicos de comandos e endereços de memória.
Por exemplo, se definirmos que o mnemônico ADD refere-se ao código binário 00; SUB ao 01; MIL ao 10 e DIV ao 11, os programadores serão capazes de escrever um programa utilizando o mnemônico ADD ao invés de 00, SUB ao invés de 01 e assim por diante.
Então, um software chamado “montador” é um interpretador escondido dentro de um programa montador que devolve códigos binários para um computador e com isso o programador pode ser comunicar com o computador de maneira mais fácil.
Infelizmente, ambas as linguagens de primeira geração (linguagem binária) e segunda geração (linguagem de montagem) tem um problema em comum.
O problema é a “portabilidade”, porque os códigos binários são específicos para um determinado hardware e não podem ser utilizados em um hardware diferente.
Os símbolos mnemônicos da linguagem de montagem são ligados ao seu código binário correspondente. Isto é, um programa escrito na linguagem de montagem está também preso a um tipo de hardware.
Consequentemente, o código binário e seu correspondente na linguagem de montagem formaram um programa que só pode ser executado em um hardware específico.
Programação em Linguagem Assembly
Terceira Geração da Linguagem de Programação
Para que os programas se tornassem portáteis, a terceira geração apareceu que também é chamada de programação de “alto nível”. O “alto nível” significa que a linguagem está mais próxima da linguagem natural dos humanos e não está presa a um específico hardware, e com isso foi resolvido o problema da portabilidade.
Um programa escrito na linguagem de alto nível também é chamado de código fonte. Um programa escrito na linguagem de alto nível não são diretamente executados e entendidos pelo computador.
Esse código deve ser convertido para linguagem nativa do computador antes de sua execução. Para esse propósito, uma camada especial de software é adicionada para essa conversão.
O processo de conversão pode ser “interpretação” ou “compilação”. No caso de “interpretação”, o software adicionado é chamado de “interpretador”, lê o código de alto nível e converte para a correspondente linguagem nativa e aí sim executa no hardware.
No caso da “compilação”, o software adicionado, é chamado de “compilador”, que converte todo o código de alto nível para a correspondente linguagem nativa antes de executar.
Não importa o hardware o compilador ou interpretador irá converter o código do alto nível para o nível necessário que o hardware necessita para ser executado.
Além disso, um programa escrito na terceira geração pode ser entendido e executado por qualquer computador. Certamente, a linguagem de terceira geração não apenas facilitou a vida dos programadores como garantiu que os programas se tornassem portáteis.
Deixe um comentário