Paradigmas de Linguagens de Programação



Documentos relacionados
AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Paradigmas de Programação

INF1621 Linguagens de Programação I

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

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

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

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

Linguagens de. Aula 01. Profa Cristiane Koehler

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Computador Digital Circuitos de um computador (Hardware)

Organização de Computadores Software

Introdução à Programação Aula 2 Introdução à linguagem Python

Linguagens de Programação Aula 10

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Nesta aula... Analisamos na ultima aula a evolução e caraterísticas de computadores e linguagens de programação. Nesta aula iremos ver:

Indústria de Software - Histórico

Arquitetura de Computadores Moderna

Curso Técnico em Redes

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação

Sistemas Distribuídos (DCC/UFRJ)

Programação Orientada a Objeto

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Análise e Projeto Orientados por Objetos

Algoritmos e Programação Parte Teórica

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Programa Analítico. Introdução. Origens da programação Orientada a Objetos. Paradigma procedural. Paradigma Orientado a Objetos.

Introdução à Engenharia de Computação

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

Apostila da disciplina Introdução à Engenharia de Software Professor: Sandro Melo Faculdades São José Curso de Tecnologia de Sistemas de Informação

Programação Orientada a Objetos

Algoritmos e Programação Aula 01 Introdução a Computação

Programação para Internet II

Engenharia de Software. Tema 1. Introdução à Engenharia de Software Profa. Susana M. Iglesias

UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA ELÉTRICA COLEGIADO DO CURSO DE GRADUAÇÃO EM ENGENHARIA ELÉTRICA/ENG.

UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

Introdução a Programação Funcional

Banco de Dados Orientado a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Linguagem de Programação Introdução a Linguagem Java

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Edeyson Andrade Gomes.

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Infra-estrutura de Software

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

1. DADOS DE IDENTIFICAÇÃO

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Curso Técnico em Informática Organização Curricular. A carga horária total dos módulos é oferecida conforme quadro síntese abaixo:

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Introdução aos computadores, à Internet e à World Wide Web by Pearson Education do Brasil

Programação de. Programa. Bibliografia. Páginas electrónicas de PM. Regras das aulas de laboratório. Métodos de Ensino - Aulas

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

PRÓ-REITORIA DE EXTENSÃO, PESQUISA E INOVAÇÃO DIRETORIA DE INOVAÇÃO E PESQUISA FORMULÁRIO II: Relatório de Atividades de Pesquisa

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

CURSO DESENVOLVEDOR JAVA Edição 2010

Linguagem de Programação

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

IB I M B - PC ( C ( P C U U

IIH Introdução à Informática e Hardware

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

O modelo do computador

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

INTRODUÇÃO À PROGRAMAÇÃO

Programação Orientada a Objetos OOP. IFES Campus Vitória Engenharia Elétrica Professor: Danilo A. Silva

MATA49 Programação de Software Básico

PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO (PROENG) ASSESSORIA DE DESENVOLVIMENTO ASSESSORIA JURÍDICA

Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Programação de Computadores - I. Profª Beatriz Profº Israel

Game Programming Basic

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

EDITAL DE RECRUTAMENTO E SELEÇÃO INTERNO E EXTERNO Nº.001/2013

Descrição do Produto. Altus S. A. 1

ONE TOONE CURSOS PARTICULARES JAVASCRIPT

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Planificação de. Aplicações Informáticas B

MC-102 Aula 01. Instituto de Computação Unicamp

Conceitos e Evolução Capítulos 1 e 2

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Programação Orientada a Objeto

Programação de Computadores III

Breve Histórico & Conceitos Básicos

Algoritmos DCC 119. Introdução e Conceitos Básicos

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Linguagens de Programação

sendo bastante acessível e compreendido pelos usuários que o utilizarem.

JinSol, uma interface em Java para solvers lineares.

Sistemas Operacionais

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA

TÉCNICAS DE PROGRAMAÇÃO

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

Introdução às Linguagens de Programação

Figura 01 Kernel de um Sistema Operacional

Transcrição:

Paradigmas de Linguagens de Programação Faculdade Nova Roma Cursos de Ciências da Computação (6 Período) Prof. Adriano Avelar - Site: www.adrianoavelar.com Email: edson.avelar@yahoo.com.br

Ementa Introdução às linguagens de programação: conceitos elementares. Evolução dos conceitos de linguagens de programação. Atributos semânticos. Tipos de dados: construções de definição e manipulação de tipos de dados; tipos abstratos de dados. Subprogramas e recursividade. Linguagens imperativas. Linguagens funcionais. Linguagens lógicas. Linguagens Orientadas em objetos. Tratamento de Exceções. Introdução à Programação Concorrente. Critérios para seleção de linguagens de programação.

Objetivo Introduzir conceitos e princípios fundamentais de linguagens de programação Elementos sintáticos e semânticos Evolução de linguagens de programação Visão geral dos paradigmas de linguagens de programação Imperativo, Funcional, Orientado a Objetos Lógico e Orientado a Aspecto Estratégias para seleção de linguagens de programação Prática com linguagens de programação especializadas

Bibliografia Sugerida Allen B. Tucker and Robert E. Noonan: Linguagens de Programação - Princípios e Paradigmas. 2º Edição, McGraw Hill. 2009. SEBESTA, Robert W. Conceitos de linguagens de programação. 4. ed. Porto Alegre : Bookman, 2000. xii, 624 p. GHEZZI, Carlo; JAZAYERI, Mehdi. Programming language concepts. New York: John Wiley, 1997.

Metodologia O desenvolvimento do conteúdo da disciplina é feito por meio de aulas expositivas, apresentação de vídeos, debates Realização de exercícios (em sala e extraclasse) Elaboração de trabalhos práticos. Troca de Informações através de um grupo de e-mail a ser criado.

Avaliação P1 P2 Uma prova escrita (10Pts) Teoria sobre Paradigmas Exercícios (Máximo de 1Pt de Bonificação) Um Prova Escrita (30% da P2) Trabalho Prático (70% da P2) Individual ou Dupla Apresentar uma implementação de uma linguagem de programação a ser definida por sorteio.

Observação sobre Exercícios: Como são itens de bonificação, devem ser entregues nas datas solicitas. Não serão aceitos fora do prazo!

Visão Geral da Disciplina Categorias de Problemas Paradigmas de Linguagens de Programação

Aula de Hoje Motivação Por que estudar princípios e modelos de linguagens de programação? Introdução a Linguagens de Programação modelos de linguagens Características desejáveis em linguagens de programação

Princípios de Linguagens de Programação Definição (LP) Uma linguagem de programação é uma linguagem artificial projetada para expressar computações que possam ser executadas por uma máquina, particularmente um computador Porque estudar Paradigmas de LP?

Porque estudar Paradigmas de LP? Maior habilidade para resolver problemas; Melhor uso de uma LP; Melhor escolha de uma LP; Maior facilidade em aprender novas LP; Melhor Design de LPs.

Projeto de Linguagens de Programação Visão de projeto: Qual a finalidade da LP? Qual sua diferença em relação a outras LP existentes? LP de uso geral: atender diferentes domínios de problemas, usuários e plataformas Modelo de linguagem de programação Modelo imperativo: baseado em comandos Orientado a procedimentos Orientado a objetos Orientado a Aspectos Modelo funcional: baseado em funções Modelo lógico: baseado em axiomas lógicos

Modelos de Linguagens Modelo imperativo Linguagens expressam sequências de comandos que realizam transformações sobre dados base: máquina de von Neumann orientadas a procedimentos Modelo declarativo Linguagens que não possuem o conceito de sequências de comandos Linguagens funcionais, baseadas em funções Linguagens lógicas, baseada em axiomas lógicos

Modelos de execução Sequencial Uma computação é realizada após o término da anterior Controle de fluxo de execução interno ao programa: Sequência Seleção Iteração Invocações Concorrente Múltiplas computações podem ser executadas simultaneamente Computações paralelas Múltiplos processadores compartilham memória Computações distribuídas múltiplos computadores conectados por uma rede de comunicação

Modelo de Execução/Construção Compilada Interpretada

Modelo de Nível Baixo Nível Próximo à Maquina MOV AX,0002 MOV BX,0001 ADD AX,BX Alto Nível Próximo ao programador Alto Nível int A, B; int main() { A = 2; B = 1; A = A + B; }

Modelo de Aplicação Científica Algol, Fortran, Matlab Comerciais Cobol, Dataflex Processamento de Listas Lisp Gerais Java, C, C++, Visual Basic Inteligência Artificial PROLOG Web JSP, PHP, HTML

Critérios para avaliação de LP Legibilidade Simplicidade Expressividade Ortogonalidade Confiabilidade Portabilidade

Legibilidade Facilidade de ler e escrever programas Legibilidade influi: desenvolvimento e depuração de programas manutenção de programas desempenho de equipes de programação Fatores que melhoram a legibilidade: Abstração de dados Comandos de controle Modularização de programas Documentação Convenções léxicas, sintaxe e semântica Exemplo em Java: nomes de classes iniciam por letra maiúscula nomes de campos usam letras minúsculas

Simplicidade Representação de cada conceito seja simples de aprender e dominar: Simplicidade sintática exige que a representação seja feita de modo preciso, sem ambiguidades Contraexemplo 1: A++; A=A+1; A+=1; ++A. Contraexemplo 2: a, b := x+1, y + 3; Simplicidade semântica exige que a representação possua um significado independente de contexto Contraexemplo: private: B b; class Campo: private Campo Simplicidade não significa concisão A linguagem pode ser concisa mas usar muitos símbolos especiais: Ex. Linguagens Funcionais

Expressividade Representação clara e simples de dados e procedimentos a serem executados pelo programa Exemplo: tipos de dados em Pascal Expressividade x concisão Muito concisa: falta expressividade? Muito extensa: falta simplicidade? Linguagens mais modernas Incorporam apenas um conjunto básico de representações de tipos de dados e comandos Aumentam o poder de expressividade com bibliotecas de componentes Ex. BigInteger em Java

Ortogonalidade conjunto de construções primitivas pode se combinar em um número grande de maneiras para construir as estruturas de uma linguagem Possibilidade de combinar entre si, sem restrições, os componentes básicos da LP Exemplo: permitir combinações de estruturas de dados, como arrays de qualquer tipo. Contraexemplo: não permitir que um array seja usado como parâmetro de uma função Componente de primeira ordem: pode ser livremente usado em expressões, atribuições, como argumento e retorno de procedimentos

Portabilidade Multiplataforma: capacidade de um software rodar em diferentes plataformas sem a necessidade de maiores adaptações Sem exigências especiais de hardware/software Exemplo: aplicação compatível com Linux e Windows Longevidade: ciclo de vida útil do software e o do hardware não precisam ser síncronos; ou seja, é possível usar o mesmo software após uma mudança de hardware

Confiabilidade Mecanismos que facilitem a produção de programas que atendam às sua especificações Tipagem forte: o processador da linguagem deve: assegurar que a utilização dos diferentes tipos de dados seja compatível com a sua definição evitar que operações perigosas, tal como aritmética de ponteiros, seja permitida Tratamento de exceções: sistemas de tratamento de exceções permitem construir programas que: possuam definições de como proceder em caso de comportamento não usual possibilitem tanto o diagnóstico quanto o tratamento de erros em tempo de execução

Critérios para escolha de uma LP Implementação Disponibilidade quanto a plataforma; Eficiência; Competência na LP Experiência do programador; Competência do grupo envolvido; Portabilidade Execução em várias plataformas Sintaxe Certos tipos de problemas acomodamse melhor a certos modelos; Semântica Aplicação X facilidade; Ambiente de Programação Ferramentas diminuem o esforço; Uso de bibliotecas Modelo de computação

Estudo de Caso MySQL - Ambiente de programação - Afinidade PHP - Afinidade - Confiabilidade - Portabilidade - Finalidade (web) Android - Afinidade - Facilidade - Disponibilidade de Equipamento - Finalidade (Mobile) Linguagem C++ - Ambiente de programação - Código Fonte Aberto Linguagem C - Ambiente de programação J2ME (Java Micro Edition) - Ambiente de programação

Linguagens de Programação

Histórico das Linguagens de Programação Década de 1960 Programação baseada na arquitetura do hardware existente Computadores caros e inacessíveis Seqüência de instruções Sem preocupação com reutilização de código Exemplos de linguagens populares: Uso acadêmico: ALGOL Uso científico: FORTRAN Uso comercial: COBOL

Histórico das Linguagens de Programação Década de 1970: surgimento da Engenharia de Software Abstração de dados: definição de tipos Abstração de controle: comandos, procedimentos Inicia preocupação com programming in the large : módulos e programação Estruturada Exemplos de linguagens populares: Uso acadêmico: Pascal (tipos de dados) Uso comercial: COBOL Estruturado (arquivos/relatórios)

Histórico das Linguagens de Programação Década de 1980: modularização Ênfase em mecanismos de LP e abstrações Correção de programas: verificação de tipos, exceções Programação concorrente e distribuída e tempo real Programação baseada em objetos (implementação de Tipos Abstratos de Dados) Programação orientada a objetos (herança) Exemplos de linguagens Uso acadêmico: Pascal / Modula / C Programação de tempo real: Ada 83 Orientada a objetos: SmallTalk

Histórico das Linguagens de Programação Década de 1990: base na Arquitetura Estruturação de dados: encapsulamento Estruturação da computação: classe Estruturação do programa: classes e objetos Programação para Internet: plataforma neutra Exemplos de linguagens Object-Pascal / Delphi C / C++ / Objective-C Ada83 / Ada95 Java

Histórico das Linguagens de Programação Atualmente Mecanismos alternativos de modularidade programação orientada a aspectos RAD (Rapid Application Development) Maior ênfase na distribuição e mobilidade Integração com bases de dados, incluindo XML e bancos de dados relacionais. Uso extensivo de frameworks Spring, Hibernate, EJB Crescimento das linguagens voltadas para Internet

Linguagens mais populares de 2013 http://readme.lk/busting-bubbles-ten-popular-programming-languages/

Exercício (Entrega até o final da aula) Nome: Data: 1 - Por que é importante estudar os paradigmas de linguagens de programação? 2 - Qual sua linguagem de programação preferida? Por que?

Exercício Entrega: a definir em aula Realização individual ou em dupla Enunciado: Apresente uma redação sobre o tema critérios de seleção de linguagens de programação Mínimo: 2 páginas Usar o template da SBC para artigos técnicos http://www.sbc.org.br/index.php?option=com_jdownloads& Itemid=195&task=finish&cid=38&catid=32

Exercício Título: critérios de seleção de linguagens de programação Resumo Este trabalho apresenta os critérios... Introdução A programação surgiu para ajudar o homem a resolver problemas... Referências [1] Adriano. A, Fuluno B., Programação Imperativa, Anais do SBC, p. 11, 2013 Exemplo: http://homepages.dcc.ufmg.br/~figueiredo/publications/wei07ready.pdf