Sie sind auf Seite 1von 59

AHistriadasLinguagensde Programao

FernandoMagnoQuintoPereira (apresentaoextradadeslidesde AdamBrooksWebber)

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

Babilnia
Escritacuneiforme:1790BC Tbuasdeargilaaindaexistem:
Poemaseestrias Contratoseacordos Astronomia MatemYca

NmerosdaBabilnia
Base60.Porque? Nmerosdepontoutuante!

1 601 + 10 60 0 = 70
1,10=

ProgramasdaBabilnia
Algoritmoseramescritosusandolinguagem natural. Algoritmosdescreviamprocedimentosdavida coYdiana:
Paracalcularovolumedacisterna,seseuraio 2.0esuaaltura7.0,entoovolume3.1vezes 2.0vezes2.0vezes7.0.

Nousavamvariveis.Nmerosserviampara exemplos.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

Baghdad,780850
Enquantonaeuropa senhoresfeudaisestavam matandounsaosoutros, umaculturaricaevibrante oresciaemBaghdad. Haviaumcortesoe matemYcochamadoAl Khorezmi,queescreveuuns livros

Nmerosindoarbicos
Olivrodosalgoritmos:ooriginalperdeuse. TraduoemlaYm:Algorthmidenumero Indorum. Algoritmosparafazercontascomnmeros hindus.
Base10 Sistemaposicional

InuencioufortementeamatemYcana Europamedieval.

OutrosalgoritmosanYgos
Euclides,porvoltadoano300antesdeCristo, descreveuumalgoritmoparacalcularMDC. AlexanderdeVillaDei,1220depoisdeCristo: CantodeAlgorsmo:algoritmosemverso! Claro,nohaviaummtodoformalpara descreveralgoritmos.Qualquercoisavalia: linguagemnatural,poesiaeatmsica.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

AugustaAda
FilhadeLordByron,umgrande poetaIngls. 1800epouco:mulheresno recebiameducaoformal. MatemYcaeratabu. AdatomouaulasparYcularesde matemYca. Casouseaos19,tornandose LadyLovelace,etevetrslhos.
Nenhumanovidade

CharlesBabbage
MatemYcoIngls Projetoucomputadores mecnicos
Amquinadiferencial(no chegouaserterminadapor Babbage) MquinaanalYca(nunca construda)
IwishtoGodthesecalculaAonshadbeenexecutedbysteam! CharlesBabbage,1821

AdaandCharles
AdaLovelaceeCharlesBabbagecaram amigosetrabalharamjuntosemmuitasdas idiasdeBabbage. Adadescreveuumalgoritmoparacalcular nmerosdeBernoulliusandoamquina diferencial.
Nochegouasertestado,analamquinano exisYadefato. Masconsideradooprimeiroprograma.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

KonradZuse
1936:construiuum computadormecnico,nasala deestardeseuspais,em Berlim:oZ1 Eraumbacomecnico, controladoporpinosdemetal ecorreias. Programvelviatasperfuradas. Nmerosdepontoutuante,embinrio,com expoenteexplcito.

Plankalkul
Em194546,Zusecompletouoprojetode umalinguagemdeprogramao:Plankalkul. Vriasidiasrevolucionrias:
Atribuio,expressesariYmYcas,subscritos. TipoprimiYvo:bit.Tiposderivados:inteiro,real, arranjos,etc. Execuocondicional,laos,subroYnas. Asseres!

Zusecriouvriosprogramasexemplo: ordenao,buscaemgrafos,anlisesintYca, etc.

Exemplo
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

Nochegouaterinunciaemoutras linguagens.Porque?

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

Programardavaumtrabalho
OsprogramasdeAEDsIeramtrabalhode semanas,uns60anosatrs. Programareratrocarosde lugar.
Namelhordashipteses, furarcartes.

discilentenderquodiscil eraestaaYvidade.

WishList
Nmerosdepontoutuante:programadores Ynhamdelembrarqualaposiodoponto. EndereorelaYvo:programadoresYnhade saberoendereodassubroYnaspara computarendereosabsolutos. Subscritosparaarranjos. Algomaissimplesdelembrarqueinstrues octais.

Asprimeirasferramentas
Montadores CompiladoresprimiYvos:
Shortcode,JohnMauchly,1949 A0,A1,A2,GraceHopper,195153.Compiladores paraexpressesaritmYcas. SpeedCoding,JohnBackus,1954

Eraprecisopoupartempodosprogramadores.

Fortran
Aprimeiralinguagemde programaoasetornarbastante popular. OprojetofoilideradoporJohn Backus,naIBM
Eraparaterlevadoseismeses;levou doisanos. Diminuiuoserrosdeprogramao Possuiaumcompiladorquegerava cdigodequalidade.

CompilaoemSeparado
Inicialmentesemcompilaomodular. Porm,programascomearamacrescer.
CompilarprogramasgrandeseraimprYco.

ComFortranIIveioapossibilidadede compilarmdulos,enoprogramasinteiros.
Idon'tknowwhatthelanguageoftheyear2000will looklike,butIknowitwillbecalledFORTRAN. C.A.R.Hoare

Fortranfezescola
Usadaathoje:previsodetempo,dinmica deudos,etc.
Benchmarks:SPECCFP2006.

OcompiladoroYmizante:
Anliselxica Parsing Alocaoderegistradores

JohnBackus
Fortran,Algol58e60,BNFeFP (umalinguagempuramente funcional)
Mypointisthis:whileitwasperhapsnaturalandinevitablethat languageslikeFORTRANanditssuccessorsshouldhavedeveloped outoftheconceptofthevonNeumanncomputerastheydid,the factthatsuchlanguageshavedominatedourthinkingfortwenty yearsisunfortunate.Itisunfortunatebecausetheirlongstanding familiaritywillmakeithardforustounderstandandadoptnew programmingstyleswhichonedaywilloerfargreaterintellectual andcomputaYonpower. JohnBackus,1978

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

LISP
Em1956aconteceuumaconfernciadeIAem Dartmouth:McCarthy,Minksy,Newell,Simon. Newell,ShaweSimonintroduziramLogic Theorist,umprogramaderacioncnioescrito emIPL(InformaYonProcessingLanguage). IPLYnhasuportealistasencadeadas,e chamouaatenodeMcCarthy. SurgiaLISP,aprimeiralinguagemfuncional.

UmalinguagemparaIA
JohnMcCarthyeraumprofessornoMIT, trabalhandocomIA. EleYnhaumalistadedesejos:
Expressescondicionais Recurso Funesdealtaordem(comomap) Coletordelixo.

Fortrannoservia

AsintaxedeLISP
Umprogramaumalista,representandouma AST:(+a(*bc)) McCarthyescreveuumafunoevalpara interpretaraAST.
AASTacabouvirandoaprprialinguagem.

Estafunoevalfoiescritaamo,usando linguagemassembly.

AevoluodeLISP
LISPpossivelmentealinguagemmaispopular paraIA. Atporvoltade1980haviamuitosdialetos:
CadagrupodepesquisaemIAYnhaseuprprioLISP. Haviainclusivecomputadoresqueforam desenvolvidossomenteparaexecutarLISP.

Hojehumacertapadronizao:
CommonLISP:alinguagemebibliotecas. Scheme:umdialetomaissimples,ensinadoem escolas.

AinunciadeLISP
LISPasegundalinguagemdeprogramao aindaemuso. Idiascomoexpressescondicionaise recursosoamplamenteadotadashoje. Muitaslinguagensfuncionaissurgiram. Acoletadelixotambmmuitopopular.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

Algol
Em1957aslinguagensdeprogramao estavamsurgindoaosmontes.
IndstriasYnhamseuspadres. UniversidadesYnhamseuspadres. Haviamuitospadres,enenhumapadronizao.

Algolsurgiuparaacabarcomisto.
Universal,independentedemquina.

Umcomitinternacionalfoicriadoem1958, paraestabeleceroprojeto.

MuitosAlgols(!)
Nonaldascontas,trsprojetos:Algol58,Algol60e Algol68. Oscomitsforamcandocadavezmaioresemais estrelados.

Alongaherana
Quasetodalinguagemquesurgiudepoisde1958usa idiasdeAlgol:
Blocosdelimitadores. Estruturalxicadeformatolivre. SintaxedenidaviaBNF Escopodeblocoparavariveislocais TipagemestYcacomanotaesdeYpo Ifthenelsesaninhados Chamadaporvalor Recursoeexpressescondicionais Alocaodinmicadememria. Procedimentosdeprimeiraclasse. Operadoresdenidospelousurio.

Polmicas
Asprimeiraslinguagensusavamrtulosego tosparacriardesviosdeuxo. Algolesimilaresvieramcomumanova proposta,baseadaemestruturasdecontrole. Houvemuitapolmica. Em1968,EdsgarDijkstraescreveuumarYgo muitofamoso:Gotostatementconsidered harmful.

AProgramaoEstruturada
Aprogramaobaseadaemestruturasde controle,emvezdertulos,chamada programaoestruturada. Muitosprogramadoresachavamdiscil programarsemgotos. Hojeapolmicapareceterchegadoaonal
Algumaslinguagens,comoJava,nempossuemgo tos Emesmoemlinguagensondegotosexistem,os programadoresraramenteosusam.

EstapolmicatodasurgiucomAlgol

Ortogonalidade
OprojetodeAlgoltentavaaomximoevitar casosespeciais:
Sintaxeindependendedaformadosprogramas Eliminaodelimitesarbitrrios:nomespodemter qualquertamanha,arranjospodemterqualquer nmerodedimenses,etc. Ortogonalidade:conceitospodemsercombinadosde qualquerforma.Ex.:declaraodeparmetros= declaraodevariveis,arranjosdequalquerYpo primiYvo,registroscomquaisquercampos,etc.

ExemplodeOrtogonalidade
Integers Passar como parmetro Armazenar em varivel Armazenar em arranjo Retornar de uma funo x x x x Arrays x x x x Procedures x x x x

Cadacombinaoproibidaumcasoespecial, queprecisaserlembradopeloprogramador. EmAlgol68todasascombinaesacimaso possveis. Poucaslinguagensmodernaslevam ortogonalidadetoasrioquantoAlgol.

Msnocias
Algolnuncafoitousadaquantoseesperaria.
Algol58deuorigemaJovial. Algol60foiusadacomopadrodepublicaode algoritmos.

Razesdoinsucesso:
Oprojetonegligenciouentrada/sada. Alinguagemeraconsideradacomplicada. Algunserros:passagempornome(!) NohaviasuportecoorporaYvoougovernamental.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

HaviaSimula
Haviaunsnaviosentrandonoportoda Noruega. KristenNyggardandOleJohanDahlYnhamde simularestesnavios. SimulaI:umavariantedeAlgol,com extensesparafacilitarsimulaes:aviesno aeroporto,clientesnobanco,etc. Simula67:umalinguagemdepropsitogeral comclasses,objetoseherana.

SmallTalk
AlanKay,Xerox,1972 SmalltalkfoiinspiradaporSimula,Sketchpad, Logo,biologiacelular,etc. Smalltalkmaisorientadaporobjetosquea maiorpartedeseusdescendentes. Tudosoobjetos:variveis,constantes,classes, registrosdeaYvao,etc. Todacomputaofeitaporobjetosque recebemeemitemmensagems:1+2=1.sum(2)

Filosoadeprojeto
Criealinguagememtornodeidiassimples:
Listas,recurso,eval:LISP Objetos,trocademensagens:Smalltalk Infernciaeunicao:Prolog

Benescios:
Aimplementaoinicial simples fcilmodicaralinguagem depois Acurvadeaprendizado pequena.

AInunciadeSmalltalk
JuntamentecomSimula,Smalltalkinuenciou umageraodelinguagensorientadaspor objetos. Smalltalkaindausada. MuitaslinguagensOOacabaramenfaYzandoa ecinciadecompilao.
TipagemestYca(smalltalkdinmica) TiposprimiYvosquenosoobjetos.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

Prolog
Em1965AlanRobinsonestavatrabalhando emumprovadordeteoremas.
Provaseramencontradasviaunicao.

Em1971(Edinburgh)RobertKowalki desenvolveutcnicasderesoluomais ecientes. AlainColmerauerePhilippeRoussel inventaramPrologem1972.


PrologerapartedeumprojetoemIA(Marseilles, Frana),baseadoemdedueslgias.

AevoluodeProlog
Umanovaversoem1973
OprogramadorYnhaaopodepararo backtracking. Otestedeocorrnciaacabousendoeliminado.

Davidwarreninventouumcompilador ecienteem1977,baseadonasMquinas Abstratasdewarren. Estastcnciasdecompilaoacabaramsendo usadasemoutraslinguagens:SmalltalkeML, porexemplo.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

ML
Provadoresdeteoremaestavamna moda. RobinMilner,Edingurgh,1974 LCF:umaferramentapara desenvolveraconstruodeprovas formaisdeteoremas. MLfoiprojetadacomoalinguagem usadaemLCFparaescreveraxiomas eteoremas. Tipagemforte,polimorsmo paramtricoeinfernciadeYposj estavamnoprojeto.

SemnYcaFormal
AdeniodeMLincluisuasemnYcaformal
SemnYcanatural.

Emgeral,alinguagemapareceantesdesua semnYcaforma.
EmMLfoiocontrrio.

Foiassimporque,amdeconarnasprovas deLCF,eraprecisotercertezanacorretudede ML.

AevoluodeML
Em1980LucaCardelliimplementouum compiladorecienteparaML. Em1983foipublicadoopadrodeML. Novasconstrues:casamentodepadres, mdulos,registros,tratamentodeexcees. Dialetos:
StandardML(aversoqueusamos) LazyML:MLcomavaliaopreguiosa Caml:Umdialetocriadoantesdaadiodemdulos Ocaml:Camlcomorientaoporobjetos.

Prhistriadaslinguagensdeprogramao
ProgramadoresdaBabilnia. MohammedAlKhorezmi AugustaAda,CondessadeLovelace

Asprimeiraslinguagensdeprogramao
Plankalkul Fortran Lisp Algol Smalltalk

Aslinguagensqueestudamosnestecurso
Prolog ML Java

OsdescendentesdeJava
Algol60

UmalinguagemaindamaiorqueAlgol,com construtosparaprocessamentodedadosde negcios.ChristopherStracheyetal.196266

CPL

BCPL

BasicCPL.CPLsimplicada.SemApos:dadosso palavrasdemquina.Introduziuanotaocomum dearranjos:A[i]echavesparablocos. MarAnRichards(astudentofStrachey),1967 UmalinguagemaindamaissimplesqueBCPL.Foi usadanosprimeirossistemasUNIX.Reintroduziuas atribuiescompostas:(a+=b),vistasemAlgol68. KenThompson,1969

Maisdescendentes
B

ExtensodeB(originalmentechamadaNB).O objeAvoeraaproveitarmelhorohardware (PDP11).SistemadeApos,preprocessador, bibliotecasdeentrada/sada,etc.Foiusadaparare implementarokerneldoUNIXevriasaplicaes destesistemaoperacional. DennisRitchieet.al.,19711973

C++

Java

C++eraoriginalmenteumpreprocessadordeCque incluianalinguagemorientaoporobjetos:C++= CcomClasses.Trouxedynamicdispatch, sobrecargadeoperadoresefunes,polimorsmo paramtrico,tratamentodeexcees. BjarneStroustrup,1984

Java
JamesGosling,SunMicrosystems 1991:Oakumalinguagempara aplicaesderede.
ParecidacomC++,pormmenore maissimples. MaissegurafortementeYpada. Maisportvelmquinavirtual.

Em1995foirenomeadaJava,e voltouseparaaweb.
Incorporadaemnavegadores.

Filhodemuitospais
JavanovemsomentedeCPL. Javatambmtem:
Coletadelixo,comoLISP. Concorrncia,comoErlang. Pacotes,comoModula

Masjavanotemnadanovo.SeuobjeYvo serumalinguagemdeproduo,nouma linguagemdepesquisa.

Acaladadafama
Muitospioneirosdaslinguagensde programaoganharamPrmiosTuring:
AlanPerlis,JohnMcCarthy,EdsgerDijkstra, DonaldKnuth,DanaSco,JohnBackus,Robert Floy,DennethIverson,C.A.R.Hoare,Dennis Ritchie,NickausWirth,JohnCocke,RobinMilner, KristenNyggard,OleJohanDahl

Foiestagentequepopularizou coisasquehojesobvias:
Variveislocaiscomescopodebloco. Programaoestruturada.

Eofuturo?
Serqueaindahespaoparamaisevoluo entreaslinguagensdeprogramao? Talveztodasasdescobertasimportantesj foramfeitas,eaevoluoagorasermuito maislenta. OutalvezaindateremosoprazerdeassisYro surgimentodenovasidias,hoje desconhecidas,masquesetornarambvias paratodoomundo.

Das könnte Ihnen auch gefallen