Linguagens de programação
Um programa é um conjunto de instruções que informa a um computador o que fazer para encontrar uma solução para um problema específico. Os programas são escritos usando uma linguagem de programação. Uma linguagem de programação é uma linguagem formal projetada para comunicar instruções a um computador. Existem dois tipos principais de linguagens de programação: linguagens de baixo nível e linguagens de alto nível.
Idiomas de baixo nível
As linguagens de baixo nível são chamadas de ‘baixas’ porque estão muito próximas de como os diferentes elementos de hardware de um computador realmente se comunicam uns com os outros. Linguagens de baixo nível são orientadas à máquina e requerem amplo conhecimento de hardware de computador e sua configuração. Existem duas categorias de linguagens de baixo nível: linguagem de máquina e linguagem assembly.
A linguagem de máquina , ou código de máquina , é a única linguagem diretamente compreendida pelo computador e não precisa ser traduzida. Todas as instruções usam notação binária e são escritas como uma string de 1s e 0s. Uma instrução de programa em linguagem de máquina pode se parecer com isto:
10010101100101001111101010011011100101
Tecnicamente falando, esta é a única linguagem que o hardware de computador entende. No entanto, a notação binária é muito difícil para os humanos entenderem. É aqui que entram as linguagens assembly.
Uma linguagem assembly é o primeiro passo para melhorar a estrutura de programação e tornar a linguagem de máquina mais legível por humanos. Uma linguagem assembly consiste em um conjunto de símbolos e letras. É necessário um tradutor para traduzir a linguagem assembly para a linguagem de máquina. Este programa tradutor é chamado de ‘assembler’. Ela pode ser chamada de linguagem de segunda geração, pois não usa mais 1s e 0s para escrever instruções, mas termos como MOVE , ADD , SUB e END .
Muitos dos primeiros programas de computador foram escritos em linguagem assembly. A maioria dos programadores de hoje não usa linguagens assembly com muita frequência, mas ainda são usados para aplicativos como sistemas operacionais de dispositivos eletrônicos e aplicativos técnicos, que usam temporização muito precisa ou otimização de recursos de computador. Embora mais fáceis do que o código de máquina, as linguagens assembly ainda são muito difíceis de entender. É por isso que linguagens de alto nível foram desenvolvidas.
Idiomas de alto nível
Uma linguagem de alto nível é uma linguagem de programação que usa o inglês e símbolos matemáticos, como +, -,% e muitos outros, em suas instruções. Ao usar o termo ‘linguagens de programação’, a maioria das pessoas está realmente se referindo a linguagens de alto nível. Linguagens de alto nível são as linguagens mais freqüentemente usadas por programadores para escrever programas. Exemplos de linguagens de alto nível são C ++, Fortran, Java e Python.
Para ter uma ideia de como uma linguagem de alto nível realmente se parece, considere um caixa eletrônico onde alguém quer fazer um saque de $ 100. Esse valor precisa ser comparado ao saldo da conta para garantir que haja fundos suficientes. A instrução em uma linguagem de computador de alto nível seria mais ou menos assim:
x = 100
se saldo x: imprimir ‘Saldo insuficiente’ else: imprimir ‘Por favor, pegue seu dinheiro’
Não é exatamente assim que pessoas reais se comunicam, mas é muito mais fácil de acompanhar do que uma série de 1s e 0s em código binário.
Existem várias vantagens nas linguagens de alto nível. A primeira vantagem é que as linguagens de alto nível estão muito mais próximas da lógica de uma linguagem humana. Uma linguagem de alto nível usa um conjunto de regras que ditam como palavras e símbolos podem ser reunidos para formar um programa. Aprender um idioma de alto nível não é diferente de aprender outro idioma humano – você precisa aprender vocabulário e gramática para poder formar frases. Para aprender uma linguagem de programação, você precisa aprender comandos, sintaxe e lógica, que correspondem intimamente ao vocabulário e à gramática.
A segunda vantagem é que o código da maioria das linguagens de alto nível é portátil e o mesmo código pode ser executado em hardware diferente. Tanto o código de máquina quanto as linguagens assembly são específicas do hardware e não são portáveis. Isso significa que o código de máquina usado para executar um programa em um computador específico precisa ser modificado para ser executado em outro computador. O código portátil em uma linguagem de alto nível pode ser executado em vários sistemas de computador sem modificação. No entanto, modificações no código em linguagens de alto nível podem ser necessárias devido ao sistema operacional. Por exemplo, programas escritos para Windows normalmente não funcionam em um Mac.
Uma linguagem de alto nível não pode ser entendida diretamente por um computador e precisa ser traduzida em código de máquina. Existem duas maneiras de fazer isso e estão relacionadas ao modo como o programa é executado: uma linguagem de alto nível pode ser compilada ou interpretada.
Compilador
Um compilador é um programa de computador que traduz um programa escrito em uma linguagem de alto nível para a linguagem de máquina de um computador. O programa de alto nível é conhecido como ‘o código-fonte’. Um programa de computador típico processa algum tipo de dados de entrada para produzir dados de saída. O compilador é usado para traduzir o código-fonte em código de máquina ou código compilado. Isso ainda não usa nenhum dos dados de entrada. Quando o código compilado é executado, conhecido como ‘executando o programa’, o programa processa os dados de entrada para produzir a saída desejada.
Ao usar um compilador, todo o código-fonte precisa ser compilado antes que o programa possa ser executado. O código de máquina resultante é normalmente um arquivo compilado, como um arquivo com uma extensão .exe. Depois de ter um arquivo compilado, você pode executar o programa repetidamente sem ter que compilá-lo novamente. Se você tiver várias entradas que requerem processamento, execute o código compilado quantas vezes forem necessárias.
Intérprete
Um intérprete é um programa de computador que simula um computador que entende uma linguagem de alto nível. Isso significa que o interpretador traduz o código-fonte linha por linha durante a execução. Considere novamente um programa de computador que processa algum tipo de dados de entrada para produzir dados de saída. O interpretador executa o código linha por linha, o que resulta nos dados de saída desejados. O único resultado são os dados de saída – não há código compilado. Ao usar um interpretador, toda vez que você quiser executar o programa, deverá interpretar o código novamente linha por linha. Não há código compilado para usar se você tiver várias entradas que requerem processamento.
Comparação
Para entender a diferença entre compilar e interpretar, vamos examinar o equivalente em linguagens humanas. Por exemplo, considere um filme feito na Ásia, onde todos os personagens falam vietnamita. Para comercializar o filme para um público internacional, o texto falado precisa ser traduzido para o inglês. Um tradutor sentava e traduzia cuidadosamente todo o texto e criava legendas para o filme. Sempre que alguém quiser assistir ao filme, pode ativar as legendas. Este tipo de tradução é equivalente a compilar – tudo é traduzido uma vez e pode ser usado muitas vezes depois.
Agora considere um delegado do Vietnã fazendo um discurso nas Nações Unidas em vietnamita. Para que os participantes entendam o discurso, vários tradutores fornecem uma tradução que é transmitida para os fones de ouvido dos participantes. Esta tradução ocorre quase em tempo real. Cada vez que o delegado fala em vietnamita, os tradutores começam a trabalhar. Este tipo de tradução é equivalente à interpretação – o texto é traduzido linha por linha conforme necessário e os resultados não são usados novamente.
Compilado vs. Interpretado
O código compilado tende a ser mais rápido, pois a tradução é concluída em uma etapa antes da execução real. O código interpretado, por outro lado, é mais flexível e pode ser executado interativamente. Por exemplo, usando código interpretado, você pode experimentar algumas linhas de código para ver se funcionam muito rapidamente, sem ter que passar pelas etapas de compilação e execução do programa.
Uma vantagem de usar código compilado é que ele não revela o código-fonte original. Isso torna possível distribuir um programa sem revelar seu funcionamento interno. Quando você instala um aplicativo de software em seu computador, normalmente está instalando uma versão compilada do código.
Você pode executar o aplicativo de software, mas não pode abrir o código-fonte na linguagem de programação original. Para muitas empresas que vendem aplicativos de software, o código-fonte original é um segredo bem guardado e lhes dá vantagem competitiva sobre outras empresas. Exemplos de linguagens compiladas incluem C e seus derivados C ++ e C #, COBOL, Java e Fortran. Exemplos de linguagens interpretadas são Perl, Python e Ruby.
Resumo da lição
Existem dois tipos principais de linguagens de programação : linguagens de baixo nível e linguagens de alto nível. Linguagens de baixo nível são orientadas à máquina e requerem amplo conhecimento de hardware de computador e sua configuração. Existem duas categorias de linguagens de baixo nível: linguagem de máquina e linguagem assembly.
Linguagem de máquina , ou código de máquina , consiste em código binário e é a única linguagem que é diretamente entendida pelo computador. Uma linguagem assembly consiste em um conjunto de símbolos e letras e requer tradução para linguagem de máquina. Tanto o código de máquina quanto as linguagens assembly são específicas do hardware.
Uma linguagem de alto nível é uma linguagem de programação que usa o inglês e símbolos matemáticos em suas instruções. Para executar um programa em uma linguagem de alto nível, ele pode ser compilado ou interpretado. Um compilador traduz todo o programa escrito em uma linguagem de alto nível para a linguagem de máquina antes da execução. Um intérprete traduz um programa linha por linha durante a execução.
Resultados de Aprendizagem
Depois de revisar esta vídeo-aula, você será capaz de:
- Caracterize os dois tipos de linguagens de programação
- Avalie as duas categorias de linguagens de baixo nível
- Diferencie entre um compilador e um interpretador
- Liste exemplos de linguagens interpretadas e compiladas