You are on page 1of 59

A PlsLrla das Llnguagens de

rogramao
lernando Magno CulnLo erelra
(apresenLao exLralda de slldes de
Adam 8rooks Webber)
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
8abllnla
LscrlLa cunelforme: 1790 8C
1buas de arglla alnda exlsLem:
oemas e esLrlas
ConLraLos e acordos
AsLronomla
MaLemuca
numeros da 8abllnla
8ase 60. orque?
numeros de ponLo uLuanLe!
!
1"60
1
+10 "60
0
= 70
1,10 =
rogramas da 8abllnla
AlgorlLmos eram escrlLos usando llnguagem
naLural.
AlgorlLmos descrevlam procedlmenLos da vlda
coudlana:
loto colcolot o volome Jo clstetoo, se seo tolo
2.0 e soo oltoto 7.0, eoto o volome J.1 vezes
2.0 vezes 2.0 vezes 7.0.
no usavam varlvels. numeros servlam para
exemplos.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
8aghdad, 780-830
LnquanLo na europa
senhores feudals esLavam
maLando uns aos ouLros,
uma culLura rlca e vlbranLe
orescla em 8aghdad.
Pavla um corLeso e
maLemuco chamado Al-
khorezml, que escreveu uns
llvros.
numeros lndo-arblcos
C llvro dos algorlLmos: o orlglnal perdeu-se.
1raduo em laum: Alqottbml Je oometo
loJotom.
AlgorlLmos para fazer conLas com numeros
hlndus.
8ase 10
SlsLema poslclonal
lnuenclou forLemenLe a maLemuca na
Luropa medleval.
CuLros algorlLmos anugos
Luclldes, por volLa do ano 300 anLes de CrlsLo,
descreveu um algorlLmo para calcular MuC.
Alexander de vllla uel, 1220 depols de CrlsLo:
CanLo de Algorsmo: algorlLmos em verso!
Claro, no havla um meLodo formal para
descrever algorlLmos. Cualquer colsa valla:
llnguagem naLural, poesla e aLe muslca.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
AugusLa Ada
lllha de Lord 8yron, um grande
poeLa lngls.
1800 e pouco: mulheres no
receblam educao formal.
MaLemuca era Labu.
Ada Lomou aulas paruculares de
maLemuca.
Casou-se aos 19, Lornando-se
Lady Lovelace, e Leve Lrs lhos.
nenhuma novldade.
Charles 8abbage
MaLemuco lngls
ro[eLou compuLadores
mecnlcos
A mqulna dlferenclal (no
chegou a ser Lermlnada por
8abbage)
Mqulna analluca (nunca
consLrulda)
l wlsb to CoJ tbese colcolouoos boJ beeo execoteJ by steom!
cbotles 8obboqe, 1821
Ada and Charles
Ada Lovelace e Charles 8abbage caram
amlgos e Lrabalharam [unLos em mulLas das
ldelas de 8abbage.
Ada descreveu um algorlLmo para calcular
numeros de 8ernoulll usando a mqulna
dlferenclal.
no chegou a ser LesLado, anal a mqulna no
exlsua de faLo.
Mas e conslderado o prlmelro programa.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
konrad Zuse
1936: consLrulu um
compuLador mecnlco, na sala
de esLar de seus pals, em
8erllm: o Z1
Lra um baco mecnlco,
conLrolado por plnos de meLal
e correlas.
rogramvel vla Las perfuradas.
numeros de ponLo uLuanLe, em blnrlo, com
expoenLe expllclLo.
lankalkul
Lm 1943-46, Zuse compleLou o pro[eLo de
uma llnguagem de programao: lankalkul.
vrlas ldelas revoluclonrlas:
ALrlbulo, expresses arlumeucas, subscrlLos.
1lpo prlmluvo: blL. 1lpos derlvados: lnLelro, real,
arran[os, eLc.
Lxecuo condlclonal, laos, subrounas.
Asseres!
Zuse crlou vrlos programas exemplo:
ordenao, busca em grafos, anllse slnLuca,
eLc.
Lxemplo
P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
max(V0[:8.0],V1[:8.0]) => Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) => R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0]
V0[:8.0] => Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0]
Z1[:8.0] => R0[:8.0]
END
no chegou a Ler lnuncla em ouLras
llnguagens. orque?
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
rogramar dava um Lrabalho.
rogramar era Lrocar os de
lugar.
na melhor das hlpLeses,
furar carLes.
L dlncll enLender quo dlncll
era esLa auvldade.
Cs programas de ALus l eram Lrabalho de
semanas, uns 60 anos aLrs.
wlsb llst
numeros de ponLo uLuanLe: programadores
unham de lembrar qual a poslo do ponLo.
Lndereo relauvo: programadores unha de
saber o endereo das sub-rounas para
compuLar endereos absoluLos.
SubscrlLos para arran[os.
Algo mals slmples de lembrar que lnsLrues
ocLals.
As prlmelras ferramenLas
MonLadores
Complladores prlmluvos:
ShorL code, !ohn Mauchly, 1949
A0, A1, A2, Crace Popper, 1931-33. Complladores
para expresses arlLmeucas.
SpeedCodlng, !ohn 8ackus, 1934
Lra preclso poupar Lempo dos programadores.
lorLran
A prlmelra llnguagem de
programao a se Lornar basLanLe
popular.
C pro[eLo fol llderado por !ohn
8ackus, na l8M
Lra para Ler levado sels meses, levou
dols anos.
ulmlnulu os erros de programao
ossula um compllador que gerava
cdlgo de qualldade.
Compllao em Separado
lnlclalmenLe sem compllao modular.
orem, programas comearam a crescer.
Compllar programas grandes era lmpruco.
Com lorLran ll velo a posslbllldade de
compllar mdulos, e no programas lnLelros.
l don'L know whaL Lhe language of Lhe year 2000 wlll
look llke, buL l know lL wlll be colleJ lC818An.
c.A.k. noote
lorLran fez escola
usada aLe ho[e: prevlso de Lempo, dlnmlca
de uldos, eLc.
8enchmarks: SLC Cl 2006.
C compllador oumlzanLe:
Anllse lexlca
arslng
Alocao de reglsLradores
!ohn 8ackus
lorLran, Algol 38 e 60, 8nl e l
(uma llnguagem puramenLe
funclonal)
My polnL ls Lhls: whlle lL was perhaps naLural and lnevlLable LhaL
languages llke lC818An and lLs successors should have developed
ouL of Lhe concepL of Lhe von neumann compuLer as Lhey dld, Lhe
facL LhaL such languages have domlnaLed our Lhlnklng for LwenLy
years ls unforLunaLe. lL ls unforLunaLe because Lhelr long-sLandlng
famlllarlLy wlll make lL hard for us Lo undersLand and adopL new
programmlng sLyles whlch one day wlll oer far greaLer lnLellecLual
and compuLauon power.
Iobo 8ockos, 1978
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
LlS
Lm 1936 aconLeceu uma conferncla de lA em
uarLmouLh: McCarLhy, Mlnksy, newell, Slmon.
newell, Shaw e Slmon lnLroduzlram loqlc
1beotlst, um programa de raclonclnlo escrlLo
em lL (lnformauon rocesslng Language).
lL unha suporLe a llsLas encadeadas, e
chamou a aLeno de McCarLhy.
Surgla LlS, a prlmelra llnguagem funclonal.
uma llnguagem para lA
!ohn McCarLhy era um professor no Ml1,
Lrabalhando com lA.
Lle unha uma llsLa de dese[os:
Lxpresses condlclonals
8ecurso
lunes de alLa ordem (como map)
ColeLor de llxo.
lorLran no servla.
A slnLaxe de LlS
um programa e uma llsLa, represenLando uma
AS1: (+ a (* b c))
McCarLhy escreveu uma funo eval para
lnLerpreLar a AS1.
A AS1 acabou vlrando a prprla llnguagem.
LsLa funo eval fol escrlLa a mo, usando
llnguagem ossembly.
A evoluo de LlS
LlS e posslvelmenLe a llnguagem mals popular
para lA.
ALe por volLa de 1980 havla mulLos dlaleLos:
Cada grupo de pesqulsa em lA unha seo prprlo LlS.
Pavla lncluslve compuLadores que foram
desenvolvldos somenLe para execuLar LlS.
Po[e h uma cerLa padronlzao:
Common LlS: a llnguagem e blblloLecas.
Scheme: um dlaleLo mals slmples, enslnado em
escolas.
A lnuncla de LlS
LlS e a segunda llnguagem de programao
alnda em uso.
ldelas como expresses condlclonals e
recurso so amplamenLe adoLadas ho[e.
MulLas llnguagens funclonals surglram.
A coleLa de llxo e Lambem mulLo popular.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
Algol
Lm 1937 as llnguagens de programao
esLavam surglndo aos monLes.
lndusLrlas unham seus padres.
unlversldades unham seus padres.
Pavla mulLos padres, e nenhuma padronlzao.
Algol surglu para acabar com lsLo.
unlversal, lndependenLe de mqulna.
um comlL lnLernaclonal fol crlado em 1938,
para esLabelecer o pro[eLo.
MulLos Algols (!)
no nal das conLas, Lrs pro[eLos: Algol 38, Algol 60 e
Algol 68.
Cs comlLs foram cando cada vez malores e mals
esLrelados.
A longa herana
Cuase Loda llnguagem que surglu depols de 1938 usa
ldelas de Algol:
8locos dellmlLadores.
LsLruLura lexlca de formaLo llvre.
SlnLaxe denlda vla 8nl
Lscopo de bloco para varlvels locals
1lpagem esLuca com anoLaes de upo
lf-Lhen-else's anlnhados
Chamada por valor
8ecurso e expresses condlclonals
Alocao dlnmlca de memrla.
rocedlmenLos de prlmelra classe.
Cperadores denldos pelo usurlo.
olmlcas
As prlmelras llnguagens usavam rLulos e go-
Lo's para crlar desvlos de uxo.
Algol e slmllares vleram com uma nova
proposLa, baseada em esLruLuras de conLrole.
Pouve mulLa polmlca.
Lm 1968, Ldsgar ul[ksLra escreveu um arugo
mulLo famoso: Co to stotemeot cooslJeteJ
botmfol.
A rogramao LsLruLurada
A programao baseada em esLruLuras de
conLrole, em vez de rLulos, e chamada
ptoqtomoo esttototoJo.
MulLos programadores achavam dlncll
programar sem go-Los.
Po[e a polmlca parece Ler chegado ao nal
Algumas llnguagens, como !ava, nem possuem go-
Lo's
L mesmo em llnguagens onde go-Lo's exlsLem, os
programadores raramenLe os usam.
LsLa polmlca Loda surglu com Algol !
CrLogonalldade
C pro[eLo de Algol LenLava ao mxlmo evlLar
casos especlals:
SlnLaxe lndependende da forma dos programas
Lllmlnao de llmlLes arblLrrlos: nomes podem Ler
qualquer Lamanha, arran[os podem Ler qualquer
numero de dlmenses, eLc.
CrLogonalldade: concelLos podem ser comblnados de
qualquer forma. Lx.: declarao de parmeLros =
declarao de varlvels, arran[os de qualquer upo
prlmluvo, reglsLros com qualsquer campos, eLc.
Lxemplo de CrLogonalldade
Cada comblnao prolblda e um caso especlal,
que preclsa ser lembrado pelo programador.
Lm Algol 68 Lodas as comblnaes aclma so
posslvels.
oucas llnguagens modernas levam
orLogonalldade Lo a serlo quanLo Algol.
Integers Arrays Procedures
Passar como parmetro x x x
Armazenar em varivel x x x
Armazenar em arranjo x x x
Retornar de uma funo x x x
Ms noclas
Algol nunca fol Lo usada quanLo se esperarla.
Algol 38 deu orlgem a Iovlol.
Algol 60 fol usada como padro de publlcao de
algorlLmos.
8azes do lnsucesso:
C pro[eLo negllgenclou enLradasalda.
A llnguagem era conslderada compllcada.
Alguns erros: passagem por nome (!)
no havla suporLe coorporauvo ou governamenLal.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
Pavla Slmula.
Pavla uns navlos enLrando no porLo da
noruega.
krlsLen nyggard and Cle-!ohan uahl unham de
slmular esLes navlos.
Slmula l: uma varlanLe de Algol, com
exLenses para faclllLar slmulaes: avles no
aeroporLo, cllenLes no banco, eLc.
Slmula 67: uma llnguagem de propslLo geral
com classes, ob[eLos e herana.
Small1alk
Alan kay, erox, 1972
SmallLalk fol lnsplrada por Slmula, SkeLchpad,
Logo, blologla celular, eLc.
SmallLalk e mals orlenLada por ob[eLos que a
malor parLe de seus descendenLes.
1udo so ob[eLos: varlvels, consLanLes, classes,
reglsLros de auvao, eLc.
1oda compuLao e felLa por ob[eLos que
recebem e emlLem mensagems: 1 + 2 = 1.sum(2)
lllosoa de pro[eLo
Crle a llnguagem em Lorno de ldelas slmples:
LlsLas, recurso, eval: LlS
Cb[eLos, Lroca de mensagens: SmallLalk
lnferncla e unlcao: rolog
8enenclos:
A lmplemenLao lnlclal e
slmples
L fcll modlcar a llnguagem
depols
A curva de aprendlzado e
pequena.
A lnuncla de SmallLalk
!unLamenLe com Slmula, SmallLalk lnuenclou
uma gerao de llnguagens orlenLadas por
ob[eLos.
SmallLalk alnda e usada.
MulLas llnguagens CC acabaram enfauzando a
eclncla de compllao.
1lpagem esLuca (smallLalk e dlnmlca)
1lpos prlmluvos que no so ob[eLos.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
rolog
Lm 1963 Alan 8oblnson esLava Lrabalhando
em um provador de Leoremas.
rovas eram enconLradas vla unlcao.
Lm 1971 (Ldlnburgh) 8oberL kowalkl
desenvolveu Lecnlcas de resoluo mals
eclenLes.
Alaln Colmerauer e hlllppe 8oussel
lnvenLaram rolog em 1972.
rolog era parLe de um pro[eLo em lA (Marsellles,
lrana), baseado em dedues lglas.
A evoluo de rolog
uma nova verso em 1973
C programador unha a opo de parar o
bockttockloq.
C LesLe de ocorrncla acabou sendo ellmlnado.
uavld warren lnvenLou um compllador
eclenLe em 1977, baseado nas Mpoloos
Absttotos Je wotteo.
LsLas Lecnclas de compllao acabaram sendo
usadas em ouLras llnguagens: SmallLalk e ML,
por exemplo.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
ML
rovadores de Leorema esLavam na
moda.
8obln Mllner, Ldlngurgh, 1974
LCl: uma ferramenLa para
desenvolver a consLruo de provas
formals de Leoremas.
ML fol pro[eLada como a llnguagem
usada em LCl para escrever axlomas
e Leoremas.
1lpagem forLe, pollmorsmo
parameLrlco e lnferncla de upos [
esLavam no pro[eLo.
Semnuca lormal
A denlo de ML lnclul sua semnuca formal
Semnuca naLural.
Lm geral, a llnguagem aparece anLes de sua
semnuca forma.
Lm ML fol o conLrrlo.
lol asslm porque, a m de conar nas provas
de LCl, era preclso Ler cerLeza na correLude de
ML.
A evoluo de ML
Lm 1980 Luca Cardelll lmplemenLou um
compllador eclenLe para ML.
Lm 1983 fol publlcado o padro de ML.
novas consLrues: casamenLo de padres,
mdulos, reglsLros, LraLamenLo de excees.
ulaleLos:
SLandard ML (a verso que usamos)
Lazy ML: ML com avallao pregulosa
Caml: um dlaleLo crlado anLes da adlo de mdulos
Ccaml: Caml com orlenLao por ob[eLos.
re-hlsLrla das llnguagens de programao
rogramadores da 8abllnla.
Mohammed Al-khorezml
AugusLa Ada, Condessa de Lovelace
As prlmelras llnguagens de programao
lankalkul
lorLran
Llsp
Algol
SmallLalk
As llnguagens que esLudamos nesLe curso
rolog
ML
!ava
Cs descendenLes de !ava
Algol 60
CL
8CL
8
8oslc cll. cll slmpllfcoJo. 5em upos. JoJos so
polovtos Je mpoloo. lottoJozlo o ootoo comom
Je ottoojos. Ajl] e cboves poto blocos.
Motuo klcbotJs (o stoJeot of 5ttocbey), 1967
umo lloqooqem oloJo molot poe Alqol, com
coosttotos poto ptocessomeoto Je JoJos Je
oeqclos. cbtlstopbet 5ttocbey et ol. 1962-66
umo lloqooqem oloJo mols slmples poe 8cll. lol
osoJo oos ptlmeltos slstemos uNl\. ke-lottoJozlo os
ottlboles compostos. (a+=b), vlstos em Alqol 68.
keo 1bompsoo, 1969
Mals descendenLes
8
C
C++
!ava
c-- eto otlqloolmeote om pteptocessoJot Je c poe
loclolo oo lloqooqem otleotoo pot objetos. c-- =
c com closses. 1tooxe Jyoomlc Jlspotcb,
sobtecotqo Je opetoJotes e fooes, pollmotfsmo
potomttlco, ttotomeoto Je excees.
8jotoe 5ttoosttop, 1984
xteoso Je 8 (otlqloolmeote cbomoJo N8). O
objeuvo eto optoveltot melbot o botJwote
(lul-11). 5lstemo Je upos, pte-ptocessoJot,
blbllotecos Je eottoJo/solJo, etc. lol osoJo poto te-
lmplemeotot o ketoel Jo uNl\ e vtlos opllcoes
Jeste slstemo opetocloool.
ueools kltcble et. ol., 1971-197J
!ava
!ames Cosllng, Sun MlcrosysLems
1991: Cak uma llnguagem para
apllcaes de rede.
areclda com c--, porem menor e
mals slmples.
Mals segura forLemenLe upada.
Mals porLvel mqulna vlrLual.
Lm 1993 fol renomeada !ava, e
volLou-se para a web.
lncorporada em navegadores.
lllho de mulLos pals
!ava no vem somenLe de CL.
!ava Lambem Lem:
ColeLa de llxo, como LlS.
Concorrncla, como Lrlang.
acoLes, como Modula
Mas [ava no Lem nada novo. Seu ob[euvo e
ser uma llnguagem de produo, no uma
llnguagem de pesqulsa.
A calada da fama
MulLos plonelros das llnguagens de
programao ganharam rmlos 1urlng:
Alan erlls, !ohn McCarLhy, Ldsger ul[ksLra,
uonald knuLh, uana Sco, !ohn 8ackus, 8oberL
lloy, uenneLh lverson, C.A.8. Poare, uennls
8lLchle, nlckaus WlrLh, !ohn Cocke, 8obln Mllner,
krlsLen nyggard, Cle-!ohan uahl
lol esLa genLe que popularlzou
colsas que ho[e so bvlas:
varlvels locals com escopo de bloco.
rogramao esLruLurada.
L o fuLuro?
Ser que alnda h espao para mals evoluo
enLre as llnguagens de programao?
1alvez Lodas as descoberLas lmporLanLes [
foram felLas, e a evoluo agora ser mulLo
mals lenLa.
Cu Lalvez alnda Leremos o prazer de asslsur o
surglmenLo de novas ldelas, ho[e
desconhecldas, mas que se Lornaram bvlas
para Lodo o mundo.

You might also like