INF1621 – Linguagens de Programação I Prof.: Marcus Leal – [email protected]@inf.puc-rio.br 4as e 6as, 1515-17hs, sala 520L Todo o material apresentado em aula será disponibilizado na web Ö http://www.inf.puchttp://www.inf.puc-rio.br/~inf1621 rio.br/~inf1621 Bibiliografia: Ghezzi, Carlo; Jazayeri, Mehdi. Programming Language Concepts. Concepts. John Wiley & Sons, 1998. Scott, Michael. Programming Languages Pragmatics. Pragmatics. Morgan Kaufmann, 2000. A xerox dos livros do Ghezzi e do Scott está disponível na pasta 295 da xerox dos homens. Linguagens de Programacão I [email protected] 1 INF1621 – Linguagens de Programação I Programa: Introdução Sintaxe e semântica Escopo, ligação e ambiente de execução Tipos Estruturas de controle Concorrência e paralelismo Linguagens de programação orientada a objetos Linguagens de programação lógicas e funcionais Introdução as linguagens Lua, Java, Prolog e ML Linguagens de Programacão I [email protected] 2 1 INF1621 – Linguagens de Programação I Avaliação: A avaliação do curso será composta por duas provas (P1 e P2) e dois trabalhos (T1 e T2). A média final será calculada por: MF = (P1+P2+(T1+T2)/2)/3 Se MF for menor que 5.0 o aluno deverá fazer a prova final (PF), e a nova MF será: MF = ((maior(P1,P2) +PF+(T1+T2)/2)/3 Linguagens de Programacão I [email protected] 3 INF1621 – Linguagens de Programação I Trabalhos: O primeiro trabalho consistirá na implementação de um scanner em Lua e em Java. O segundo trabalho será um apresentação sobre uma LP a ser definida. Linguagens de Programacão I [email protected] 4 2 Introdução Linguagens de Programacão I [email protected] 5 Linguagens de Programação Introdução Nos primeiros computadores a programação era feita exclusivamente exclusivamente através de linguagens de baixo nível, envolvendo a manipulação direta direta de recursos específicos de cada máquina. As linguagens de programação (LPs) surgiram da necessidade de isolar isolar o programador de detalhes particulares das máquinas em que a programação é feita, permitindo a programação em termos mais próximos ao problema, ou em nível mais alto. alto. Algumas LPs são desenvolvidas para atender domínios específicos de problemas (SQL, PHP, etc), enquanto outras são de uso mais geral. geral. As características de uma LP têm um impacto significativo na capacidade de um programador desenvolver um programa Ö a opção por uma linguagem é portanto uma decisão de projeto importante. Linguagens de Programacão I [email protected] 6 3 Classificação de LPs Podemos identificar duas categorias principais: LPs imperativas (ou procedurais) – Um programa é composto por uma sequência de comandos que realizam atividades computacionais, usualmente envolvendo a manipulação da memória ou outros dispositivos. LPs declarativas – Um programa é composto por declarações que descrevem um problema e\ e\ou suas característcas. Linguagens de Programacão I [email protected] 7 Classificações de LPs Imperativas: von Neumann – LPs tradicionais em que o programa é composto por rotinas e sequências de comandos (C, Pascal, Fortran, Basic). Basic). Orientada a Objetos – O estilo de programação é baseado na definição de classes e objetos (Smalltalk, Eiffel, C++, Java). Declarativas: Funcionais – O modelo de computação é baseado na definição recursiva de funções (Lisp, Scheme, ML). Lógica – Um programa consiste na definição de relações lógicas que devem ser satisfeitas pela solução procurada (Prolog). Linguagens de Programacão I [email protected] 8 4 Características Desejáveis de LPs Legibilidade: facilidade com que um programa pode ser lido e compreendido. Redigibilidade: facilidade de expressar soluções de uma forma natural. natural. Expressividade: capacidade de representar soluções adequadamente. adequadamente. Robustez: capacidade de lidar com situações imprevistas. Eficiência do programa compilado: velocidade de execução do código código gerado, utilização de memória, etc. Disponibilidade de ferramentas e bibliotecas. Produtividade. Portabilidade. Linguagens de Programacão I [email protected] 9 Compiladores Aplicações que transformam um programa fonte descrito em uma LP de alto nível em um programa objeto (descrito em uma LP de baixo nível - usualmente linguagem de máquina). A execução do programa é controlada pelo próprio programa objeto. programa fonte input compilador programa objeto Linguagens de Programacão I [email protected] programa objeto output 10 5 Interpretadores Um interpretador executa diretamente um programa fonte, simulando uma máquina virtual cuja programação é executada diretamente através da própria LP de alto nível. A execução do programa é controlada diretamente pelo interpretador que “compõe” o ambiente de execução. programa fonte interpretador output input Linguagens de Programacão I [email protected] 11 Máquinas virtuais Diversas implementações de LPs incluem uma composição de compiladores e interpretadores (ex: Java, Lua, .Net). A geração de código intermediário facilita a portabilidade da LP. LP. programa fonte compilador programa intermediário máquina virtual programa intermediário output input Linguagens de Programacão I [email protected] 12 6