Post on 10-Apr-2020
Conceitos de
Linguagens de
Programação -
Características Paavo Soeiro
Motivação Para que possa escolher uma linguagem
apropriada ao problema.
Melhorar o entendimento da linguagem utilizada.
Facilitar o aprendizado de uma nova linguagem.
Fazer um melhor uso de determinada linguagem.
Facilitar o projeto de uma nova linguagem, ou uma
nova funcionalidade.
Pré-história
1842-1843
Ada Lovelace criou um
algoritmo para o cálculo
da sequência de Bernoulli
usando a máquina
analítica de Charles
Babbage
História 1950 a 1960
1954 – FORTRAN
Desenvolvida pela IBM por uma equipe
liderada por John W. Backus.
1958 – LISP
Desenvolvida por John McCarthy durante um
projeto de pesquisa em inteligência artificial.
1959 – COBOL
Criado por um comitê de investigadores de
várias instituições civis e governamentais
1967 a 1978 Nascimento dos paradigmas fundamentais
1962 – Simula
1964 – BASIC
1970 – Pascal
1969 a 1973 – C Dennis Ritchie, no AT&T Bell Labs
1972 – Smalltalk Orientação a objetos
1972 – Prolog Programação logica
1980
Módulos, performance
1983 – Ada
Sistemas modulares
1983 – C++
Fortalecimento da orientação a objetos
1987 – Perl
1990 – Era da Internet
1990 – Haskell
1991 – Python
1991 – Java
1993 – Ruby
1993 – Lua
1995 – JavaScript
1995 – PHP
2000 – C#
Fonte: TIOBE
Objetivos
Permitir que uma pessoa escreva
programas que ajudem a resolver
problemas.
Facilitando a comunicação entre o
programador e a máquina.
Programação estruturada
Programação modular
Programação orientada a objetos
Programação linear
Paradigma
Paradigma Imperativo:
Procedural
Estrutura de blocos
Orientação a objetos
Computação distribuída
Paradigma Declarativo:
Funcional
Lógica
Grau de abstração
Linguagem de programação de baixo nível
Assembly
Linguagem de programação de médio nível
C
Linguagem de programação de alto nível
Java
Geração
Segundo Henri Bal e Dick Grune:
Primeira geração - linguagem de máquina.
Segunda geração - linguagens de montagem (assembly).
Terceira geração - Linguagens procedurais.
Quarta geração - Linguagens aplicativas.
Quinta geração - Linguagens voltadas a Inteligência artificial como as linguagens lógicas (Prolog) e as linguagens funcionais (Lisp).
Sexta geração - Redes neurais.
Interpretada x Compilada
Interpretada:
Programa é executado instrução a
instrução
Cada comando é traduzido depois
executado
Compilada:
Programa é executado somente após a
tradução completa do código fonte.
Características
Simplicidade
Abstração de dados
Ortogonalidade
Expressividade
Eficiência
Portabilidade
Leitura
Confiabilidade
Abstração de dados
Descrever famílias de objetos focando
nos aspectos fundamentais, sem entrar
em possíveis detalhes específicos sobre
um objeto em particular.
A abstração de dados torna-se cada fez
mais importante a medida que o grau de
complexidade do problema aumenta.
Encapsulamento
Técnica que permite a separação de
aspectos internos e externos de um
objeto.
Impedir o acesso direto aos atributos.
Provê métodos de acesso para esses
atributos.
Herança
Permite que características comuns a um
grupo de classes, seja encapsulado em
uma superclasse, a qual é estendida em
subclasses que herdam as características
da classe base e adiciona características
especificas.
Herança simples
Herança múltipla
Polimorfismo
“Muitas formas”
Permite que classes derivadas de uma
classe base invoquem métodos com
mesma assinatura, porem com
comportamentos diferentes.
Tipos de polimorfismo
Inclusão – O mais básico, ponteiro (referencia) da classe pai, aponta para instancia da classe filha.
Animal animal = new Cachorro();
Paramétrico
Generics em Java
Sobrecarga
Coerção
Casting implicito
Escopo de variáveis
Escopo diz respeito a visibilidade de uma
variável.
Qual porção de código enxerga a variável?
O escopo pode ser:
Dinâmico
Estático
Quanto a visibilidade:
Local
Global
C vs Java
Características Gerais:
C
Paradigma procedural
Compilado
Java
Orientado a objetos
Hibrido (bytecode + interpretador)
Tipos de dados int
float
double
char
int
float
double
char
byte
short
long
boolean
Estruturas de repetição e controle if
else
switch
for
while
do while
break
continue
return
if
else
switch
for
while
do while
break
continue
return
try
catch
finally
Palavras reservadas C
Java
Reservadas porem não utilizadas
Operadores aritméticos Operador binário Descrição
= Atribuição
+ Soma
- Subtração
/ Divisão
% Modulo (obtém o resto da divisão)
Incremento e decremento Operador Instrução Pós-fixado Pré-fixado
++ var = var+1;
var = var++;
ou
var++;
var = ++var;
ou
++var;
-- var = var-1;
var = var--;
ou
var--;
var= --var;
ou
--var;
Relacional
Operador Descrição
> Maior
>= Maior igual
< Menor
<= Menor igual
== Igualdade
!= Diferente
Logico
Operador Descrição
&& AND
|| OR
! NOT (operador de negação)
Bit a bit
Operador Descrição
& AND
| OR
^ XOR (OR exclusivo)
<< Deslocamento para esquerda
>> Deslocamento para direita
Portabilidade
O programa em C precisa é distribuído
em formato binário executável e precisa
ser compilado em cada arquitetura que
for executado.
Em Java, o programa é distribuído em
bytecode e necessita de uma maquina
virtual para ser executado.
Segurança
O programador C possui mais liberdades
ao escrever seus códigos.
Ex.: acessando regiões de memoria fora
do escopo da aplicação por meio de
ponteiros.
Encapsulamento
Java prove mecanismos de
encapsulamento:
public
protected
private
C
Através de struct
Aplicações
C
kernel Linux
Excel
Java
Netbeans