Beruflich Dokumente
Kultur Dokumente
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!
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
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.
AevoluodeProlog
Umanovaversoem1973
OprogramadorYnhaaopodepararo backtracking. Otestedeocorrnciaacabousendoeliminado.
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.
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
CPL
BCPL
Maisdescendentes
B
C++
Java
Java
JamesGosling,SunMicrosystems 1991:Oakumalinguagempara aplicaesderede.
ParecidacomC++,pormmenore maissimples. MaissegurafortementeYpada. Maisportvelmquinavirtual.
Em1995foirenomeadaJava,e voltouseparaaweb.
Incorporadaemnavegadores.
Filhodemuitospais
JavanovemsomentedeCPL. Javatambmtem:
Coletadelixo,comoLISP. Concorrncia,comoErlang. Pacotes,comoModula
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.