Introdução às Linguagens de Programação Histórico de Linguagens de Programação • O computador não faz nada sozinho • Precisamos informar, de forma clara, como ele deve executar as tarefas • Ou seja, o computador precisa ser programado Histórico de Linguagens de Programação Histórico de Linguagens de Programação • A linguagem nativa dos computadores (no nível de máquina) é muito limitada • Todas as construções são representadas por 0’s e 1’s • Cada computador (CPU) só entende um conjunto relativamente pequeno de instruções (seu conjunto de instruções) Histórico de Linguagens de Programação • Exemplos de instruções de CPU • “mova este número de uma posição para outra em memória” • “some esses dois números inteiros” Histórico de Linguagens de Programação • Programas na linguagem de máquina são ditos programas em linguagem de máquina • Esse tipo de programação é considerada programação de baixo nível • São programas difíceis de escrever, ler e modificar (para os humanos) Linguagem Assembly • Também conhecida como linguagem de montagem • Melhoramento sobre a linguagem de máquina • Usa mnemônicos para representar as instruções de linguagem de máquina • “10011011” (linguagem de maquina) pode virar apenas “ADD” (em assembly) Linguagem Assembly • Também permite que sejam atribuídos nomes a variáveis (ou seja, posições de memória do computador) • Por exemplo, a posição “00111010” pode ser definida pelo programador (e ao seu critério) como simplesmente “X” Linguagem Assembly • No entanto, o que o computador entende é linguagem de máquina e não assembly • Programas escritos em assembly precisam então de um programa especial, chamado “assembler” (ou montador) • Traduz de assembly para a linguagem de máquina • Um para cada tipo de CPU Linguagem Assembly • Apesar de ter sido um melhoramento para o programador, assembly ainda é difícil • Ainda é considerada linguagem de baixo nível • Entre meados da década de 40 até meados da década de 50, todos programas de computador eram de baixo nível Linguagem Assembly Histórico de Linguagens de Programação • Uma facilidade maior para os programadores foi a introdução das linguagens de alto nível • Programas passaram a ser escritos em linguagem mais próxima da linguagem humana • Mas essa linguagem é específica para ser usada com os computadores Histórico de Linguagens de Programação Histórico de Linguagens de Programação • O programador pode usar uma linguagem mais simples para passar tarefas para o computador • As instruções podem ser especificadas sem se preocupar com os detalhes do computador que vai executar Compiladores e Interpretadores • Todo programa escrito em alguma linguagem de programação precisa de uma tradução para a linguagem de máquina do computador que vai executar • Como o assembler • Tipo mais simples de tradutor que apenas substitui as instruções para a linguagem de máquina Compiladores e Interpretadores • Linguagens de alto nível requerem tradutores mais complicados • Usualmente, uma única instrução em linguagem de alto nível pode corresponder a muitas instruções em linguagem de máquina • Existem dois tipos: compiladores e interpretadores Compiladores • Traduz programas escritos em linguagem de alto nível (programas fonte) em programas (programas objeto) em uma linguagem de baixo nível (linguagem de máquina ou assembly) • Depende da linguagem para qual foi projetado e também para qual computador deve ser feita a tradução • Existe compilador (da linguagem) X (ex. Pascal) para o computador Y (ex. Mac) Compiladores • Usualmente, um programa escrito em alto nível possui várias partes que são compiladas separadamente • Para unir utiliza-se um programa chamado link editor (editor de ligações). • Une todas as partes do programa em um único programa integrado Interpretadores • Não produz um programa objeto • Simula um computador cuja linguagem de máquina seria aquela sendo traduzida • Cada instrução do programa (em alto nível) é traduzida exatamente antes de ser executada, de acordo com o fluxo do programa • Requerem um interpretador para o programa funcionar Tipos de Linguagens • As linguagens de alto nível oferecem vantagens aos programadores, que podem ser analisadas segundo as algumas propriedades: • Portabilidade • Legibilidade • Manutenibilidade • Eficiência Portabilidade • O programa fonte pode ser transportado para qualquer computador que tenha o tradutor apropriado • Já os programas escritos em linguagens de baixo nível são específicos para cada tipo de computador • Ou seja, para transportar para outro computador, precisaria ser reescrito Legibilidade • A linguagem é próxima à humana • Fáceis de serem lidos e escritos • No entanto, depende muito do programador Manutenibilidade • A facilidade do programa ser mantido (modificado) • Relacionada à legibilidade • Quanto mais fácil de ser lido (e entendido), mais fácil de ser modificado Eficiência • É medida pelo espaço de memória ocupado e pela rapidez de execução • Um programa eficiente ocupa pouco espaço e produz as saídas rapidamente • Diferentes sequencias de instruções podem produzir o mesmo resultado • Algumas são mais eficientes que outras • O programador deve se preocupar em construir o programa da melhor forma Tipos de Linguagens • Linguagens de caráter específico • Construídas visando uma área de aplicação • Exemplo: COBOL para área comercial • Dificilmente pode ser utilizada em outra área • Linguagens de caráter geral • Podem escrever programas em qualquer área • Exemplo: Pascal, C, etc Paradigmas de Linguagens de Programação • Indica a filosofia ou conceitos teóricos do desenvolvimento da linguagem • Paradigma Funcional • Paradigma Lógico • Paradigma orientado à objetos • Paradigma modular