Conceito de Programação e de Linguagens de Programação
O conceito de
programação é um instrumento essencial do funcionamento dos sistemas de
informação visto que, programação é a acção e o efeito de programar, no entanto
este verbo tem várias vertentes, entre elas: idealizar e ordenar as acções que
vão ser realizadas no âmbito de um projecto; o anúncio das partes que compõem
um acto ou espectáculo; a preparação de máquinas para cumprirem uma determinada
tarefa a um dado momento; a elaboração de programas para a resolução de
problemas através de computadores; e a preparação dos dados necessários para
obter uma solução de um problema com por exemplo uma calculadora electrónica.
Hoje em dia, a noção de programação é bastante associada à programação em
informática, processo pelo qual um
programador escreve, numa linguagem de programação, o código-fonte de um
software que indicará ao programa
informático o que tem de fazer e de que forma.
Uma linguagem de
programação é um método padronizado para comunicar instruções para um
computador.Permite que um programador especifique sobre quais dos dados de um
computador vai atuar, quais dos dados serão armazenados ou transmitidos e quais
ações devem ser tomadas sob várias circunstâncias. Destaco que Linguagens de
programação podem ser usadas para expressar algoritmos com precisão.
Uma das principais
metas das linguagens de programação é permitir que programadores tenham uma
maior produtividade, permitindo expressar suas intenções mais facilmente do que
quando comparado com a linguagem que um computador entende nativamente (código
de máquina). Assim, linguagens de programação são projetadas para adotar uma
sintaxe de nível mais alto, que pode ser mais facilmente entendida por
programadores humanos ou seja, são ferramentas importantes para que
programadores e engenheiros de software possam escrever programas mais
organizados e com maior rapidez.
Linguagens de alto e linguagens de baixo nível
Linguagens de baixo nível: estão mais próximas do hardware
ou nível máquina, trata-se de uma
linguagem de programação que compreende as características da arquitetura do
computador. Assim, utiliza somente instruções do processador, para isso é
necessário conhecer os registradores da máquina. Nesse sentido, as linguagens
de baixo nível estão diretamente relacionadas com a arquitetura do computador.
As linguagens de baixo nível são divididas em duas categorias: primeira geração
e segunda geração.
Linguagens de alto nível: mais próximas da linguagem humana,
é uma uma linguagem com um nível de abstração relativamente elevado, deste
modo, as linguagens de alto nível não estão diretamente relacionadas à
arquitetura do computador. O programador de uma linguagem de alto nível não
precisa conhecer características do processador, como instruções e
registradores.
Linguagem de Máquina e Assembler
Além do fato de o computador necessitar que lhe instruam ações bem específicas, é de salientar que estas devem ser passadas para o computador numa linguagem que ele possa entendê-las, chamada linguagem de máquina que é composta somente por números, representados de forma binária, que, sob o ponto de vista do computador, representam as operações e os operandos que serão usados no processamento do programa. Evidentemente esta linguagem é de dificil percepção para o ser humano, assim, existe uma linguagem representada por comandos que reproduz as tarefas que serão executadas dentro do computador, a linguagem de montagem (assembly). No entanto, mesmo a linguagem de montagem é difícil de programar e os programas feitos para um determinado processador, por conterem instruções específicas e não funcionarão em um processador de outro tipo.
Com a ilustração abaixo é mostrado o início de um programa que escreve a frase ``Olá Mundo'' no monitor. Na coluna da esquerda está o endereço relativo de memória, na coluna do centro o programa escrito em linguagem de máquina e na coluna da direita a representação em caracteres ASCII. Teoricamente, o programa poderia ser escrito diretamente em linguagem de máquina, como mostrado, entretando a sintaxe do mesmo é muito pouco compreensível e a probabilidade de erro para o seu desenvolvimento seria muito grande.
00000000 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010 02 00 03 00 01 00 00 00 D0 82 04 08 34 00 00 00 ............4...
00000020 BC 0C 00 00 00 00 00 00 34 00 20 00 07 00 28 00 ........4. ...(.
00000030 24 00 21 00 06 00 00 00 34 00 00 00 34 80 04 08 ..!.....4...4...
00000040 34 80 04 08 E0 00 00 00 E0 00 00 00 05 00 00 00 4...............