History pl

Post on 16-Jan-2017

248 views 0 download

Transcript of History pl

AHistóriadasLinguagensdeProgramação

FernandoMagnoQuintãoPereira(apresentaçãoextraídadeslidesde

AdamBrooksWebber)

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

Babilônia

•  Escritacuneiforme:1790BC•  Tábuasdeargilaaindaexistem:– Poemaseestórias

– Contratoseacordos– Astronomia– MatemáYca

NúmerosdaBabilônia

•  Base60.Porque?•  Númerosdepontoflutuante!

1× 601 +10 × 600 = 70

1,10=

ProgramasdaBabilônia

•  Algoritmoseramescritosusandolinguagemnatural.

•  AlgoritmosdescreviamprocedimentosdavidacoYdiana:– Paracalcularovolumedacisterna,seseuraioé2.0esuaalturaé7.0,entãoovolumeé3.1vezes2.0vezes2.0vezes7.0.

•  Nãousavamvariáveis.Númerosserviamparaexemplos.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

Baghdad,780‐850

•  Enquantonaeuropasenhoresfeudaisestavammatandounsaosoutros,umaculturaricaevibrantefloresciaemBaghdad.

•  HaviaumcortesãoematemáYcochamadoAl‐Khorezmi,queescreveuunslivros…

Númerosindo‐arábicos

•  Olivrodosalgoritmos:ooriginalperdeu‐se.•  TraduçãoemlaYm:AlgorthmidenumeroIndorum.

•  Algoritmosparafazercontascomnúmeroshindus.– Base10– Sistemaposicional

•  InfluencioufortementeamatemáYcanaEuropamedieval.

OutrosalgoritmosanYgos

•  Euclides,porvoltadoano300antesdeCristo,descreveuumalgoritmoparacalcularMDC.

•  AlexanderdeVillaDei,1220depoisdeCristo:CantodeAlgorsmo:algoritmosemverso!

•  Claro,nãohaviaummétodoformalparadescreveralgoritmos.Qualquercoisavalia:linguagemnatural,poesiaeatémúsica.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

AugustaAda

•  FilhadeLordByron,umgrandepoetaInglês.

•  1800epouco:mulheresnãorecebiameducaçãoformal.MatemáYcaeratabu.

•  AdatomouaulasparYcularesdematemáYca.

•  Casou‐seaos19,tornando‐seLadyLovelace,etevetrêsfilhos.– Nenhumanovidade…

CharlesBabbage

•  MatemáYcoInglês•  Projetoucomputadoresmecânicos– Amáquinadiferencial(nãochegouaserterminadaporBabbage)

– MáquinaanalíYca(nuncaconstruída)

IwishtoGodthesecalculaAonshadbeenexecutedbysteam!

CharlesBabbage,1821

AdaandCharles

•  AdaLovelaceeCharlesBabbageficaramamigosetrabalharamjuntosemmuitasdasidéiasdeBabbage.

•  AdadescreveuumalgoritmoparacalcularnúmerosdeBernoulliusandoamáquinadiferencial.– Nãochegouasertestado,afinalamáquinanãoexisYadefato.

– Maséconsideradooprimeiroprograma.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

KonradZuse

•  1936:construiuumcomputadormecânico,nasaladeestardeseuspais,emBerlim:oZ1

•  Eraumábacomecânico,controladoporpinosdemetalecorreias.

•  Programávelviafitasperfuradas.•  Númerosdepontoflutuante,embinário,comexpoenteexplícito.

Plankalkul

•  Em1945‐46,Zusecompletouoprojetodeumalinguagemdeprogramação:Plankalkul.

•  Váriasidéiasrevolucionárias:– Atribuição,expressõesariYméYcas,subscritos.– TipoprimiYvo:bit.Tiposderivados:inteiro,real,arranjos,etc.

– Execuçãocondicional,laços,subroYnas.– Asserções!

•  Zusecriouváriosprogramasexemplo:ordenação,buscaemgrafos,análisesintáYca,etc.

ExemploP1 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

•  Nãochegouaterinfluênciaemoutraslinguagens.Porque?

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

Programardavaumtrabalho…

•  Programareratrocarfiosdelugar.– Namelhordashipóteses,furarcartões.

•  ÉdiscilentenderquãodiscileraestaaYvidade.

•  OsprogramasdeAEDsIeramtrabalhodesemanas,uns60anosatrás.

WishList

•  Númerosdepontoflutuante:programadoresYnhamdelembrarqualaposiçãodoponto.

•  EndereçorelaYvo:programadoresYnhadesaberoendereçodassub‐roYnasparacomputarendereçosabsolutos.

•  Subscritosparaarranjos.•  Algomaissimplesdelembrarqueinstruçõesoctais.

Asprimeirasferramentas

•  Montadores•  CompiladoresprimiYvos:– Shortcode,JohnMauchly,1949

– A0,A1,A2,GraceHopper,1951‐53.CompiladoresparaexpressõesaritméYcas.

– SpeedCoding,JohnBackus,1954•  Eraprecisopoupartempodosprogramadores.

Fortran

•  Aprimeiralinguagemdeprogramaçãoasetornarbastantepopular.

•  OprojetofoilideradoporJohnBackus,naIBM– Eraparaterlevadoseismeses;levoudoisanos.

– Diminuiuoserrosdeprogramação– Possuiaumcompiladorquegeravacódigodequalidade.

CompilaçãoemSeparado

•  Inicialmentesemcompilaçãomodular.•  Porém,programascomeçaramacrescer.– CompilarprogramasgrandeseraimpráYco.

•  ComFortranIIveioapossibilidadedecompilarmódulos,enãoprogramasinteiros.

Idon'tknowwhatthelanguageoftheyear2000willlooklike,butIknowitwillbecalledFORTRAN.

C.A.R.Hoare

Fortranfezescola

•  Usadaatéhoje:previsãodetempo,dinâmicadefluídos,etc.– Benchmarks:SPECCFP2006.

•  OcompiladoroYmizante:– Análiseléxica– Parsing– Alocaçãoderegistradores

JohnBackus

•  Fortran,Algol58e60,BNFeFP(umalinguagempuramentefuncional)

Mypointisthis:whileitwasperhapsnaturalandinevitablethatlanguageslikeFORTRANanditssuccessorsshouldhavedevelopedoutoftheconceptofthevonNeumanncomputerastheydid,thefactthatsuchlanguageshavedominatedourthinkingfortwentyyearsisunfortunate.Itisunfortunatebecausetheirlong‐standingfamiliaritywillmakeithardforustounderstandandadoptnewprogrammingstyleswhichonedaywillofferfargreaterintellectualandcomputaYonpower.

JohnBackus,1978

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

LISP

•  Em1956aconteceuumaconferênciadeIAemDartmouth:McCarthy,Minksy,Newell,Simon.

•  Newell,ShaweSimonintroduziramLogicTheorist,umprogramaderacioncínioescritoemIPL(InformaYonProcessingLanguage).

•  IPLYnhasuportealistasencadeadas,echamouaatençãodeMcCarthy.

•  SurgiaLISP,aprimeiralinguagemfuncional.

UmalinguagemparaIA

•  JohnMcCarthyeraumprofessornoMIT,trabalhandocomIA.

•  EleYnhaumalistadedesejos:– Expressõescondicionais– Recursão– Funçõesdealtaordem(comomap)– Coletordelixo.

•  Fortrannãoservia…

AsintaxedeLISP

•  Umprogramaéumalista,representandoumaAST:(+a(*bc))

•  McCarthyescreveuumafunçãoevalparainterpretaraAST.– AASTacabouvirandoapróprialinguagem.

•  Estafunçãoevalfoiescritaamão,usandolinguagemassembly.

AevoluçãodeLISP

•  LISPépossivelmentealinguagemmaispopularparaIA.

•  Atéporvoltade1980haviamuitosdialetos:– CadagrupodepesquisaemIAYnhaseupróprioLISP.– HaviainclusivecomputadoresqueforamdesenvolvidossomenteparaexecutarLISP.

•  Hojeháumacertapadronização:– CommonLISP:alinguagemebibliotecas.

– Scheme:umdialetomaissimples,ensinadoemescolas.

AinfluênciadeLISP

•  LISPéasegundalinguagemdeprogramaçãoaindaemuso.

•  Idéiascomoexpressõescondicionaiserecursãosãoamplamenteadotadashoje.

•  Muitaslinguagensfuncionaissurgiram.

•  Acoletadelixoétambémmuitopopular.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

Algol

•  Em1957aslinguagensdeprogramaçãoestavamsurgindoaosmontes.–  IndústriasYnhamseuspadrões.– UniversidadesYnhamseuspadrões.– Haviamuitospadrões,enenhumapadronização.

•  Algolsurgiuparaacabarcomisto.– Universal,independentedemáquina.

•  Umcomitêinternacionalfoicriadoem1958,paraestabeleceroprojeto.

MuitosAlgols(!)

•  Nofinaldascontas,trêsprojetos:Algol58,Algol60eAlgol68.

•  Oscomitêsforamficandocadavezmaioresemaisestrelados.

Alongaherança

•  Quasetodalinguagemquesurgiudepoisde1958usaidéiasdeAlgol:–  Blocosdelimitadores.–  Estruturaléxicadeformatolivre.–  SintaxedefinidaviaBNF–  Escopodeblocoparavariáveislocais–  TipagemestáYcacomanotaçõesdeYpo–  If‐then‐else’saninhados–  Chamadaporvalor–  Recursãoeexpressõescondicionais–  Alocaçãodinâmicadememória.–  Procedimentosdeprimeiraclasse.–  Operadoresdefinidospelousuário.

Polêmicas

•  Asprimeiraslinguagensusavamrótulosego‐to’sparacriardesviosdefluxo.

•  Algolesimilaresvieramcomumanovaproposta,baseadaemestruturasdecontrole.

•  Houvemuitapolêmica.

•  Em1968,EdsgarDijkstraescreveuumarYgomuitofamoso:“Gotostatementconsideredharmful”.

AProgramaçãoEstruturada

•  Aprogramaçãobaseadaemestruturasdecontrole,emvezderótulos,échamadaprogramaçãoestruturada.

•  Muitosprogramadoresachavamdiscilprogramarsemgo‐tos.

•  Hojeapolêmicapareceterchegadoaofinal– Algumaslinguagens,comoJava,nempossuemgo‐to’s

– Emesmoemlinguagensondego‐to’sexistem,osprogramadoresraramenteosusam.

•  EstapolêmicatodasurgiucomAlgol

Ortogonalidade

•  OprojetodeAlgoltentavaaomáximoevitarcasosespeciais:– Sintaxeindependendedaformadosprogramas– Eliminaçãodelimitesarbitrários:nomespodemterqualquertamanha,arranjospodemterqualquernúmerodedimensões,etc.

– Ortogonalidade:conceitospodemsercombinadosdequalquerforma.Ex.:declaraçãodeparâmetros=declaraçãodevariáveis,arranjosdequalquerYpoprimiYvo,registroscomquaisquercampos,etc.

ExemplodeOrtogonalidade

•  Cadacombinaçãoproibidaéumcasoespecial,queprecisaserlembradopeloprogramador.

•  EmAlgol68todasascombinaçõesacimasãopossíveis.

•  PoucaslinguagensmodernaslevamortogonalidadetãoasérioquantoAlgol.

Integers Arrays Procedures

Passar como parâmetro x x x

Armazenar em variável x x x

Armazenar em arranjo x x x

Retornar de uma função x x x

Másno�cias

•  Algolnuncafoitãousadaquantoseesperaria.– Algol58deuorigemaJovial.

– Algol60foiusadacomopadrãodepublicaçãodealgoritmos.

•  Razõesdoinsucesso:– Oprojetonegligenciouentrada/saída.– Alinguagemeraconsideradacomplicada.– Algunserros:passagempornome(!)

– NãohaviasuportecoorporaYvoougovernamental.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

HaviaSimula…

•  HaviaunsnaviosentrandonoportodaNoruega.

•  KristenNyggardandOle‐JohanDahlYnhamdesimularestesnavios.

•  SimulaI:umavariantedeAlgol,comextensõesparafacilitarsimulações:aviõesnoaeroporto,clientesnobanco,etc.

•  Simula67:umalinguagemdepropósitogeralcomclasses,objetoseherança.

SmallTalk

•  AlanKay,Xerox,1972•  SmalltalkfoiinspiradaporSimula,Sketchpad,Logo,biologiacelular,etc.

•  Smalltalkémaisorientadaporobjetosqueamaiorpartedeseusdescendentes.

•  Tudosãoobjetos:variáveis,constantes,classes,registrosdeaYvação,etc.

•  Todacomputaçãoéfeitaporobjetosquerecebemeemitemmensagems:1+2=1.sum(2)

Filosofiadeprojeto

•  Criealinguagememtornodeidéiassimples:– Listas,recursão,eval:LISP– Objetos,trocademensagens:Smalltalk–  Inferênciaeunificação:Prolog

•  Benescios:– Aimplementaçãoinicialésimples

– Éfácilmodificaralinguagemdepois

– Acurvadeaprendizadoépequena.

AInfluênciadeSmalltalk

•  JuntamentecomSimula,Smalltalkinfluenciouumageraçãodelinguagensorientadasporobjetos.

•  Smalltalkaindaéusada.

•  MuitaslinguagensOOacabaramenfaYzandoaeficiênciadecompilação.– TipagemestáYca(smalltalkédinâmica)– TiposprimiYvosquenãosãoobjetos.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

Prolog

•  Em1965AlanRobinsonestavatrabalhandoemumprovadordeteoremas.– Provaseramencontradasviaunificação.

•  Em1971(Edinburgh)RobertKowalkidesenvolveutécnicasderesoluçãomaiseficientes.

•  AlainColmerauerePhilippeRousselinventaramPrologem1972.– PrologerapartedeumprojetoemIA(Marseilles,França),baseadoemdeduçõeslógias.

AevoluçãodeProlog

•  Umanovaversãoem1973– OprogramadorYnhaaopçãodepararobacktracking.

– Otestedeocorrênciaacabousendoeliminado.

•  Davidwarreninventouumcompiladoreficienteem1977,baseadonasMáquinasAbstratasdewarren.

•  Estastécnciasdecompilaçãoacabaramsendousadasemoutraslinguagens:SmalltalkeML,porexemplo.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

ML

•  Provadoresdeteoremaestavamnamoda.

•  RobinMilner,Edingurgh,1974•  LCF:umaferramentaparadesenvolveraconstruçãodeprovasformaisdeteoremas.

•  MLfoiprojetadacomoalinguagemusadaemLCFparaescreveraxiomaseteoremas.

•  Tipagemforte,polimorfismoparamétricoeinferênciadeYposjáestavamnoprojeto.

SemânYcaFormal

•  AdefiniçãodeMLincluisuasemânYcaformal– SemânYcanatural.

•  Emgeral,alinguagemapareceantesdesuasemânYcaforma.– EmMLfoiocontrário.

•  Foiassimporque,afimdeconfiarnasprovasdeLCF,eraprecisotercertezanacorretudedeML.

AevoluçãodeML

•  Em1980LucaCardelliimplementouumcompiladoreficienteparaML.

•  Em1983foipublicadoopadrãodeML.•  Novasconstruções:casamentodepadrões,módulos,registros,tratamentodeexceções.

•  Dialetos:– StandardML(aversãoqueusamos)– LazyML:MLcomavaliaçãopreguiçosa– Caml:Umdialetocriadoantesdaadiçãodemódulos– Ocaml:Camlcomorientaçãoporobjetos.

•  Pré‐históriadaslinguagensdeprogramação– ProgramadoresdaBabilônia.– MohammedAl‐Khorezmi– AugustaAda,CondessadeLovelace

•  Asprimeiraslinguagensdeprogramação– Plankalkul– Fortran– Lisp– Algol– Smalltalk

•  Aslinguagensqueestudamosnestecurso– Prolog– ML–  Java

OsdescendentesdeJava

Algol60

CPL

BCPL

B

“BasicCPL.”CPLsimplificada.SemApos:dadossãopalavrasdemáquina.Introduziuanotaçãocomumdearranjos:A[i]echavesparablocos.MarAnRichards(astudentofStrachey),1967

UmalinguagemaindamaiorqueAlgol,comconstrutosparaprocessamentodedadosdenegócios.ChristopherStracheyetal.1962‐66

UmalinguagemaindamaissimplesqueBCPL.FoiusadanosprimeirossistemasUNIX.Re‐introduziuasatribuiçõescompostas:(a+=b),vistasemAlgol68.KenThompson,1969

Maisdescendentes

B

C

C++

Java

C++eraoriginalmenteumpreprocessadordeCqueincluianalinguagemorientaçãoporobjetos:“C++=CcomClasses”.Trouxedynamicdispatch,sobrecargadeoperadoresefunções,polimorfismoparamétrico,tratamentodeexceções.

BjarneStroustrup,1984

ExtensãodeB(originalmentechamada“NB”).OobjeAvoeraaproveitarmelhorohardware(PDP‐11).SistemadeApos,pre‐processador,bibliotecasdeentrada/saída,etc.Foiusadaparare‐implementarokerneldoUNIXeváriasaplicaçõesdestesistemaoperacional.

DennisRitchieet.al.,1971‐1973

Java

•  JamesGosling,SunMicrosystems•  1991:Oak–umalinguagemparaaplicaçõesderede.– ParecidacomC++,porémmenoremaissimples.

– Maissegura–fortementeYpada.– Maisportável–máquinavirtual.

•  Em1995foirenomeadaJava,evoltou‐separaaweb.–  Incorporadaemnavegadores.

Filhodemuitospais

•  JavanãovemsomentedeCPL.•  Javatambémtem:– Coletadelixo,comoLISP.

– Concorrência,comoErlang.– Pacotes,comoModula

•  Masjavanãotemnadanovo.SeuobjeYvoéserumalinguagemdeprodução,nãoumalinguagemdepesquisa.

Acalçadadafama

•  MuitospioneirosdaslinguagensdeprogramaçãoganharamPrêmiosTuring:– AlanPerlis,JohnMcCarthy,EdsgerDijkstra,DonaldKnuth,DanaSco�,JohnBackus,RobertFloy,DennethIverson,C.A.R.Hoare,DennisRitchie,NickausWirth,JohnCocke,RobinMilner,KristenNyggard,Ole‐JohanDahl

•  Foiestagentequepopularizoucoisasquehojesãoóbvias:–  Variáveislocaiscomescopodebloco.

–  Programaçãoestruturada.

Eofuturo?

•  Seráqueaindaháespaçoparamaisevoluçãoentreaslinguagensdeprogramação?

•  Talveztodasasdescobertasimportantesjáforamfeitas,eaevoluçãoagoraserámuitomaislenta.

•  OutalvezaindateremosoprazerdeassisYrosurgimentodenovasidéias,hojedesconhecidas,masquesetornaramóbviasparatodoomundo.