Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Linguagens de Programação DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Tópicos da aula • Linguagens de programação. – Linguagem de máquina. – Linguagem de baixo nível. – Linguagem de alto nível. • Compiladores e Interpretadores. – Linguagens compiladas e interpretadas. • Ranking das linguagens de programação. 2 Como as máquinas conversam? Como os humanos conversam com as máquinas? 3 Máquinas só entendem símbolos do conjunto de binário (0 ou 1) 4 Programar uma máquina! 5 Introdução à Programação • Programar uma máquina é escrever um conjunto de instruções que o computador deve executar. • Voltando ao conceito do computador: “É uma máquina de calcular que processa dados através de um conjunto de instruções e produz resultados, com o mínimo de intervenção humana.” O que são essas instruções? Quem entende essas instruções? 6 Introdução à Programação • Instruções são sequências de bits definidas para que o computador realiza uma determinado ação. – Operações matemáticas ou lógicas. – Manipulação de dados. – Operações com dispositivos de entrada e saída. Instruções de máquinas / Códigos de máquinas 7 Linguagem de máquina • Para programar um computador é necessário definir instruções baseadas numa linguagem de máquina. • Linguagem de máquina = Conjunto de instruções do processador. 8 Surgimento das Linguagens de Programação • Devido a dificuldade na definição dos códigos de máquina (códigos de 0s e 1s), foi criado uma linguagem para programar a máquina através de comandos textuais, a linguagem assembly. • ADD 1F, AB; Soma os conteúdos dos registradores 1F e AB, e armazena no registrador 1F. • INC 1E; Adiciona 1 ao conteúdo do registrador 1E. • MOV AE, 13; Move o conteúdo do registrador AE para o registrador 13. 9 Linguagem de Programação: Assembly • As máquinas continuavam entendendo apenas programas escritos em linguagem de máquina. • É necessidade um tradutor. Linguagem de programação Assembly Tradutor (Assembler) Linguagem de máquina (0s e 1s) • Devido a proximidade com a linguagem de máquina, a linguagem assembly é considerada uma linguagem de programação de baixo nível. 10 Linguagem de Programação: Assembly • Cada processador pode conter seu conjunto de instruções. Cada conjunto de instruções tem sua linguagem assembly. • Processadores diferentes → Conjuntos de instruções diferentes → Linguagens assembly diferentes. • Programação de computador baseadas em linguagens de baixo nível são bastante complexas. 11 Linguagens de Programação de Alto Nível • Os programadores queriam que os computadores fossem capazes de falar línguas parecidas com as línguas dos humanos e, nesse sentido, criaram as linguagens de programação de alto nível. • Linguagens de programação de alto nível: – Independentes do processador. – Códigos mais complexos. – Descrição próxima da “lógica ”pensamento humano”. humana” – 12 Linguagens de Programação de Alto Nível • Primeira linguagem de programação de alto nível foi Fortran. 13 Linguagens de Programação 14 Programas de Alto Nível em 0s e 1s • Da mesma forma que a linguagem Assembly precisou de um tradutor para converter o programa em código de máquina, as linguagens de alto nível precisam de tradutores para montarem seus códigos de máquinas. • Tradutores das linguagens de alto nível: – Compiladores – Interpretadores 15 Compiladores x Interpretadores • O compilador gera um código de máquina a partir do código em linguagem de alto nível (código fonte), assim gerando a tradução de todas instruções do programa. Código fonte Código de máquina Compilador • O interpretador traduz as instruções da linguagem de alto nível em instruções de máquina em tempo de execução. Código fonte Interpretador Código intermediário Código de máquina Em tempo de execução 16 Compiladores x Interpretadores Tradutor Vantagens Execução mais veloz. Compilador Desvantagens Várias etapas de tradução. Maior consumo de memória Programas mais complexos, para a execução, uma vez que o com mais funcionalidades. programa final é maior. Permite otimização do código- Processo de depuração de cada fonte. linha é mais demorado. Interpretador Depuração mais simples. Execução mais lenta. Menor consumo de memória. Programas mais simples. Resultado imediato da É necessário que a máquina execução das instruções por possua o programa fonte. ser passo a passo. 17 Exemplos de linguagens • Linguagens de programação compiladas – C / C++ • Linguagens de programação interpretadas – Java – C# – Python 18 Rankings das Linguagens de Programação 19 Ranking 2015 – IEEE Spectrum • The 2015 Top Ten Programming Languages. • Referência: http://spectrum.ieee.org/computing/software/the-2015-top20 ten-programming-languages/ Ranking 2015 – IEEE Spectrum: WEB 21 Ranking 2015 – IEEE Spectrum: Mobile 22 Ranking 2015 – IEEE Spectrum: Enterprise 23 Ranking 2015 – IEEE Spectrum: Embedded 24 Referências • Stephen Cass. The 2015 Top Ten Programming Languages. IEEE Spectrum. Acesso em: http://spectrum.ieee.org/computing/software/the-2015-top-tenprogramming-languages/. • Rita, Sandra. Treinamento em Lógica de Programação. 1 ed. Digerati Books, 2009. 25 Dúvidas? Dúvidas por email: [email protected] 26