SlideShare uma empresa Scribd logo
Linguagens
de
Programação

Fernando
Magno
Quintão
Pereira

•  O
que
são
linguagens
de
programação?

•  Por
que
elas
existem?

•  Como
computadores
eram
programados
antes

das
linguagens
de
programação?

A
Torre
de
Babel

•  Existem
entre
5.000
e
6.000

línguas
faladas
em
nosso

planeta.

•  Cerca
de
200
idiomas

possuem
mais
de
um
milhão

de
falantes.

•  Como
descrever
um
idioma?

Que
elementos
estão

presentes
na
descrição
de

uma
linguagem?

Computadores
também
conversam

•  Como
é
a
linguagem

falada
pelos

computadores?

– Que
símbolos
ela
usa?

– Quais
palavras?

– Como
seria
a
gramáMca

dessa
língua
eletrônica?

Vamos
falar
zero‐um‐nês?

•  Computadores
possuem

cordas
vocais
muito
simples:

ou
emitem
som,
ou
não

emitem

•  É
possível
haver
uma

linguagem
com
apenas
dois

símbolos?

•  Porque
somente
dois

símbolos?

Dialetos
do
zero‐um‐nês

•  Há
muitas
linguagens
de

zeros
e
uns
diferentes,
assim

como
há
muitas
linguagens

diferentes
usando

caracteres
laMnos:
inglês,

português,
espanhol,
etc.

•  Quem
me
dá
exemplos
de

zero‐um‐nês
diferentes?

“The
book
is
on
the
table”

•  Cada
instrução
em
zero‐um‐nês
possui
um

nome,
chamado
opcode,
e
operandos.

•  Instruções
mudam
o
estado
do
computador.

•  Que
Mpos
de
instruções
poderiam
exisMr?

•  Falar
zero‐um‐nês
deve
ser
fácil,
não
é?

Mas
não
é
não…

•  AnMgamente
programar

computadores
era
muito

di[cil.

•  Qual
o
problema
com
zero‐
um‐nês?

•  Alguém
ai
conhece
cartões

perfurados?

•  Como
deixar
zero‐um‐nês

mais
fácil
de
usar?

E
veio
a
Deusa

•  Palavras
são
mais
fáceis

de
lembrar
que

sequências
de
zeros
e

uns.

•  Por
exemplo:
qual

instrução
é
mais
fácil
de

ler:
mov $1, AL,

ou

10110000
01100001?

O
que
este
programa
faz?

movl $5, %eax
movl $1, %edx
.L4:
imull %eax, %edx
decl %eax
testl %eax, $0
jg .L4
O
que
este
programa
faz?

movl $5, %eax
movl $1, %edx
.L4:
imull %eax, %edx
decl %eax
testl %eax, $0
jg .L4
Coloque
5
em
eax

Coloque
1
em
edx

MulMplique
eax
por
edx
e

coloque
o
resultado
em
edx

Subtraia
1
de
eax

Teste
se
eax
é
0

não

O
Montador

•  As
pessoas
falavam

assembly,
mas
os

computadores
ainda

falavam
zero‐um‐nês.

– Era
preciso
um
tradutor.

•  O
que
um
tradutor

deste
Mpo
deveria
ser

capaz
de
fazer?

A
Deusa
não
foi
suficiente

•  Programar
em
assembly
ainda
era
di[cil.

•  Os
programadores
queriam
que
os

computadores
fossem
capazes
de
falar
línguas

ainda
mais
parecidas
com
linguagens

humanas.

•  Quais
foram
as
primeiras
linguagens
de

programação?

•  Quem
foram
os
pais
dessas
linguagens?


Surge
Fortran

•  John
Backus
estava
com

preguiça
de
escrever

programas
em
assembly.

•  IBM
1953/54

•  Programar
ficou
umas
20

vezes
mais
fácil

– Mas
as
pessoas
ainda

estavam
relutantes…

Porque?

Exemplo
de
programa
em
Fortran

nfact=1
do i=1, 5
nfact = nfact*I
enddo
movl $5, %eax
movl $1, %edx
.L4:
imull %eax, %edx
decl %eax
testl %eax, $0
jg .L4
Fortran
 Assembly

Que
novidades
surgiram

com
Fortran?

E
Surge
LISP

•  1958,
Massachuse=s
Ins?tute
of
Technology

•  Professor
John
McCarthy.

•  Uma
notação
simples,
baseada
em
funções

matemáMcas.

•  Muitos
parênteses,

•  E
listas…

Exemplo
de
Programa
em
LISP

(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
nfact=1
do i=1, n
nfact = nfact*I
enddo
Fortran

LISP

E
quando,
nos
anos
70,

os
soviéMcos
conseguiram

as
úlMmas
500
linhas
do

sistema
de
mísseis

americanos…

Recursão!

ALGOL
–
um
Mme
de
estrelas

•  Precisava‐se
de
um
padrão
para

algoritmos.

•  Um
comitê
foi
formado
em
1958.

– John
Backus

– C.
A.
R.
Hoare

– John
McCarthy,
etc

•  Desse
comitê
nasceu
ALGOL
58.

•  Talvez
a
mais
influente

linguagem
de
programação.

ALGOL
–
exemplo

integer
procedure
Factorial(m);

integer
m;

Begin









integer
F;










F
:=
if
m=1
then
1
else
m*Factorial(m‐1);









Factorial
:=
F

end;

•  Vocês
já
viram
algo
parecido
com
isto?

E
COBOL

•  COBOL
foi
feita
para
negócios:

– Contadores,
economistas,
etc

– Como
deveria
ser
uma

linguagem
assim?

•  1958:
COBOL
foi
criada
por

um
comitê.

– Indústria,
governo
e
academia

•  Ainda
usada
em
muitas

companhias,
até
em
BH!

Exemplo
de
programas
em
COBOL

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING
COST.
SUBTRACT DISCOUNT FROM COST GIVING
FINAL-COST.
•  Quantas
linguagens
de
programação
existem?

•  Quais
as
linguagens
mais
populares?

Quantas
são?

•  A
editora
O’Reilly
diz
que

existem
2.500
linguagens

de
programação

documentadas.

•  A
wikipédia
documenta

650.

•  Existem
muitas…

•  Mas,
porque
tantas?

Propósitos
diferentes

•  Fortran
servia
para
cálculos

cienwficos.

•  Lisp
era
usada
em
teoria
da

computação.

•  COBOL
foi
feita
para
aplicações

comerciais.

•  Algol
é
uma
linguagem

acadêmica.

•  E
as
outras
linguagens
que

conhecemos?

Quais
são
as
linguagens
pop?

•  Dados
reMrados
de

www.tiobe.com
– Java:
18.71%

– C:
16.89%

– PHP:
10.39%

•  Google
code:
C,
Java,
C++,

PHP

•  Craigslist:
PHP,
C,
SQL

•  Que
outras
medidas?

Alguém
aí
fala
Javanês?

•  De
acordo
com
muitos
critérios,
Java
é
a
a

linguagem
mais
popular.

•  Para
que
serve
Java?

•  Como
essa
linguagem
surgiu?

•  O
que
ela
tem
de
mais?

Um
exemplo
de
javanês:

public class Fact {
public static void main(String a[]) {
int n = 5;
int fact = 1;
while (n > 1) {
fact *= n;
n--;
}
System.out.println(fact);
}
}
é
A,
é
B,
é
C…

•  C
surgiu
em
1972,
e
foi,
durante
muitos

anos,
a
linguagem
de
programação
mais

popular.

•  Porque
C
tem
este
nome?

•  O
que
a
gente
faz
com
C?

•  Porque
C
foi
tão
popular?

•  Quais
os
problemas
com
C?

•  C
teve
grande
influência…

Falando
em
C…

int main() {
int n = 5;
int fact = 1;
while (n > 1) {
fact *= n;
n--;
}
printf("%dn", fact);
}
•  Alguém
já
viu
isto
antes?

C
teve
grande
influência…

int n = 5;
int fact = 1;
while (n > 1) {
fact *= n;
n--;
}
int n = 5;
int fact = 1;
while (n > 1) {
fact *= n;
n--;
}
A
Internet
respira
PHP

•  Alguém
aqui
já
programou
em
PHP?

•  O
que
esse
nome
quer
dizer?

•  Como
deve
ser
uma
linguagem
para

desenvolvimento
web?

Um
exemplo
de
PHPês:

$id = $_GET[”user”];
if ($id == '') {
echo "Invalid user: $id"
} else {
$getuser = $DB->query
(”SELECT * FROM 'table' WHERE id=’$id’”);
echo $getuser;
}
•  Alguém
notou
um
pouquinho
de
C
aí?

•  Qual
o
Mpo
da
variável
$id?

•  Computadores
falam
zero‐um‐nês,
nós

falamos
linguagens
de
programação…
quem

traduz
estas
coisas?

•  E
como
essa
tradução
é
feita?

Compiladores
são
pontes

•  O
primeiro
compilador
foi,

provavelmente,
o
A-0
de

Grace
Hopper
(1949).

•  Linguagens
de

programação
diferentes

possuem
diferentes

compiladores.

•  Mas
o
mesmo
compilador

também
pode
compilar

linguagens
diferentes.

Anatomia
de
um
compilador

Front

End

OMmizador

Back

End

Fortran

COBOL

Lisp

…

ARM

x86

PowerPC

…

Máquinas
Virtuais

•  Uma
máquina
virtual
é
um

hardware
implementado
em

soEware.

•  Porque
isso
é
interessante?

•  Que
linguagens
executam

em
máquinas
virtuais?

•  Ainda
é
necessário
um

tradutor?

Às
vezes,
tudo
é
interpretado

•  Um
interpretador
não
produz
código
de
máquina.

Ao
contrário,
ele
lê
o
código
do
programa
fonte,
e

interpreta
cada
comando
encontrado.

•  Quais
as
vantagens
de
um
interpretador?

•  Quais
linguagens
são

interpretadas?

•  Será
que
há
alguma

linguagem
que

necessariamente
tenha
de

ser
interpretada?

•  Essas
coisas
são
eficiente?

Fazemos
just‐in‐?me

•  Algumas
linguagens
são
compiladas
enquanto

estão
sendo
interpretadas.

– JavaScript,
por
exemplo.

•  E
de
onde
vem
a
eficiência?

•  Será
que
dá
para
fazer

melhor
que
um
compilador

tradicional?

•  Existe
uma
linguagem
de
programação
“mais

poderosa”
que
todas
as
outras?

•  Se
existe,
que
linguagem
é
essa?

•  Mas
como
medir
esse
“poder”?

Fácil
ou
Di[cil

1.  Encontre
a
rede
de
estradas
mais
curta
que

liga
todas
as
cidades
de
Minas
Gerais.

2.  Encontre
a
menor
rota
passando
por
todas
as

cidades,
sem
repeMr.

3.  Dado
um
programa
P
para
























resolver
(2),
verifique
se
a
























primeira
coisa
que
P


































imprime
é
Nova
Era.

Há
que
sermos
humildes

•  A
máquina
de
Turing
é
um
modelo
téorico
que

define
todos
os
problemas
que
são

computáveis.

– Estado,
fita,
leitor,
símbolos,





















instruções.

•  Se
não
há
solução

















































na
Máquina
de


















































Turing,
então
não














































tem
jeito
mesmo...

Linguagens
Turing‐Completas

•  Se
uma
linguagem
é
equivalente
à
Máquina
de

Turing,
então
ela
é
Turing‐Completa.

•  Quase
toda
LP
é
Turing‐Completa.

•  Mas
existem
linguagens
que
não
o
são.
Algum

exemplo?

Brain‐fuc*

Um
arranjo
muito
grande,
contendo
números.

Oito
comandos:

>
move
uma
posição
para
direita

<
move
uma
posição
para
esquerda

+
soma
um
à
posição
corrente
(PC)

‐
subtrai
um
da
PC

.
imprime
conteúdo
da
PC

,
lê
entrada
e
armazena
na
PC

[
vai
para
comando
após
]
se
PC
é
zero

]
volta
para
comando
após
[
se
PC
não
é
zero.

O
que
estes
programas
fazem?

[-]







ou







[ > + < - ]
•  Essas
linguagens
todas
que
a
gente
viu…
Java,

PHP,
C,
Fortran,
COBOL,
Algol,
etc,
etc…
elas

são
muito
parecidas:
variáveis,
loops,

comandos…
Será
que
não
existe
nenhum

outro
paradigma
não?

Linguagens
ImperaMvas
e
DeclaraMvas

•  Linguagens
imperaMvas:

– O
programa
instrui
como
mudar
o
estado
da

máquina.

– Variáveis,
loops,
sequências
de
comandos.

– Efeitos
colaterais.
Existe
função
que
retorna

valores
diferentes
dados
parâmetros
iguais?

•  Linguagens
declaraMvas:

– O
programa
descreve
uma
verdade.

– Ausência
de
efeitos
colaterais.

– Loops
via
chamada
de
funções
recursivas.

SML

•  O
programa
é
um
conjunto
de
funções.

– Programas
são
provas
por
indução.

•  Principais
estruturas
de
dados
são
listas
e

tuplas.

fun sum [] = 0
| sum (h::t) = h + sum t
fun filter [] _ = []
| filter (h::t) f =
if (f h)
then h :: (filter f t)
else (filter f t)
SorMng

fun leq a b = a <= b
fun grt a b = a > b
fun filter _ nil = nil
| filter f (h::t) =
if f h then h :: filter f t else filter f t
fun qsort nil = nil
| qsort (h::t) =
(qsort (filter (grt h) t))
@ [h] @
(qsort (filter (leq h) t))
Prolog

•  O
programa
é
um
conjunto
de
restrições:

– Se
A
é
verdade,
e
AB
é
verdade,
então
B
é

verdade.

parent(kim, holly).
parent(margaret, kim).
parent(margaret, kent).
parent(esther, margaret).
parent(herbert, margaret).
parent(herbert, jean).
bisavo(GGP, GGC) :-
parent(GGP, GP), parent(GP, P), parent(P, GGC).
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(Z, Y), ancestor(X, Z).
•  O
que
produzirá

bisavo(X, Y)?
Um
problema
NP‐completo

sum([],0).
sum([Head|Tail],X) :-
sum(Tail,TailSum),
X is Head + TailSum.
subList([], []).
subList([H|T], [H|R]) :- subList(T, R).
subList([_|T], R) :- subList(T, R).
intSum(L, N, S) :- subList(L, S), sumList(S, N).
Dada
uma
lista
L
de
números
inteiros,
existe
uma

sublista
S
cuja
soma
seja
N?


Mais conteúdo relacionado

PPT
As ferramentas, os percursos e as estratégias de tradução no universo digital...
PDF
Sistemas de Processamento de Linguagem Natural na Prática
PDF
Processamento Automático da Língua Portuguesa: DevInSampa 2011
KEY
Php usar-ou-nao-usar
PPTX
Introdução a Linguagem C
PPT
Referencial cartesiano
PPTX
Trabalho - Matemática (Gráfico Cartesiano)
PPSX
Lógica de Programação
As ferramentas, os percursos e as estratégias de tradução no universo digital...
Sistemas de Processamento de Linguagem Natural na Prática
Processamento Automático da Língua Portuguesa: DevInSampa 2011
Php usar-ou-nao-usar
Introdução a Linguagem C
Referencial cartesiano
Trabalho - Matemática (Gráfico Cartesiano)
Lógica de Programação

Destaque (14)

KEY
Afinal, o que é uma linguagem de programação?
PDF
Tipos de Dados, Variáveis, Constantes
PDF
Aula03 exercicio fluxograma casa
PPT
Planejamento e Controle da Produção
PDF
Lógica de Programação e Algoritmos
DOC
Algoritmos e linguagem pascal
PDF
102773154 exercicios-de-fluxograma
PDF
Lista de exercícios em portugol
PPTX
Algoritmos - Formas de Representação de Algoritmos
PDF
Livro Linguagem C - Completo
PPT
Material de Apoio de Algoritmo e Lógica de Programação
PDF
Lista de exercicios algoritmos resolvida-
PDF
Aula03 conceito de fluxogramas e seqenciamento de açoes
PDF
Coletanea de-exercicios-resolvidos-em-liguagem-c
Afinal, o que é uma linguagem de programação?
Tipos de Dados, Variáveis, Constantes
Aula03 exercicio fluxograma casa
Planejamento e Controle da Produção
Lógica de Programação e Algoritmos
Algoritmos e linguagem pascal
102773154 exercicios-de-fluxograma
Lista de exercícios em portugol
Algoritmos - Formas de Representação de Algoritmos
Livro Linguagem C - Completo
Material de Apoio de Algoritmo e Lógica de Programação
Lista de exercicios algoritmos resolvida-
Aula03 conceito de fluxogramas e seqenciamento de açoes
Coletanea de-exercicios-resolvidos-em-liguagem-c
Anúncio

Semelhante a Linguagem de programação (20)

PDF
Linguagen..
PDF
Linguagens de programação 03-12-09
PDF
Linguagens de programação 03-12-09
PPTX
PPT
Mini Curso de C
PDF
C a linguagem de programação
PPTX
Linguagem C Entendendo a Programação
ODP
Linguagens de programação
PPT
software de sistemas informatico de sistemas
PPT
software tipos.ppt
DOC
Aula de C para Linux
PPTX
Linguagem c
PDF
Linguagens de Programação, introdução dos paradigmas
ODP
Linguagem de Programação
PPTX
aprenda conceitos Basicos Lógica de Programação C.pptx
PPT
Int. sistemas de informação iii
PPTX
APRENDA Programação Estruturada C P1.pptx
PDF
Linguagem c
PDF
Meu fasciculo
Linguagen..
Linguagens de programação 03-12-09
Linguagens de programação 03-12-09
Mini Curso de C
C a linguagem de programação
Linguagem C Entendendo a Programação
Linguagens de programação
software de sistemas informatico de sistemas
software tipos.ppt
Aula de C para Linux
Linguagem c
Linguagens de Programação, introdução dos paradigmas
Linguagem de Programação
aprenda conceitos Basicos Lógica de Programação C.pptx
Int. sistemas de informação iii
APRENDA Programação Estruturada C P1.pptx
Linguagem c
Meu fasciculo
Anúncio

Último (20)

PDF
Normas, higiene e segurança na soldadura eléctrica
PDF
APRESENTACAO_ NR10 Ferramentas isoladas.pdf
PPTX
Aula 6_Delineamento em Blocos Casualizados_28.09.2020_Mestrado.pptx
PPT
Acidentes de trabalho e esposição riscovdfv
PDF
Material referente a introdução a instr.
PPTX
Os 8 Pilares do TPM Manutenção produtiva total.pptx
PPTX
Aula_Semicondutortes_Diodos e LEDs_apresentação
PPTX
Princípios Básicos de segurança em eletricidade
PPTX
2 - introducao a ciencia do solo para o curso de agronomia.ppt
PDF
aula 5 - Medidores de grandezas elétricas.pdf
PPT
O gênero resumo O gênero resumo O gênero
PPTX
Mecânico de Máquinas Industriais .pptx
PDF
Beige Dark Grey Vintage Victorian Project History Presentation_20250221_19084...
PDF
Treinamento Apostila eletrodos revestidos_ok
PPTX
Introdução à Agronomia - Profissionais x Desafios de Mercado x Agricultura
PPTX
TR_Seguranca em Elevadores de Obras.pptx
PDF
Ideal para decisões que exigem dados recentes e confiáveis.
PPTX
erro balela so para baixar naã perca tempo.pptx
PDF
Aula 2 Normas Regulamentadoras (PARTE I).pdf
PDF
ANTENA DIPOLO DOBRADO NOTA AULA 164 PROFESSOR ANGELO ANTONIO LEITHOLD.pdf
Normas, higiene e segurança na soldadura eléctrica
APRESENTACAO_ NR10 Ferramentas isoladas.pdf
Aula 6_Delineamento em Blocos Casualizados_28.09.2020_Mestrado.pptx
Acidentes de trabalho e esposição riscovdfv
Material referente a introdução a instr.
Os 8 Pilares do TPM Manutenção produtiva total.pptx
Aula_Semicondutortes_Diodos e LEDs_apresentação
Princípios Básicos de segurança em eletricidade
2 - introducao a ciencia do solo para o curso de agronomia.ppt
aula 5 - Medidores de grandezas elétricas.pdf
O gênero resumo O gênero resumo O gênero
Mecânico de Máquinas Industriais .pptx
Beige Dark Grey Vintage Victorian Project History Presentation_20250221_19084...
Treinamento Apostila eletrodos revestidos_ok
Introdução à Agronomia - Profissionais x Desafios de Mercado x Agricultura
TR_Seguranca em Elevadores de Obras.pptx
Ideal para decisões que exigem dados recentes e confiáveis.
erro balela so para baixar naã perca tempo.pptx
Aula 2 Normas Regulamentadoras (PARTE I).pdf
ANTENA DIPOLO DOBRADO NOTA AULA 164 PROFESSOR ANGELO ANTONIO LEITHOLD.pdf

Linguagem de programação