Aula 1 Java Prof. Dr. Sylvio Barbon Junior

Documentos relacionados
Capítulo 1. Aspectos Preliminares

Linguagens de Programação. Introdução. Carlos Bazilio

Linguagens de Programação

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Histórico de Linguagens de Programação

Linguagens de Programação

Projeto de Linguagem. Linguagens de Programação

Paradigmas de Programação

Métodos de implementação de linguagens. Kellen Pinagé

Programação de Computadores

PLANO DE UNIDADE DIDÁTICA- PUD

Linguagem de Programação e Compiladores

Estudos de Linguagens de Programação - Revisão

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Linguagens de Programação Aula 3

Programação de Computadores

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Revisão: linguagens de programação

Nomes, vinculações e escopos

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Programação de Computadores:

Fundamentos de Programação 1

Organização de Computadores

Algoritmos e Programação

Linguagens de Programação

Nomes, vinculações e escopos

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta

Informática I. Aula 9. Aula 9-17/05/2006 1

Paradigmas de Linguagens

Algoritmos e Programação

1 Introdução à Programação O que é? Para que serve?... 1

PROGRAMAÇÃO I. Introdução

Conceitos de Linguagens de Programação

Noções de compilação

Capítulo 7. Expressões e Sentenças de Atribuição

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

3. Linguagem de Programação C

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Conceitos de Linguagens de Programação

Introdução à Computação

Desenvolvimento de Aplicações Desktop

Python - Variáveis e expressões

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Fundamentos de Sistemas Operacionais

Compiladores. Introdução

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Paradigmas de Programação

Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição

Paradigmas de Programação

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.

Programação I Apresentação

Expressões e sentença de atribuição

Linguagens de Programação 10 Avaliação de Linguagens

Linguagens de Programação Conceitos e Técnicas. Amarrações

Paradigmas de Linguagem de Programação. Aspectos Básicos

As fases de um compilador

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Sistema Computacional

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Programação I Aula 2 Apresentação da linguagem Python

Paradigmas de Linguagem de Programação. Paradigma Imperativo

As fases de um compilador

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Capítulo 5. Nomes, Vinculações e Escopos

Autômatos e Linguagens

Transcrição:

5COP101 Linguagens de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1

Sumário 1) Razões para Estudar Conceitos de LP; 2) Domínios das Linguagens de Programação 3) Critérios para Avaliação das Linguagens - Readability - Writability - Reliability 4) Categorias das Linguagens (Paradigmas) 5) Métodos para Implementação Sylvio Barbon Jr barbon@uel.br 2

Razões para Estudar 1) Aumentar a capacidade de expressar ideias: - A relação entre poder de expressão, raciocínio e abstração está ligada à linguagem. - Programadores podem aumentar a capacidade de desenvolvimento de software aprendendo outras linguagens. 2) Melhora da escolha apropriada para linguagens: - Na universidade são ensinadas poucas linguagens; - As linguagens mudam constantemente; - A linguagem deve ser escolhida para solucionar o problema; - É melhor selecionar uma linguagem que tenha a característica do que simular a característica em outra (elegância, lentidão, inseguro); Sylvio Barbon Jr barbon@uel.br 4

Razões para Estudar 3) Aumenta a capacidade de aprender novas linguagens: - É sabido que uma pessoa que tem sólida formação em apenas uma linguagem tem dificuldades para aprender uma nova, quando comparado a um indivíduo com formação em 2 ou 3. - Exemplo, pessoas que conhecem o paradigma O.O. terão mais facilidade para aprender Java do que quem não conhecem os conceitos. - O mesmo fenômeno acontece para linguagens naturais, um indivíduo que fala português, que aprendeu inglês terá mais facilidade par aprender alemão. Sylvio Barbon Jr barbon@uel.br 5

Razões para Estudar 4) Melhor compreensão da importância da implementação: - Uso mais inteligente da linguagem de programação selecionada; - Aumento da velocidade de depuração de erros e gargalos; - Por exemplo, desenvolvedores que conhecem pouco sobre outras linguagens podem escolher a invocação de rotinas legadas ao invés da implementação em uma mesma plataforma; Sylvio Barbon Jr barbon@uel.br 6

Razões para Estudar 5) Uso adequado das linguagens já conhecidas: - O uso de linguagens que não são familiares reforçam o estudo de características e aplicações, que podem ampliar e abranger áreas não estudadas na ling. dominada; 6) Avanço geral em computação: - Uma visão geral dos conceitos auxiliam no aprofundamento da teoria da computação; - Novas linguagens surgem a todo momento, algumas específicas para escopos de problemas; Sylvio Barbon Jr barbon@uel.br 7

Domínios de Programação

Domínios de Programação Aplicações Científicas Aplicações Comerciais (Business) Inteligência Artificial Programação de Sistemas Softwares para Web Sylvio Barbon Jr barbon@uel.br 9

Domínios de Programação 1) Aplicações Científicas: - Tipicamente estruturas simples; - Muitos cálculos aritméticos; - Alta precisão numérica; - Exemplo: Fortran e ALGOL 60 2) Aplicações Comerciais (Business): - Facilidade na produção de relatórios; - Diversas maneiras de descrever dados; - Estruturas complexas para os dados (data e char.) - Exemplo: COBOL. 3) Inteligência Artificial: - Utilização simbólica e não computacional; - Deve ser mais flexível que os outros domínios; Sylvio Barbon Jr barbon@uel.br 10

Domínios de Programação - Algumas aplicações precisam de codificação de segmentos durante a execução - Exemplos: LISP 4) Programação de Sistemas - Características de baixo nível; - Recursos de interface com dispositivos de I/O; - Exemplo: Linguagem C 5) Softwares Web - Coleção eclética de linguagens; - Entre as funcionalidade, escrita em HTML; - Exemplo: PHP; Sylvio Barbon Jr barbon@uel.br 11

Domínios de Programação Outra descrição de domínio: Sylvio Barbon Jr barbon@uel.br 12

Critérios para Avaliação das Linguagens Foco da avaliação das linguagens está pautado no processo de desenvolvimento de software, principalmente manutenção. Sylvio Barbon Jr barbon@uel.br 13

Critérios para Avaliação das Linguagens 1) Readability: - É uma das características mais importantes, que garantem a legibilidade e compreensão; Inicialmente as linguagens eram construídas do ponto de vista do computador e não do usuário; A popularização da computação se deu a melhoria deste critério. A legibilidade deve ser considerada do contexto do domínio do problema. A dificuldade deve estar em solucionar o problema e não em traduzir para a máquina. Sylvio Barbon Jr barbon@uel.br 14

1) Readability: Critérios para Avaliação das Linguagens Algumas características contribuem para a legibilidade das Linguagens de Programação: Simplicidade Global Ortogonalidade Tipagem de Dados Sintaxe Sylvio Barbon Jr barbon@uel.br 15

Critérios para Avaliação das Linguagens 1) Readability: Simplicidade Global: Problemas de legibilidade podem ocorrer quando o programador pode ler um trecho acreditando ser familiar, mas apresenta resultados específicos. Exemplo: aux = aux + 1 aux += 1 aux++ ++aux A sobrecarga de operador contribui para a redução para a legibilidade do código. Sylvio Barbon Jr barbon@uel.br 16

Critérios para Avaliação das Linguagens 1) Readability: Ortogonalidade: Define a relação entre um grupo de construções primitivas e como elas podem ser combinadas. Quanto mais ortogonal a linguagem, menos exceções serão criadas. Exemplo: a + b * A expressão pode significar que os valores estão sendo movidos e adicionados juntos. Porém se a for um ponteiro ou um tipo flutuante, serão necessários tratamentos. Sylvio Barbon Jr barbon@uel.br 17

Critérios para Avaliação das Linguagens 1) Readability: Tipagem de dados: Facilidades para a definição dos tipos de dados e estruturas contribuem na legibilidade. valor = 1 valor = true Sintaxe: A sintaxe ou forma afetam diretamente a legibilidade. O uso de palavras especiais (reservadas) influenciam fortemente a legibilidade. Exemplos: while, for, class, end, end loop. Sylvio Barbon Jr barbon@uel.br 18

Critérios para Avaliação das Linguagens 2) Writability: É a medida de facilidade para escrita de programas em um determinado domínio. A maioria das características de legibilidade (readability) afetam a writability. Exemplo: A writability do VB (Visual Basic) para escrita de softwares com interface gráfica é drasticamente diferente da linguagem C. Algumas novas características serão destacadas: Simplicidade e Ortogonalidade Suporte a Abstração Expressividade Sylvio Barbon Jr barbon@uel.br 19

2) Writability: Critérios para Avaliação das Linguagens Simplicidade e Ortogonalidade: Caso a linguagem apresente uma diversidade de construções o programador pode não se familiarizar com todas. Isso pode induzir o uso incorreto de algumas construções e o desuso de outras. Por outro lado o excesso de simplicidade pode exigir uma solução complexa para um problema. Por isso a ideia de uma linguagem adequada para o problema é sempre considerada na solução de um problema.

2) Writability: Simplicidade e Ortogonalidade: Critérios para Avaliação das Linguagens Visual Basic C

2) Writability: Critérios para Avaliação das Linguagens Suporte a Abstração: Sendo abstração a habilidade de definir e depois utilizar estruturas ou operações para diversos fins, as linguagens devem auxiliar nesta tarefa. O grau de abstração permite ao programador descrever solução com mais naturalidade. Um grau de abstração adequado está sempre ao domínio do problema.

2) Writability: Critérios para Avaliação das Linguagens Exepressividade: Pode referenciar diversas características, mas podemos relacionar com a capacidade de escrever programas menores, utilizando elementos como: count++ (count = count + 1) for ( ao uso do while com variável de controle)

3) Reliability: Critérios para Avaliação das Linguagens - Descreve a capacidade de uma linguagem ser segura em várias condições. As principais características deste critério são: Verificação de Tipo Controle de Exceção Aliasing Readability e Writability

3) Reliability: Critérios para Avaliação das Linguagens Verificação de Tipo: É a tarefa de verificação de tipagem de variáveis durante a compilação ou execução de um programa. Diversos erros podem ser evitados com a tipagem correta dos dados e requisitando os reparos adequados dos desenvolvedores. Um exemplo da importância desta verificação é quando um tipo pode assumir alguns correspondentes como int e float, porém o resultado pode não ser o esperado.

3) Reliability: Critérios para Avaliação das Linguagens Controle de Exceções: É a habilidade de interceptação de condições indesejadas em um programa e tomar medidas de correção para mantê-lo coerente. Linguagens como Ada, C++, Java e C# apresentação capacidades avançadas para o controle de exceção. Aliasing: É a característica de apresentar dois ou mais mecanismos para acessar o mesmo lugar da memória. Esta característica é considerada como prejudicial em uma linguagem de programação. Exemplo: Dois ponteiros apontam para o mesmo endereço de memória.

3) Reliability: Critérios para Avaliação das Linguagens Readability e Writability: A legibilidade e capacidade de escrita também influenciam na confiabilidade de uma linguagem de programação. Estes fatores ficam mais evidentes em fases do ciclo de vida do software desenvolvido. Programas que são de dificil leitura e escrita, obviamente só complexos para modificação e correção.

CUSTO Critérios para Avaliação das Linguagens O custo total que envolve o uso de uma linguagem de programação é formado por diversos fatores: 1)Treinamento (Simplicidade e Ortogonalidade) 2)Custo de escrever programas (writability) 3)Custo de compilação (tempo) 4)Custo de execução (tempo) 5)Custo de implementação do sistema (financeiro) 6)Custo por confiabilidade (falhas) 7)Manutenção (correções e adição de novas func.) Novos critérios: Portabilidade, Generalidade e Welldenedness (completo e preciso)

Categorias das Linguagens As linguagens são categoriazadas em quatro grupos (ou paradigmas): - Linguagens Imperativas; - Linguagens Funcionais; - Linguagens Lógicas; - Linguagens Orientadas a Objetos.

Categorias das Linguagens - Linguagens Imperativas: Tem como principal característica comando que atualizam as variáveis armazenadas em memória; Seu domínio são aplicações comerciais, científicas e sistemas operacionais. Exemplo: C, Cobol, Pascal etc.

Categorias das Linguagens - Linguagens Imperativas:

Categorias das Linguagens - Linguagens Funcionais: Tem como origem as funções matemáticas para realizar as computações. Domínio: aplicações científicas e inteligência artificial. Exemplo: Lisp, Scheme, CLOS etc.

Categorias das Linguagens - Linguagens Funcionais:

Categorias das Linguagens - Linguagens Lógicas: A implementação é baseada em uma descrição lógica do problema (uma relação). Muito utiilzado em sistemas especialistas. Domínio: Inteligência Artificial; Exemplo: Prolog e Gödel

Categorias das Linguagens - Linguagens Lógicas:

Categorias das Linguagens - Linguagens Orientadas a Objetos: Conceitos de classes, atributos e objetos. Domínios: Praticamente todos. Exemplos: Java, C++, C# etc;

Categorias das Linguagens - Linguagens Orientadas a Objetos:

Métodos de Implementação Os métodos de implementação descrevem com uma linguagem interagem entre o código e o hardware de execução

Métodos de Implementação Os métodos podem ser divididos em: 1) Compilação 2) Interpretação Pura 3) Interpretação Híbrida

Métodos de Implementação 1) Compilação - É a tradução de im programa fonte em um programa em linguagem de montagem ou de máquina. - Normalmente é caracterizado pela rápida execução - Exemplo: C, Cobol, Fortran, Pascal.

Métodos de Implementação 2) Interpretação Pura - Interpreta os comandos do código fonte e os executa; - Caracterizado por uma depuração facilitada; - Uso de Máquinas Virtuais; - Mais lento do que as linguagens compiladas; - Exemplo: Javascript, Prolog, VBScript, Shell;

Métodos de Implementação 3) Interpretação Híbrida - É realizada uma tradução para um programa intermediário de fácil interpretação; - Desempenho intermediário entre as anteriores; - Exemplo: Java, Perl etc.

Referências 1- Sebesta, R. Conceitos de Linguagens de Programação. 5ª Edição. Porto Alegre. Bookman, 2003. 2 - Tucker, A. B. Noonan, R. E. Linguagens de Programação. Princípios e Paradigmas. 2ª Ed. São Paulo, McGraw-Hill, 2008.