Program Arcade Games
With Python And Pygame

Chapter 2: O que é uma Linguagem de Computador?

Video: O que é uma Linguagem de Computador?

O que faz uma linguagem ser de computador? Porque elas existem? Porque existem tantas?

Entender como um motor funciona não necessariamente implica em saber dirigir um carro. Assim como não precisamos entender estas perguntas para poder programar. Porém, para atingirmos um nível mais avançado, é essencial entendermos como um computador funciona. Daremos uma breve explicação.

2.1 Pequena história da Programação

Computadores são eletrônicos e digitais. Para um computador tudo é visto em termos de alguma ou nenhuma tensão. Nenhuma tensão significa zero(0) e alguma tensão significa um(1). Os computadores, na verdade, não podem contar mais do que isto a não ser que combinem múltiplos uns e zeros.

Antigamente os interruptores eram usados para carregar uns e zeros na memória do computador. A figura 2.1, cortesia da Wikimedia Commons, mostra o Altair 8800. Os interruptores do painel frontal eram usados para carregar o programa. As luzes mostravam a saída. Não havia monitor.

fig.altair
Figure 2.1: Altair 8800

Cada conjunto de interruptores ligado/desligado representava um número. Cada número representava dados ou uma instrução para o computador efetuar. Este sistema de usar uns e zeros para representar os números é chamado de sistema de numeração binário. Este tipo de linguagem de programação é chamada 1GL ou linguagem de programação de primeira geração.

Números binários são geralmente representados em grupos de 4. Por exemplo:

1010 0010 0011

Uma melhoria em relação a carregar os programas via interruptores foi o uso dos hexadecimais. Os números decimais mais utilizados pelas pessoas usa os digitos 0-9. Os hexadecimais usam os números 0-9 e A-F para representar um conjunto de quatro interruptores ou os números de 0 a 15.

BinárioDecimalHexadecimal
000
111
1022
1133
10044
10155
11066
11177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F
1 00001610
1 00011711
Video: Sistemas decimal, binário e hexadecimal

A fim de tornar mais fácil o processo que carregava os programas, mais tarde, os computadores permitiram os usuários carregarem os programas usando a linguagem assembler. Cada comando usava um mnemônico e o compilador transformava os mnemônicos em números que representavam os comandos. Este tipo de linguagem é chamada linguagem 2GL ou linguagem de programação de segunda geração.

A figure 2.2 mostra um exemplo de um programa em assembler. Cortesia do Wikimedia Commons.

fig.assembly
Figure 2.2: Exemplo da linguagem assembler

Embora isto tenha sido uma melhoria, ainda não era muito fácil programar. A geração seguinte permitia abstrações de nível superior. As primeiras linguagens de terceira geração: (COBOL, FORTRAN e LISP) eram muito mais fáceis de se entender e de programar.

As linguagens de segunda e terceira geração usavam um compilador. Um compilador pega o programa digitado pelo usuário (chamado de código fonte) e o transforma em código de máquina. O programador roda o código de máquina. O código fonte original não é rodado.

Se existir vários pedaços de código fonte em um programa eles podem ser unidos em um só programa com a ajuda de um linker. O linker é rodado no código de máquina gerado pelo compilador para gerar o programa final. Este programa final é o que o usuário roda e o código fonte não é mais necessário

fig.compiler_and_linker
Figure 2.3: Compiladores e linkers

Uma desvantagem de compilar para linguagem de máquina é que o programa só funcionará na máquina para a qual foi compilada. Programas compilados para Windows não rodam no Mac nem em máquinas linux.

Como o processo de compilar e linkar pode acabar sendo complexo para o usuário, algumas linguagens usam os interpretadores. Eles pegam o código fonte e o interpretam para instruções de linguagem de máquina. Isto também permite que o mesmo programa rode no Windows, no Mac e em sistemas Unix, desde que haja um interpretador disponível para cada plataforma.

O inconveniente de usar interpretadores é que a execução do programa é mais lenta.

fig.interpreter
Figure 2.4: Interpretador

Python é um exemplo de linguagem interpretada. É mais fácil desenvolver em Python do que em C mas Python roda mais devagar e deve ter um interpretador Python para funcionar.

Linguagens como Java usam um sistema onde os programas são compilados para código de máquina que roda na Máquina Virtual Java(JVM) (JVM), ao invés da máquina real. Outra linguagem poupular que faz o mesmo é C#, uma linguagem que pode ser usada em diversas plataformas - Common Language Infrastructure - (CLI) e que roda numa (VES - Virtual Execution System ) máquina virtual. Uma discussão mais completa sobre estes assuntos está além do escopo deste livro, mas sinta-se à vontade para ler sobre eles.

Hoje temos milhares de linguagens diferentes. Como os computadores realizam diversas tarefas, linguagens diferentes foram desenvolvidas para se especializarem em diferentes tarefas. Linguagens como C são boas para sistemas operacionais e sistemas embarcados. Outras linguagens como PHP são específicas para criarmos páginas web. Python é uma linguagem para uso geral e fácil de usar.

A empresa Tiobe mantêm uma lista com a popularidade de várias linguagens de programacão no link que é atualizado mensalmente. É bom dar uma olhada nesta tabela e em sites de emprego como DICE para se manter atualizado com as linguagens de programação que os empregadores estão procurando.

Felizmente quase todas as linguagens compartilham certos elementos comuns e, uma vez que uma linguagem tenha sido aprendida, as mesmas teorias serão aplicáveis às outras linguagens.

Para uma divertida história da computação eu recomendo que você assista: Vitória dos Nerds de Robert X Cringley, uma série em três partes sobre as origens da computação. Os filmes são tão divertidos que até a sua família vai gostar. Eu também recomendo o livro Accidental Empires se você prefere ler a assistir um filme. Impérios Acidentais

O que acontece depois destes vídeos? Eles nem mostram o nascimento da Internet! Então confira esta série de vídeos Nerds 2.0.1 também de Robert X Cringely.

2.2 Questões de Revisão

Clique aqui para um quiz de revisão de múltipla escolha.

  1. Dê um exemplo de um número binário. (Enquanto um número como “1” pode ser binário, decimal e hexadecimal, tente um exemplo que ilustre melhor a diferença entre as diferentes bases de números).
  2. >Dê um exemplo de um número decimal.
  3. >Dê um exemplo de um número hexadecimal.
  4. Converta os números 1, 10, 100, 1000 e 10000 de binário para decimal.
  5. O que é um compilador?
  6. O que é código fonte?
  7. O que é linguagem de máquina?
  8. O que é uma linguagem de primeira geração?
  9. O que é uma linguagem de segunda geração?
  10. O que é uma linguagem de terceira geração?
  11. O que é um interpretador?


You are not logged in. Log in here and track your progress.