)ompildo!es 5 TEMA 1 LENGUAJES INTERPRETADOS INTERPRETADOS Tema 1 Le$&"jes i$te!p!etdos 1. I$t+!p!etes
1. INTÉRPRETES
El objetivo de los compildo!es es pode! t!d"ci!# si$ e!!o!es# el c%di&o de ("e p"ed ejec"t! l )PU. El di*e!e$te co$j"$to de i$st!"ccio$es ("e p"ede ejec"t! cd )PU se de$omi$ c%di&o m'("i$. U$ i$t+!p!ete es "$ tipo de t!d"cto! ("e $o &e$e! c%di&o objeto e("ivle$te l c%di&o *"e$te# si$o ("e $li, - ejec"t# "$ "$# ls se$te$cis del p!o&!m *"e$te. U$ i$t+!p!ete si&"e "$ p!oceso ite!tivo e$ el c"l tom cd se$te$ci del p!o&!m *"e$te - l ejec"t sob!e l plt*o!m cd se$te$ci implic "$ ejec"ci%$# e$ cso de e/isti! e!!o!es e$ l se$te$ci# se tie$e ("e $oti*ic!. A"$("e p"ede se! 0til emple! "$ le$&"je i$te!p!etdo e$ l&"$ *se del des!!ollo# los le$&"jes compildos so$ m"co m's !'pidos de ejec"t!. 2"cos e$to!$os i$te&!dos de p!o&!mci%$ ct"les o*!ece$ t$to i$t+!p!etes como compildo!es p! "$ mismo le$&"je de p!o&!mci%$. Esto pe!mite "tili,! el compildo! p! compil! - detect! el m'/imo $0me!o de e!!o!es# - el i$t+!p!ete p! l dep"!ci%$ - ls p!"ebs. U$ ve, el p!o&!m est' cbdo# se llev!' cbo l compilci%$ de*i$itiv p! po$e! l plicci%$ e$ p!od"cci%$. Todv3 Todv3 e/iste ot!o modo de combi$! los compildo!es - los i$t+!p!etes p! &e$e!! "$ $"evo tipo de t!d"cto!# medio cmi$o e$t!e "$ compildo! - "$ i$t+!p!ete4 el i$t+!p!ete p!ecompildo o compildo! i$te!p!ettivo. E$ este tipo de e!!mie$ts# p!ime!o se compil - se &e$e! "$ especie de c%di&o i$te!medio -# -# desp"+s# se ps "$ i$t+!p!ete ("e lo ejec"t sob!e l plt*o!m. L &!$ c$tidd de p!tic"l!iddes ("e se p"ede$ e$co$t!! l o! de impleme$t! el i$t+!p!ete# tles como )PU di*e!e$tes# !est!iccio$es de dispo$ibilidd de memo!i# de memo!i disti$tos p! los dtos - ls 5. LA 267UINA 267 UINA DE PILA P ILAse&me$tos A8STRA)TA i$st!"ccio$es# !("itect"! de los !e&ist!os del sistem# !est!iccio$es de se&"!idd 9como cceso !est!i$&ido l disco:# etc.# p!ovoc$ ("e l l !("itect"! de "$ i$t+!p!ete se m"- depe$die$te de l plt*o!m de ejec"ci%$ - ("e se di*3cil e$co$t!! "$ !("itect"! omo&+$e p! estos i$&e$ios.
5. L m'("i$ de pil bst!ct "$ le$&"je de p!o&!mci%$ c%di&o m'("i$
U$ b"e$ modo de est"di! el *"$cio$mie$to de "$ i$t+!p!ete es "tili,! "$ p!o&!m m"- simple ("e pe!mit i$te!p!et! $otci%$ posto!de$4 l m'("i$ de pil bst!ct. U$ m'("i$ de pil bst!ct# como l de l im&e$# se bs e$ "$ est!"ct"! de pil# "$ memo!i i$depe$die$te p! ls i$st!"ccio$es - los dtos - t!es co$j"$tos de i$st!"ccio$es4 ls !itm+tics# ls de m$ip"lci%$ de l pil ls de co$t!ol de *l"jo. As3# p! clc"l! l e/p!esi%$ 95;<:=># se ejec"t!3$ ls si&"ie$tes i$st!"ccio$es 95<;>=:4 1. Lee el vlo! 5 - lo i$se!t e$ l pil 5. Lee el vlo! < - lo i$se!t e$ l pil
5 ? )ompildo!es 5
@. Lee el op!do! ;# e/t!e los dos p!ime!os vlo!es de l pil# los s"m e i$se!t el !es"ltdo 9: <. Lee el vlo! > - lo i$se!t e$ l pil >. Lee el ope!do! =# - e/t!e los dos p!ime!os vlo!es de l pil# ejec"t l ope!ci%$ e i$se!t el !es"ltdo 9@B:. L m'("i$ bst!ct t!bj co$ $0me!os e$te!os - sopo!t ls i$st!"ccio$es !itm+tics bit"les cd "$o de estos ope!do!es !itm+ticos 9;# C# =# : de*i$e "$ ope!ci%$ ("e se de plic! sob!e los dos p!ime!os vlo!es de l cim de l pil. )"$do l m'("i$ lee "$ ope!do!# e/t!e los dos p!ime!os vlo!es de l pil# plic l ope!ci%$ e i$t!od"ce e$ !es"ltdo e$ l pil. El co$j"$to de i$st!"ccio$es est' *o!mdo po! 1 eleme$tos. E$ bi$!io se p"ede$ codi*ic! "tili,$do > bits# co$ lo ("e se p"ede$ &e$e!! @5 eleme$tos 95 >: po! t$to# e$ "$ codi*icci%$ de > bits# todv3 dispo$d!3mos de 1< posicio$es lib!es p! mpli! el co$j"$to de i$st!"ccio$es. Ddo ("e "$ i$t+!p!ete p! l m'("i$ de pil bst!ct se pod!3 impleme$t! p! m"cs m'("i$s di*e!e$tes# es m"- impo!t$te ("e l especi*icci%$ !ecoj spectos p!opios del !dF!e como el tmo e$ bits de los dtos o el tmo de l memo!i. Es !espo$sbilidd del i$t+!p!ete comptibili,! ests especi*iccio$es co$ el !dF!e espec3*ico sob!e el c"l se ejec"t. Po! ello los i$t+!p!etes p! le$&"jes de p!o&!mci%$ po!tbles e$ di*e!e$tes plt*o!ms tmbi+$ se llm$ máquinas virtuales. Es posible impleme$t! "$ i$t+!p!ete obvi$do l&"$s de e sts c"estio$es si se p!o&!m medi$te "$ le$&"je po!tble como Jv. U$ i$t+!p!ete p!o&!mdo e$ Jv - es po!tble po!("e el mismo le$&"je se&"! "$ mismo compo!tmie$to del c%di&o sob!e disti$ts plt*o!ms4 po! ejemplo# "$ e$t e!o e$ Jv siemp!e te$d!' "$ tmo de @5 bits# se c"l se l m'("i$ sob!e l c"l se ejec"te el p!o&!m.
)ompildo!es 5 ? @
L p"blicci%$ de p'&i$s medi$te sido m"0til d"!$te m"cos TEMA 2 KT2L LENGUAJES DE 2AR)AS os# pe!o s" p!i$cipl vi!t"d# ("e es s" p"blicci%$ po! I$te!$et# se co$vie!te tiempo desp"+s e$ s" p!i$cipl de*ecto# p"es ("i,' $os i$te!es!3 optimi,! p'&i$s p! p$tlls de o!de$do!# pe!o tmbi+$ p! tel+*o$os 1. LA ESPE)IHI)A)IN 2L m%viles# Tema 2 medi$te !civos de vo,# p! dispositivos si$ tecldo o co$ p$tll t'ctil# etc. L Le$&"jes de m!cs *mili pliccio$es 1. Lde especi*icci%$ 2L2L o*!ece v!is ve$tjs e$ s" l"&!4 ?
5. A$li,do!es si$t'cticos de 2L EN @.2L se p"ede esc!ibi! P!ocesdo!es SLT
i$*o!mci%$ est!"ct"!d i$depe$die$te de l
p!ese$tci%$. <. L API JAP ? Los doc"me$tos 2L se p"ede$ soci! i$*o!mci%$ de p!ese$tci%$ ("e p"ede p!tic"l!i,!se p! cd medio de p!ese$tci%$ 9ojs de estilo:. ? Los doc"me$tos 2L se p"ede$ t!$s*o!m! e$ ot!os doc"me$tos 2L o de ot!o tipo. ? Se p"ede$ e/p!es! ope!cio$es - sec"e$cis de i$te!cci%$ complejs# espec3*ics p! com"$iddes de pe!so$s# de$omi$ds vocb"l!ios. Dos de los p!oblems m's impo!t$tes ("e tie$e el lenguaje HTML so$ ("e l i$*o!mci%$ de *o!mto - est!"ct"! est' me,cld - ("e l v!iedd de m$e!s ceptbles de e/p!es! "$ m!c es elevd# - ("e los pe("eos e!!o!es si&"e$ sie$do bie$ i$te!p!etdos po! l m-o!3 de los $ve&do!es de I$te!$et. El p!ime! p!oblem se sol"cio$ co$ ls ojs de estilo e$ cscd 9)SS: ("e podemos plic! si$ p!oblems e$ el le$&"je KT2L ct"l el se&"$do# e$ cmbio# !e("ie!e "$ $"evo le$&"je m's est!icto bsdo e$ 2L4 el KT2L. S"ele se! !ecome$dble dej! tod l i$*o!mci%$ de estilo de "$ sitio Feb completo e$ " doc"me$to p!te# comp!tido po! todos los doc"me$tos KT2L s3 "$ cmbio e$ el doc"me$to de estilo *ect!' i$meditme$te todos los doc"me$tos ("e "se$ ese estilo. Se les llm ojs de estilo e$ cscd o s"pe!p"ests po!("e "$ mismo doc"me$to se le p"ede$ plic! v!ios estilos $tes de se! p!ese$tdo# sie$do el o!de$ de plicci%$ el si&"ie$te4 ? ? ? ? ? ?
Decl!cio$es impo!t$tes del "to!. Decl!cio$es impo!t$tes del lecto!. Decl!cio$es $o!mles del "to!. Decl!cio$es impl3cits 9t!ib"tos KT2L: del "to!. Decl!cio$es $o!mles del lecto!. lo!es po! de*ecto del &e$te de "s"!io 9$ve&do!:.
Ests ojs e$ cscd c!ece$ - evol"cio$$ co$ l Feb# pe!o pes! de ello# el le$&"je KT2L est' limitdo desde el comie$,o p! l !ep!ese$tci%$ de p'&i$s Feb e$ +sts - ot!s m"cs sit"cio$es es $eces!io "$ le$&"je p! !ep!ese$t! dtos est!"ct"!dos4 el 2L. El lenguaje XML 9e/te$sible m!M"p l$&"&e: es el *o!mto "$ive!sl p! doc"me$tos est!"ct"!dos - dtos e$ l Feb. U$ doc"me$to 2L p"ede se! pe!*ectme$te p!ese$tdo e$ l Feb co$ *o!mto t$to de *o!m como de co$te$ido# - dem's "$ pe!so$ o "$ p!o&!m pod!'$ "tom'ticme$te obte$e! dtos del mismo ("e p"ede$ se! de $"evo p!ocesdos. Po! t$to 2L p"ede se!vi! p! representar y transportar información est!"ct"!d como l ("e se p"ede &"!d! e$ "$ bse de dtos# tmbi+$ si!ve p! !ep!ese$t! i$*o!mci%$. El 2L es más restrictivo ("e el KT2L# pe!o se pe!mite ("e di*e!e$tes com"$iddes p"ede$ i$te!cmbi! doc"me$tos siemp!e ("e se po$&$ de c"e!do e$ el $omb!e de los eleme$tos i$cl"i! - l *o!m de o!&$i,!los v!is
< ? )ompildo!es 5
o!&$i,cio$es $ de*i$ido s" p!opio vocb"l!io 9$omb!es de eleme$tos t!ib"tos p!tic"l!es: - co$j"$tos de !est!iccio$es p! co$st!"i! doc"me$tos ceptbles de$t!o de s" com"$idd. Tmbi+$ 2L p"ede cominar elementos o atriutos de*i$idos po! v!is com"$iddes# s3 el mec$ismo de decl!ci%$ de espcios de $omb!es pe!mite soci! "$ p!e*ijo cd espcio de $omb!es o i$cl"so de*i$i! el espcio de $omb!es po! de*ecto p! $o te$e! ("e esc!ibi! co$st$teme$te el p!e*ijo. L *"$ci%$ de los esquemas XML es de*i$i! - !est!i$&i! el co$te$ido est!"ct"! de doc"me$tos 2L e/p!esdo e$ 2L -# po! t$to# s"stit"i! los DTD 9e!e$ci de SG2L: po! es("ems 2L. U$ es("em 2L !es"lt bst$te m's l!&o ("e "$ DTD# pe!o cmbio# l ve!i*icci%$ de los dtos es m's !i&"!os - l e/po!tci%$ e impo!tci%$ de dtos es m's se$cill p! c"l("ie! ("e "se "$ p!ocesdo! de doc"me$tos 2L ("e p!evime$te vlide el doc"me$to co$t! "$ es("em. XHTML es l *o!m"lci%$ de KT2L <.B1 e$ le$&"je 2L 1.B el objetivo es !ed"ci! l complejidd ("e s"po$e p!oces! doc"me$tos KT2L - ("e ce di*3cil i$co!po!! "$ $ve&do! "$ dispositivo de cpcidd !ed"cid. Se t!t de limpi! KT2L# de c!e! "$ $"ev bse p! mod"l!i,! - e/te$de! el le$&"je# de *cilit! ("e $"evos dispositivos p"ed$ $ve&! po! l Feb# pe!o si$ !ompe! co$ KT2L. X!LT es "$ le$&"je p! e/p!es! ojs de estilo "$ doc"me$to ("e desc!ibe c%mo most!! "$ doc"me$to 2L de cie!to tipo. Tie$e @ p!tes4 ? T!$s*o!mcio$es SL4 "$ le$&"je p! t!$s*o!m! doc"me$tos 2L 9!ep!ese$tdos como "$ est!"ct"! de dtos !bo!esce$te:. ? El le$&"je de cmi$os 9Pt:4 "$ le$&"je de e/p!esio$es ("e "s SLT p! ccede! p!tes de "$ doc"me$to 2L o !e*e!e$ci!ls. ? Objetos de *o!mto SL4 U$ vocb"l!io 2L p! e/p!es! el *o!mto de p!ese$tci%$ de "$ doc"me$to# ("e de*i$e objetos - p!opieddes del *o!mto de "$ doc"me$to - s"s compo$e$tes. El le$&"je SL es m"- e/te$so - si&"e evol"cio$$do. U$ $li,do! si$t'ctico de 2L es "$ p!o&!m ("e lee dtos 2L de "$ *"e$te de e$t!d - !eli, el $'lisis l+/ico - si$t'ctico. Si d"!$te el p!oceso de $'lisis se p!od"ce$ e!!o!es# estos p!o&!ms debe$ !eto!$! me$sjes ("e i$dic$ 5. ANALIADORES SINT6)TI)OS DE 2L el e!!o! detectdo - el l"&! do$de se p!od"cido. L m-o!3 de los $li,do!es si$t'cticos 2L tie$e$ dos modos de *"$cio$mie$to4 ? Si$ vlidci%$4 S%lo comp!"eb si el doc"me$to est' bie$ *o!mdo. ? )o$ vlidci%$4 )omp!"eb t$to si el doc"me$to est' bie$ *o!mdo como si es v'lido. Los $li,do!es si$t'cticos 2L est'$ pe$sdos como compo$e$tes de p!ocesmie$to de dtos ("e p"ede$ se! i$te&!dos de$t!o de los p!o&!ms $o tie$e$ m"co se$tido si $o se co$ect$ ot!os compo$e$tes ("e &$ l&o co$ los dtos p!ocesdos. Esto p!ovoc ("e !es"lte m"- impo!t$te dispo$e! de "$ API 9i$te!*, p! p!o&!m! l plicci%$: ("e pe!mit co$ect! *'cilme$te el $li,do! co$ el !esto del p!o&!m. E/iste$ dos de*i$icio$es de API ("e si&"e$# o debe!3$ se&"i! todos los *b!ic$tes de $li,do!es si$t'cticos 2L4 API SA - API DO2. Ests dos Api
)ompildo!es 5 ? >
tie$e$ p!op%sitos - o!3&e$es di*e!e$tes# pe!o co$ ells se p"ede !eli,! c"l("ie! tipo de t!tmie$to sob!e doc"me$tos 2L. La A"# !AX SA es el c!%$imo de Simple API *o! 2L. SA es so*tF!e de lib!e dist!ib"ci%$# totlme$te &!t"ito - co$ c%di&o bie!to. SA lee "$ doc"me$to 2L de m$e! sec"e$cil - lo l!&o del p!oceso de lect"! e*ect0 "$ $'lisis si$t'ctico - &e$e! "$ co$j"$to de eve$tos cd ve, ("e ide$ti*ic l&o si&$i*ictivo. )o$ !especto l t!tmie$to de e!!o!es# SA dese$cde$ eve$tos ("e $oti*ic$ e!!o!es c"$do ide$ti*ic d"!$te el p!oceso de $'lisis# l&"$ ci!c"$st$ci $%ml# como "$ eleme$to ("e $o tie$e eti("et de cie!!e o el vlo! de "$ t!ib"to ("e $o est' e$t!e comills. Todos los m+todos !ecibe$ como p!'met!o l e/cepci%$ SAP!seE/ceptio$. Este objeto co$tie$e el $0me!o de l3$e e$ el ("e se detectdo el p!oblem# el URI del doc"me$to - l i$*o!mci%$ t3pic de tods ls e/cepcio$es jv 9como l desc!ipci%$ del e!!o! - el !st!o de l pil de llmds m+todos. SA &e$e! t!es tipos de e!!o!es4 1. !$i$&s4 7"e co$stit"-e$ m's bie$ $oti*iccio$es de $oml3s o sit"cio$es e/t!s. 5. E!!o!es $o *tles4 7"e so$ e!!o!es ("e $o impide$ ("e el $li,do! p"ed co$ti$"! del$te. @. E!!o!es *tles4 7"e p!ovoc$ ("e el $'lisis deb *i$li,!. T$to los F!$i$&s como los e!!o!es $o *tles s"ele$ est! socidos e!!o!es p!ovocdos po! doc"me$tos $o v'lidos# mie$t!s ("e los e!!o!es *tles $o!mlme$te so$ e!!o!es p!ovocdos po! doc"me$tos ml *o!mdos ("e $o se j"st$ l si$t/is 2L. SA !es"lt m"- 0til p! p!ocesos de b0s("ed de eleme$tos o de cceso i$*o!mci%$ espec3*ic de$t!o del doc"me$to 2L. Es m"- !'pido - $o &st memo!i dem's# c"$do se locli, el eleme$to b"scdo# pe!mite p!! el p!oceso de $'lisis. SA $o pe!mite "$ cceso leto!io "$ doc"me$to 2L# si$o ("e lee el doc"me$to de "$ modo sec"e$cil - v l$,$do co$tecimie$tos mie$t!s d"! este p!oceso de lect"!4 si "$ ve, le3do el doc"me$to se ("isie! volve! ccede! l i$*o!mci%$ de "$ eleme$to dete!mi$do# $o b!3 ot!o !emedio ("e volve! $li,! el doc"me$to desde el p!i$cipio st e$co$t!! el eleme$to e$ c"esti%$. La A"# $%M P! pode! ccede! !'pidme$te - t$ts veces como se ("ie! l i$*o!mci%$ de los eleme$tos del doc"me$to 2L# se!3 $eces!io co$st!"i! "$ !ep!ese$tci%$ e$ memo!i# esto es j"sto lo ("e ce "$ $li,do! DO2. DO2 de*i$e "$ est!"ct"! de '!bol co$ m+todos - p!opieddes p! pode! $ve&! po! l est!"ct"! - obte$e! los dtos lmce$dos. Los $li,do!es si$t'cticos bsdos e$ DO2 !eto!$$ "$ '!bol DO2 ls pliccio$es ("e los "tili,$. E$ cso de p!od"ci!se e!!o!es d"!$te el $'lisis# tmbi+$ i$*o!m$ de ello l plicci%$. U$ $li,do! si$t'ctico bsdo e$ DO2 co$st b'sicme$te de dos p!tes4 el $li,do! p!opime$te dico 9("e se e$c!& de lee! el doc"me$to - c!e! el '!bol DO2: "$ co$j"$to de clses de po-o ("e impleme$t$ l je!!("3 DO2 9- pe!mite$ $ve&! - ccede! l i$*o!mci%$ lmce$d e$ memo!i:.
? )ompildo!es 5
DO2 !e("ie!e ("e se c!&"e el doc"me$to e$te!o e$ memo!i - se lmce$e e$ "$ est!"ct"! de '!bol. Po! est !,%$# $ecesit "$ c$tidd de memo!i p!opo!cio$l l tmo - complejidd del doc"me$to 2L. Tmbi+$ ("e te$e! e$ c"e$t ("e l&"$ de ls ope!cio$es sob!e est!"ct"!s de '!bol so$ c!s - co$llev$ "$ &sto tempo!l impo!t$te. E$ &e$e!l# el "so de DO2 e$ doc"me$tos &!$des $o !es"lt m"!ecome$dble 9lib!os o m$"les so$ poco t!tbles medi$te DO2:. E$ Jv e/iste "$ lte!$tiv DO2 ("e tie$e el p!op%sito de o*!ece! "$ sol"ci%$ de lto !e$dimie$to t$to e$ el $'lisis de doc"me$tos 2L como e$ l poste!io! m$ip"lci%$ de l est!"ct"! DO2 e$ memo!i# l A"# &$%M. Est API es "$ i$icitiv de so*tF!e lib!e ("e co$siste e$ pode! i$te&!! t$ !'pidme$te como se posible todo lo ("e p"ede mejo!! el !e$dimie$to e$ el $'lisis - p!ocesmie$to de l est!"ct"! DO2 ' Los m+todos de l je!!("3 de clses JDO2 so$ m"co ms i$t"itivos - *'ciles de "tili,! e$ Jv ("e los de DO2 - dem's pe!mite co$ect!se co$ ot!os $li,do!es - e*ect"! t!d"ccio$es de Ls !e&ls SLT do$ p!ocesds '!boles JDO2 '!boles DO2. po! p!o&!ms de$omi$dos p!ocesdo!es SLT ("e tie$e$ como e$t!ds "$ doc"me$to 2L - "$ doc"me$to SLT. Los p!ocesdo!es SLT plic$ ls i$st!"ccio$es de*i$ids e$ el doc"me$to SLT sob!e "$ doc"me$to 2L - SLT &e$e!$ como slid "$ '!bol de !es"ltdos ("e se p"ede @. PRO)ESADORES se!ili,! p! co$ve!ti!lo e$ "$ doc"me$to de slid. U$ p!ocesdo! SLT es "$ t!d"cto! co$ l p!tic"l!idd de ("e se le p"ede$ de*i$i!# medi$te "$ le$&"je de t!$s*o!mci%$ 9SLT:# los c!ite!ios de l t!d"cci%$. esto se p"ede !eli,! po!("e l e$t!d 9el doc"me$to 2L: $o es "$ le$&"je de p!o&!mci%$# si$o "$ le$&"je de m!cs. T!$s*o!m! le$&"jes de m!cs co$siste e$ *ilt!! l i$*o!mci%$# !eest!"ct"!!l - *o!mte!l. Po! ot! p!te# es s"mible c!e! "$ le$&"je p! este p!op%sito 9SLT: - "$ i$&e$io 9el p!ocesdo! SLT: cp, de p!oces!lo. E$ cmbio# se!3 m"co m's complejo pl$te'!selo p! le$&"jes de p!o&!mci%$. L !("itect"! i$te!$ de "$ p!ocesdo! SLT es "$ combi$ci%$ de m"cos compo$e$tes ("e - co$ocemos. El doc"me$to 2L - l oj de estilo SLT se c!&$ e$ memo!i "tili,$do "$ $li,do! si$t'ctico 2L bsdo e$ DO2. E$ el cso de l oj de estilo# los $odos !odedos co!!espo$de$ $odos ("e se copi!'$ di!ectme$te l '!bol de !es"ltdos - los $odos !odedos m!cdos co$ "$ c!", co!!espo$de$ $odos ("e co$tie$e$ i$st!"ccio$es p! plic! sob!e "$o o di*e!e$tes $odos de l *"e$te 2L. El *"$cio$mie$to !es"lt m"- simple# se v !eco!!ie$do cd $odo del '!bol DO2 de l oj de estilo4 ? )"$do se e$c"e$t! "$ $odo !odedo# se copi di!ectme$te e$ el '!bol de !es"ltdos. ? )"$do se e$c"e$t! "$ $odo !odedo - m!cdo co$ "$ c!", se p!oces de l m$e! si&"ie$te4 o Se ctiv el i$t+!p!ete pt# ("e se e$c!& de llev! cbo l b"sc solicitd sob!e el '!bol de l *"e$te 2L.
)ompildo!es 5 ? Q
o Se ctiv el i$t+!p!ete de i$st!"ccio$es SLT# ("e plic ls t!$s*o!mcio$es sob!e los eleme$tos ("e le p!opo!cio$ el i$t+!p!ete pt e$ el pso $te!io! - copi los $odos !es"lt$tes e$ el '!bol de !es"ltdos. ? El o"tp"t m$&e! se e$c!& de se!ili,! el '!bol de !es"ltdos e$ "$ !civo. <. L API JAP E$ el o 5BBB el $0me!o de $li,do!es si$t'cticos 2L - de p!ocesdo!es SLT empe,b se! elevdo# m"cos b3$ $cido como i$icitivs de i$vesti&ci%$ de$t!o de emp!ess - "$ive!siddes. A me$"do !es"ltb di*3cil sbe! ("+ *"$cio$liddes - p!estcio$es o*!ec3 cd "$o. S"$ 2ic!os-stems# te$ie$do e$ c"e$t ("e ests e!!mie$ts estb$ todv3 e$ evol"ci%$# e$ l"&! de c!e! s"s p!opis impleme$tcio$es - e$t!! e$ compete$ci co$ ls ("e - b3# c!e% JAP 9Jv Api *o! 2L P!ocessi$&:4 "$ API jv ("e o*!ec3 "$ 0$ic m$e! de co$ect! ls pliccio$es Jv co$ c"l("ie! $li,do! si$t'ctico 2L - p!ocesdo! SLT. S"$ o*!ece los p!o&!mdo!es "$ co$j"$to de i$te!*ces# mie$t!s ("e cd *b!ic$te o*!ece ls clses ("e impleme$t$ ests i$te!*ces - ("e e$cj$ s"s p!od"ctos.
JAP o*!ece "$ cp de co$ectividd co$ c"l("ie! $li,do! 2L p!ocesdo! SLT# e i$depe$di, ls pliccio$es !especto ls e!!mie$ts de $'lisis - t!tmie$to 2L ("e se "tilice$.
? )ompildo!es 5
L p!i$cipl di*e!e$ci e$t!e compildo!es de le$&"jes de di*e!e$tes TEMA ( GENERA)IN AANADA p!di&ms se e$c"e$t! e$ el tipo de c%di&o ("e se &e$e!4 mie$t!s ("e los impe!tivos - los o!ie$tdos l objeto &e$e!$ c%di&o $ivel de e$smbldo! o i$*e!io!# el !esto de DE p!di&ms s"ele$ &e$e!! c%di&o ) o );;. 1. PARADIG2AS PROGRA2A)IN
Tema 1 Ge$e!ci%$ v$,d 1. P!di&ms de p!o&!mci%$ 5. Gesti%$ del co$te/to @. Rep!ese$tci%$ - &esti%$ de los dtos del le$&"je *"e$te
"rogramación funcional Los le$&"jes *"$cio$les# como Lisp# 2i!$do o KsMell# se bs$ e$ l ide de ("e "$ p!o&!m es "$ *"$ci%$ co$ "$ p!'met!o de e$t!d - "$ !es"ltdo. L ejec"ci%$ del p!o&!m se co$vie!te e$to$ces e$ l plicci%$ de l <. R"ti$s - m+todos *"$ci%$ e$ l e$t!d p! obte$e! como !es"ltdo l slid. >. Gesti%$ de e!!o!es e$ tiempos Estos le$&"jes se c!cte!i,$ po!("e4 de ejec"ci%$ ? P!om"eve$ "$ estilo decl!tivo e$ el ("e los p!o&!mdo!es $ de especi*ic! s%lo ("+ se debe clc"l! - dej$ l compildo! - l sistem de ejec"ci%$ decidi! c%mo# d%$de - c"'$do lo $ de !eli,!. ? I$cl"-e$ co$st!"ccio$es de p!o&!mci%$ p! co$se&"i! el $ivel de bst!cci%$ !e("e!ido 9po! ejemplo# *"$cio$es de lto $ivel: ("e complic$ el compildo! - el sistem de ejec"ci%$. ? I$cl"-e$ *ciliddes si$t'ctics &estio$ds e$ el $li,do! l+/ico - el si$t'ctico4 !e&l de *"e! de j"e&o# $otci%$ de lists# lists e/"stivs &!"pci%$ de pt!o$es. ? P!ese$t$ spectos *"$dme$tles como tipos polim%!*icos# t!$sp!e$ci !e*e!e$cil# *"$cio$es de lto o!de$ o evl"ci%$ di*e!id. ? Se ve!i*icdo ("e se obtie$e "$ !ed"cci%$ de c%di&o de 1B 1 e$t!e los le$&"jes impe!tivos - los *"$cio$les# lo ("e !ed"ce m"co el es*"e!,o de p!o&!mci%$. "rogramación lógica L p!o&!mci%$ l%&ic se bs e$ l especi*icci%$ de !elcio$es e$t!e t+!mi$os de ecos ("e "tili,$ ests !elcio$es - de ls !e&ls p! i$*e!i! $"evos ecos p!ti! de los - e/iste$tes. Ls !e&ls - los ecos j"$tos se de$omi$$ cl'"s"ls. El p"$to clve de l p!o&!mci%$ l%&ic es l posibilidd de i$*e!i! ecos espec3*icos p!e&"$t$do ls cl'"s"ls# combi$'$dols de disti$ts m$e!s# !et!ocedie$do c"$do $o co$d"ce$ $i$&0$ sitio -# me$"do# tmbi+$ c"$do se lle& l l"&! desedo. Los compildo!es l%&icos bit"lme$te &e$e!$ c%di&o ). De todos modos# como l e/p!esi%$ m's $t"!l de l v"elt t!'s "tili, !"ti$s imb!icds# se s"ele "s! l&"$ ve!si%$ de ) ("e ls dmit# como GNU ). I$cl"so e/iste$ l&"$os compildo!es ("e "me$t$ "$ $ivel - &e$e!$ di!ectme$te c%di&o P!olo&. "rogramación paralela y )istriui)a Los sistems p!lelos - dist!ib"idos co$siste$ e$ m0ltiples p!ocesdo!es ("e se p"ede$ i$te!com"$ic!. Los le$&"jes de p!o&!mci%$ p! estos sistems sopo!t$ co$st!"ccio$es espec3*ics p! &estio$! l co$c"!!e$ci - l com"$icci%$. Ls dos !("itect"!s m's si&$i*ictivs so$4 ? 2"ltip!ocesdo!4 E$ ests est!"ct"!s todos los !ec"!sos ccede$# como m3$imo# "$ espcio de memo!i comp!tido - se s"ele$ com"$ic! le-e$do esc!ibie$do dtos e$ este espcio com0$. Se p"ede$ co$st!"i!# po! ejemplo# co$ect$do m0ltiples p!ocesdo!es "$ 0$ico b"s 9e/iste$ ot!s tipolo&3s m"co m's so*isticds:.
)ompildo!es 5 ?
? 2"ltio!de$do!4 Ests est!"ct"!s co$siste$ e$ di*e!e$tes o!de$do!es co$ectdos e$ !ed ("e ejec"t$ p!ocesos e$ disti$tos espcios de di!eccio$es. Los p!ocesos se com"$ic$ e$vi$do me$sjes po! l !ed. Tmbi+$ !es"lt i$te!es$te est"di! c%mo se e/p!es el p!lelismo. E/iste$ le$&"jes co$ p!lelismo impl3cito# e$ los ("e el compildo! i$te$t p!leli,! el p!o&!m de m$e! "tom'tic &e$e!$do el c%di&o $eces!io p! m$te$e! ls com"$iccio$es. Estos compildo!es se s"ele$ de$omi$! compildo!es e!oicos po!("e !es"lt$ m"- complejos de co$st!"i!. E$ los le$&"jes co$ p!lelismo e/pl3cito# el p!o&!mdo! de e/p!es! el p!lelismo de m$e! e/pl3cit "tili,$do se$te$cis ("e coo!di$e$ ls ctividdes p!lels. E$co$t!mos v!ios modelos de p!o&!mci%$ p!lel4 ? El modelo m's se$cillo de p!o&!mci%$ p!lel co$siste e$ "$ colecci%$ de p!ocesos ("e se com"$ic$ "tili,$do v!ibles comp!tids. K-# como m3$imo# "$ p!te de l memo!i ("e es comp!tid po! los disti$tos p!ocesos# de m$e! ("e todos p"ede$ ccede! ls misms v!ibles# comp!te$ i$*o!mci%$ - se com"$ic$ t!v+s de +sts. P"ede e/isti! si$c!o$i,ci%$ po! e/cl"si%$ m"t" 9"$ p!oceso s%lo p"ede ccede! "$ dete!mi$d v!ible e$ "$ mome$to ddo: o "$ mo$ito! 9el c"l co$tie$e los dtos - ls ope!cio$es $eces!is p! ccede! ellos# pe!o tods ls ope!cio$es de$t!o del mo$ito! so$ m"t"me$te e/cl"sivs:. ? El modelo de pso de me$sjes si!ve tmbi+$ p! m"ltio!de$do!es. )d p!oceso ccede s%lo s" p!opio espcio de dtos locles. EL i$te!cmbio de i$*o!mci%$ se llev cbo ps'$dose me$sjes de "$o ot!o medi$te l "tili,ci%$ de dos p!imitivs b'sics4 e$vi! - !ecibi!. Este pso de me$sjes p"ede se! s3$c!o$o o s3$c!o$o# - de !ecepci%$ e/pl3cit o impl3cit. ? Objetos4 Se e$cps"l$ los dtos e$ objetos - so$ ccesibles medi$te ope!cio$es de*i$ids de$t!o de los objetos. Esto "me$t l est!"ct"!ci%$ de los p!o&!ms - *cilit l !e"tili,ci%$ de los compo$e$tes. El p!lelismo se i$t!od"ce e$ estos le$&"jes# lo c"l pe!mite ("e di*e!e$tes objetos se ejec"te$ l mismo tiempo - dej ("e "$ p!oceso se ejec"te de$t!o del objeto. ? Los le$&"jes co$ dtos p!lelos# di*e!e$ci de ls t!es p!lels# todos los p!ocesdo!es ejec"t$ el mismo l&o!itmo# pe!o ope!$ e$ di*e!e$tes p!tes del co$j"$to de dtos. Estos le$&"jes $o!mlme$te pe!mite$ ("e el p!o&!mdo! decid ("+ se p"ede ejec"t! e$ p!lelo - dej$ ("e el compildo! dist!ib"- "tom'ticme$te los c'lc"los - los dtos e$t!e los El $'lisis l+/ico - el si$t'ctico tie$e$ !elci%$ co$ *e$%me$os locles - s%lo disti$tos p!ocesdo!es. !elcio$$ 3tems co$ s"s veci$os. L &esti%$ del co$te/to se llev cbo d"!$te el $'lisis sem'$tico# desp"+s de los $'lisis l+/ico - si$t'ctico. L &esti%$ del ceDEL !e*e!e$ci !elcio$es m's lej$s4 !elcio$ el tipo de "$ v!ible 5.co$te/to GESTIN )ONTETO de*i$ido e$ "$ se$te$ci de decl!ci%$ co$ el "so de l v!ible e$ "$ e/p!esi%$ o !elcio$ l posici%$ de "$ eti("et 9el p"$to de s" de*i$ici%$: co$ s" "so e$ "$ se$te$ci lbel. Ests !elcio$es se lc$,$ t!v+s de los ide$ti*icdo!es4 tods ls p!icio$es de "$ ide$ti*icdo! id se co$ect$ co$ l decl!ci%$ de id 9medi$te s" "bicci%$ e$ l tbl de s3mbolos:# de do$de se e/t!e i$*o!mci%$ de s" tipo# del tiempo de vid# etc. K- dos ecos ("e tie$e$ "$ ppel m"- di!ecto e$ l ve!i*icci%$ est'tic de l m-o!3 de estos le$&"jes4 l i)entificación - l verificación. L i)entificación es el p!oceso de b"sc de l p!ime! ve, 9&e$e!lme$te 0$ic: ("e p!ece e$ el c%di&o *"e$te l de*i$ici%$ de "$ ide$ti*icdo! o de "$ ope!do!4 el p"$to de de*i$ici%$. E$ est se$te$ci de de*i$ici%$ se p!opo!cio$ i$*o!mci%$ del ide$ti*icdo!4 l clse 9co$st$te# v!ible# m%d"lo: el tipo# "$ posible vlo! i$icil# "$s posibles p!opieddes de si&$ci%$
1B ? )ompildo!es 5
de memo!i# etc. Tods ls dem's p!icio$es del ide$ti*icdo! se de$omi$$ p"$tos de "so o se$te$cis de "so po!("e "tili,$ est i$*o!mci%$. K- dos e/cepcio$es4 dete!mi$dos le$&"jes pe!mite$ se$te$cis e$ v$,d co$ lo ("e los ide$ti*icdo!es p"ede$ te$e! m's de "$ p"$to de de*i$ici%$ - - le$&"jes ("e $o !e("ie!e$ ("e los ide$ti*icdo!es se$ decl!dos e$ $i$&0$ sitio4 el $omb!e del ide$ti*icdo! co$tie$e l i$*o!mci%$ o bie$ +st se e$c"e$t! dist!ib"id e$t!e ls di*e!e$tes p!icio$es del s3mbolo. Al&"$os espcios de $omb!es# especilme$te los de los le$&"jes est!"ct"!dos e$ blo("es se o!&$i,$ se&0$ los ámitos. De ls disti$ts o!&$i,cio$es de l tbl de s3mbolos# l m's "tili,d es l de dispe!si%$ 9s: pe!o p! cele!! s" *"$cio$mie$to# especilme$te c"$do se elimi$ "$ 'mbito# se p"ede mejo!! est est!"ct"! i$co!po!$do "$ pil de 'mbitos. )d posici%$ de est pil co$te$d!' "$ list e$cde$d co$ todos los s3mbolos del 'mbito 9cd !e&ist!o de l list est!' comp"esto de dos p"$tdo!es4 "$o p"$t!' s" posici%$ de l tbl de dispe!si%$ ("e co$tie$e el s3mbolo# - el ot!o l si&"ie$te eleme$to de l list:. E$ "$ le$&"je ("e pe!mite sorecarga# "$ ide$ti*icdo! $o oc"lt ls de*i$icio$es $te!io!es co$ el mismo $omb!e pe!o co$ c!cte!3stics di*e!e$tes. Al&"$os le$&"jes pe!mite$# tmbi+$# sob!ec!&! los ope!do!es. E$ estos tipos de le$&"jes# el p!oceso de ide$ti*icci%$ $o t!bj!' co$ "$ 0$ic de*i$ici%$ de "$ $omb!e# si$o co$ "$ co$j"$to de de*i$icio$es. L mbi&edd ("e p!ovoc l sob!ec!& se !es"elve p!ti! del co$te/to. Ot!os le$&"jes pe!mite$ co$st!"ccio$es ("e !eli,$ l copi de 'mbitos 'mbitos impo!tdos. Acbmos de ve! como l ide$ti*icci%$ de "$ s3mbolo p!opo!cio$ "$ p"$tdo! l tbl de s3mbolos ("e co$tie$e s"s p!opieddes. El p!ime! pso e$ l ve!i*icci%$ de tipos co$siste e$ dete!mi$! l clse del s3mbolo4 v!ible# co$st$te# *"$ci%$# tipo# m%d"lo# etc. Est ve!i*icci%$ de l clse del s3mbolo es "$ t!e se$cill# - ("e solo se de "tili,! l i$*o!mci%$ de l tbl de s3mbolos p! ve!i*ic! si el s3mbolo pe!te$ece l co$te/to dec"do. P"ede be! decl!ci%$ e/pl3cit o impl3cit# e$ este 0ltimo cso# el tipo $o tie$e "$ $omb!e e$ el p!o&!m *"e$te - el compildo! lo debe!' i$ve$t! - c!e! "$ !ep!ese$tci%$ i$te!$. E$ ls decl!cio$es de tipo l&"$os le$&"jes pe!mite$ e*ect"! !e*e!e$cis ide$ti*icdo!es ("e todv3 $o $ sido decl!dos# lo ("e pe!mite de*i$i! tipos m"t"me$te !ec"!sivos. )o$stit"-e$ ls de$omi$ds referencias a la avan*a)a. Ests !e*e!e$cis complic$ l compildo! po!("e4 ? Ls !e*e!e$cis l v$,d se $ de !esolve!. )"$do se detect "$# se de l tbl de s3mbolos - se m!c como !e*e!e$ci l v$,d. )"$do# m's del$te# se e$c"e$t!e l decl!ci%$ del tipo p! est !e*e!e$ci# se debe modi*ic! l posici%$ e$ l tbl de s3mbolos p! !ep!ese$t! el tipo co!!ecto. ? Se de di! "$ ve!i*icci%$ p! *i$les pe!didos. Al *i$l de "$ 'mbito e$ el ("e bido l&"$ !e*e!e$ci l v$,d# se debe ve!i*ic! ("e se -$ !es"elto tods ls !e*e!e$cis l v$,d. ? Se de di! "$ ve!i*icci%$ de ci!c"l!idd. U$ co$sec"e$ci de ls !e*e!e$cis l v$,d es ("e el p!o&!mdo! p"ede e*ect"! de*i$icio$es de tipo ci!c"l!# lo ("e p!obbleme$te se!' ile&l. )omo - sbemos# todos los tipos de dtos "tili,dos e$ "$ p!o&!m se &"!d$ e$ l tala )e tipos# ("e debe co$te$e! tod l i$*o!mci%$ $eces!i p! llev! cbo l ve!i*icci%$ de tipos - l &e$e!ci%$ de c%di&o. L i$*o!mci%$ ("e se &"!d e$ l tbl de s3mbolos depe$de del le$&"je ("e se compil e$ cmbio# l est!"ct"! "tili,d e$ el compildo! depe$de del le$&"je de impleme$tci%$# el le$&"je e$ el ("e est' esc!ito el compildo!4 si est' esc!ito e$ le$&"je impe!tivo se "tili, "$ !e&ist!o co$ "$ p!te v!ible 9o "$ "$i%$: p! los cmpos ("e depe$de$ del tipo de co$st!"cto! si el le$&"je es o!ie$tdo l objeto# se pod!3 "tili,! "$ clse ("e co$t"vie! los cmpos - m+todos ("e
)ompildo!es 5 ? 11
comp!te$ todos los co$st!"cto!es de tipos -# p! cd tipo de co$st!"cto! i$divid"l# se "tili,!3 s" p!opi s"bclse co$ s"s e/te$sio$es p!tic"l!es. Reli,! "$ equivalencia )e tipos co$siste e$ ve!i*ic! los tipos ("e i$te!vie$e$ e$ "$ e/p!esi%$ o comp!! los tipos espe!dos e$ los p!'met!os de "$ !"ti$ co$ los ("e !elme$te se !ecibe$. )"$do dos tipos tie$e$ l mism !ep!ese$tci%$ - se p"ede$ "tili,! "$o e$ el l"&! de ot!o# se dice ("e so$ e("ivle$tes. K- dos clses de e("ivle$ci de tipos4 ? E("ivle$ci de $omb!es4 Es l "tili,d e$ los le$&"jes impe!tivos o!ie$tdos l objeto mode!$os. Dos tipos so$ e("ivle$tes si tie$e$ el mismo $omb!e. ? E("ivle$ci est!"ct"!l4 Dos tipos so$ est!"ct"!lme$te e("ivle$tes c"$do s"s v!ibles p"ede$ te$e! los mismos vlo!es - pe!miti! ls misms ope!cio$es. )"$do e$ "$ posici%$ del p!o&!m se e$c"e$t! "$ tipo T1 - se espe!b "$ tipo T5# se de ve!i*ic! si T1 - T5 so$ de tipos e("ivle$tes. Si $o lo so$# se debe$ co$s"lt! ls !e&ls del le$&"je p! decidi! ("+ se de ce!. Se&0$ el le$&"je# el compildo! d!' "$ e!!o! l detect! est sit"ci%$ o bie$ i$se!t!' "$ i$st!"cci%$ de co$ve!si%$ de e$te!o !el e$ el c%di&o &e$e!do. Est co$ve!si%$ )d de tipodtos de dtos posee "$ !ep!ese$tci%$ impl3cit - tipodel sele$&"je de$omi$*"e$te coerción. e("ivle$te e$ el le$&"je objeto - el p!o&!mdo! del compildo! de c!e! l *"$ci%$ de mpeo de los tipos de dtos del le$&"je *"e$te le$&"je objeto4 @. REPRESENTA)IN GESTIN DE LOS DATOS DEL LENGUAJE HUENTE ? Tipo ásico4 Podemos e$co$t!! los c!cte!es 9se s"ele$ mpe! b-tes i$divid"les del le$&"je objeto:# los $0me!os e$te!os 9de disti$ts lo$&it"des $0me!os e$ com *lot$te. Adem's de ls comp!cio$es se s"ele$ !eli,! ope!cio$es !itm+tics b'sics# te$ie$do "$ t!d"cci%$ di!ect l le$&"je objeto: - void 9e$ l&"$os le$&"jes es "$ tipo e/pl3cito ("e $o se co!!espo$de co$ $i$&0$ vlo! !el e$ ot!os# se i$cl"-e s%lo e/pl3citme$te:. ? Tipos enumera)os4 De*i$e$ "$ co$j"$to de $omb!es p! se! los vlo!es. S" !ep!ese$tci%$ e$ tiempo de ejec"ci%$ se!' "$ $0me!o e$te!o# $o!mlme$te co$ vlo!es ("e v$ del ce!o l $0me!o de vlo!es e$"me!dos del tipo me$os 1. )omo e$ tiempo de compilci%$ se co$oce$ los vlo!es del tipo e$"me!do# se p"ede ele&i! "$ tipo e$te!o dec"do p! !ep!ese$t!los. U$ tipo e$"me!do ("e s"ele$ i$co!po!! m"cos le$&"jes es el tipo boole$o co$ los vlo!es e$"me!dos t!"e 91: - *lse 9vlo! B:. ? Tipos apunta)ores4 L m-o!3 de los le$&"jes impe!tivos - o!ie$tdos l objeto sopo!t$ l&0$ tipo p"$tdo!. S" !ep!ese$tci%$ e$ tiempo de ejec"ci%$ es "$ e$te!o si$ si&$o# co$ lo$&it"d s"*icie$te p! !ep!ese$t! l di!ecci%$ -# po! lo t$to se p"ede$ plic! tods ls ope!cio$es de $0me!os e$te!os. Eso s3# tie$e$ "$ ope!ci%$ p!tic"l!# l des!e*e!e$cici%$# ("e co$siste e$ obte$e! el vlo! &"!ddo e$ l est!"ct"! de dtos i$dicd po! el p"$tdo!. o Apunta)ores colga)os4 K- l&"$s sit"cio$es e$ ls ("e el p"$tdo! $o ce !e*e!e$ci "$ vlo! co!!ecto# co$ lo ("e !es"lt peli&!oso el "so de p"$tdo!es. E$ l&"$os le$&"jes como )# ls ccio$es $te "$ p!o&!m i$co!!ecto $o se e$c"e$t!$ de*i$ids - lo mejo! ("e se p"ede espe!! es ("e el p!o&!m *i$lice e!!%$eme$te $des de d! !es"ltdos co!!ectos. Ot!os le$&"jes# como Jv obvi$ este p!oblem l $o pe!miti! el "so de p"$tdo!es. ? Tipo +egistro4 U$ !e&ist!o o est!"ct"! es "$ eleme$to e$ el ("e co$vive &!"pdo "$ co$j"$to *ijo de cmpos miemb!os. E$ l !ep!ese$tci%$ e$ le$&"je objeto# los miemb!os se &"!d$ "$o t!s ot!o e$ posicio$es
15 ? )ompildo!es 5
co$sec"tivs de memo!i. Ls @ ope!cio$es b'sics sob!e los !e&ist!os so$4 l selecci%$ de "$ cmpo de "$ !e&ist!o 9e$ el le$&"je objeto est selecci%$ se co$si&"e medi$te posici%$;despl,mie$to:# l copi de "$ !e&ist!o e$ ot!o l comp!ci%$ de !e&ist!os. ? Tipo array4 De*i$e "$s est!"ct"!s de dtos ("e co$siste$ e$ se!ies de eleme$tos del mismo tipo. P"ede p!ese$t! "$ dime$si%$ 9vecto!:# dos 9mt!i,: o m's. Se ccede cd eleme$to del !!- "tili,$do "$ 3$dice po! cd dime$si%$ del !!-. ? Tipo interfa*4 Es como "$ clse ("e s%lo co$siste e$ "$ se!ie de especi*iccio$es de m+todos. U$ i$te!*, se p"ede e!ed! e/te$die$do "$ i$te!*, pd!e. No se i$st$ci$ como objetos# pe!o se p"ede$ decl!! v!ibles e i$voc! los m+todos ("e se especi*ic$ 9ls v!ibles so$ p"$tdo!es Jv objetos:. L p!i$cipl ve$tj de ls i$te!*ces !dic e$ el eco de ("e "$ clse objeto p"ede impleme$t! "$ o m's de ests i$te!*ces - ("e "$ tipo i$te!*, es comptible co$ c"l("ie! objeto ("e lo impleme$te. K- m"cs c!cte!3stics p!opis de los le$&"jes o!ie$tdos l objeto disti$ts m$e!s de impleme$t!ls. Podemos empe,! co$ l ,erencia# ("e pe!mite l p!o&!mdo! bs! "$ clse 8 e$ "$ clse A# de m$e! ("e 8 dem's de s"s p!opios m+todos - t!ib"tos# e!ede todos los de A. Est c!cte!3stic tmbi+$ se de$omi$ e-tensión )e tipo4 l clse 8 e/tie$de l clse A co$ "$o o m's m+todos - t!ib"tos. L clse A es l superclase 9o pd!e: de 8 - l clse 8 es "$ s"bclse o ij de A. )"$do "$ clse e/tie$de "$ clse A# p"ede !ede*i$i! l&"$o de los m+todos de A es deci!# c"$do "$ s"pe!clse A de*i$e "$ m+todo - tods s"s s"bclses lo e!ed$# lo p"ede$ !ede*i$i!# !eesc!ibi+$dolo# de modo ("e s"s impleme$tcio$es del m+todo se!'$ di*e!e$tes de ls de l s"pe!clse. Ot! c!cte!3stic es el polimorfismo. )"$do "$ clse 8 e/tie$de "$ clse A - el le$&"je pe!mite ("e "$ p"$tdo! l clse 8 se si&$do "$ p"$tdo! de l clse A se dice ("e el le$&"je sopo!t el polimo!*ismo. As3# "$ p"$tdo! de A p"ede p"$t! objetos de l clse A o objetos de s"s s"bclses. L ,erencia m.ltiple se p!od"ce c"$do se pe!mite ("e los objetos p"ed$ e!ed! de m's de "$ clse. E$ ests sit"cio$es $o es posible !ep!ese$t! "$ objeto como "$ p"$tdo! l tbl de ejec"ci%$ se&"ido de los t!ib"tos del )"$do se llm "$ !"ti$# &e$e!lme$te se $ de llev! cbo ls objeto t!es si&"ie$tes4 ?<.)!e! "$ $"evo e$to!$o e$ memo!i tempo!l ("e co$te$&# como m3$imo# ls RUTINAS 2ÉTODOS v!ibles locles de l !"ti$. ? Ps! i$*o!mci%$ l $"evo e$to!$o4 los p!'met!os. ? T!$s*e!i! el *l"jo de co$t!ol l $"evo e$to!$o# co$ e$ p!i$cipioC "$ p"$to de !eto!$o se&"!do. ? Al cb! l ejec"ci%$ de l !"ti$# se debe!' !eto!$! i$*o!mci%$ desde el $"evo e$to!$o4 el o los vlo!es de !eto!$o. Ests c"t!o t!es m"est!$ ("e el i$&!edie$te ese$cil de l ctivci%$ de "$ !"ti$ lo co$stit"-e e$ $"evo e$to!$o. L est!"ct"! de dtos "tili,d p! &"!d! los dtos pe!ti$e$tes e$ l i$vocci%$ de "$ !"ti$ o de "$ m+todo de "$ objeto se de$omi$ registro )e activación o m!co. E$ l m-o!3 de los le$&"jes# ls !"ti$s se ctiv$ e$ "$ o!de$ LIHO# e$ el ("e l p!ime! e$ e$t!! es l 0ltim e$ sli!4 c"$do l !"ti$ A llm l !"ti$ 8# A $o pod!' co$ti$"! s" ejec"ci%$ st ("e 8 $o cbe. Este compo!tmie$to se s"ele modeli,! "tili,$do "$ pil p! &"!d! los !e&ist!os de ctivci%$ de ls
)ompildo!es 5 ? 1@
!"ti$s medid ("e se v$ c!e$do# "$("e# como se ve!'# e$ l&"$os csos l pil p"ede !es"lt! i$s"*icie$te - es $eces!io "tili,! l memo!i mo$t3c"lo. Est est!"ct"! de pil pe!mite "$ &esti%$ impl3cit de l ctivci%$ de ls !"ti$s *cilit m"co l p!o&!mci%$ del compildo!. )"$do "$ rutina es llmd se c!e "$ !e&ist!o de ctivci%$ p! &"!d! los dtos - se t!$s*ie!e el *l"jo de co$t!ol s" p!ime! i$st!"cci%$ de c%di&o. E$ este mome$to se dice ("e l !"ti$ se ejec"t. Ls !"ti$s ("e se ejec"t$ o ("e se e$c"e$t!$ s"spe$dids# tie$e$ "$ !e&ist!o de ctivci%$ c!edo - est'$ ctivs. E$ cso de ("e "$ !"ti$ est+ ctiv m's de "$ ve, sim"lt'$eme$te# se!' "$ !"ti$ !ec"!siv# pe!o e$ "$ mome$to ddo# s%lo p"ede est! e$ ejec"ci%$ "$ 0$ic i$vocci%$. )"$do "$ !"ti$ se cb# se elimi$ s" !e&ist!o de ctivci%$ - c"$do l 0ltim ctivci%$ de l !"ti$ se cbdo - se $ elimi$do todos los !e&ist!os de ctivci%$ de l !"ti$# +st se co$vie!te e$ i$ctiv. Sob!e "$ !"ti$ se p"ede !eli,! "$ llama)a# ("e c!e "$ !e&ist!o de ctivci%$ - t!$s*ie!e el *l"jo de co$t!ol del p!o&!m l c%di&o de l !"ti$. )omo se visto# "$ p!te de l sec"e$ci de ccio$es ("e se llev$ cbo e$ l llmd de "$ !"ti$ se !eli, e$ l p!te de l !"ti$ i$vocdo! - ot!# e$ l p!te de l !"ti$ i$vocd. L !ese!v de espcio p! el !e&ist!o de ctivci%$ se!' l p!ime! cci%$ ("e se llev!' cbo - se p"ede !eli,! "tili,$do "$ pil o "$ memo!i mo$t3c"lo. Si se "tili, "$ pil# l !ese!v es m's o me$os "tom'tic - los compo$e$tes se po$e$ e$ l pil e$ el o!de$ co!!ecto. Si se "tili, l memo!i mo$t3c"lo# se de !ese!v! "$ t!o,o sec"e$cil de memo!i de "$ lo$&it"d s"*icie$te p! &"!d! todo el !e&ist!o de ctivci%$. )omo l sit"ci%$ $o!ml es l p!ime!# s"mi!emos ("e se "tili,d "$ pil. E$ "$ pil se p"ede$ llev! cbo ls dos ccio$es si&"ie$tes4 ? P"s4 Po$e! "$ eleme$to e$ l cim. ? Pop4 Sc! el 0ltimo eleme$to e$t!do e$ l cim. E/iste$ disti$tos mec$ismos posibles p! !eli,! el paso )e parámetros4 el m's se$cillo es el pso po! vlo!4 el vlo! ct"l del p!'met!o se "tili, como vlo! i$icil del p!'met!o *o!ml co!!espo$die$te. Desp"+s de !eto!$!# l !"ti$ ("e !eli,do l llmd $o ve $i$&0$ cmbio e$ el vlo! del p!'met!o. 2"cos le$&"jes sopo!t$ "$ *o!m de p!'met!os de slid ("e pe!mite "$ !"ti$ ("e ls modi*iccio$es e$ los vlo!es de los p!'met!os ct"les se$ !e*lejdos e$ los co!!espo$die$tes p!'met!os *o!mles4 ? Pso po! !e*e!e$ci4 Se copi l di!ecci%$ del p!'met!o ct"l e$ el !e&ist!o de ctivci%$. ? Pso po! vlo!C!es"ltdo4 Se copi l di!ecci%$ del p!'met!o ct"l e$ el !e&ist!o de ctivci%$. U$ v!ible locl s"stit"-e l p!'met!o e$ ls se$te$cis del c%di&o de l !"ti$. Est v!ible se i$icili, co$ el vlo! del p!'met!o. El cmbio de vlo! se e*ect0 l v"elt4 c"$do *i$li, l !"ti$# el vlo! de l v!ible locl se copi e$ el p!'met!o o!i&i$l. /rea )e variales locales U$ ve, t!$s*e!ido el co$t!ol# l !"ti$ i$vocd c!e l p!te de v!ibles locles do$de !esidi!'$ ls v!ibles locles - tempo!les del compildo!. No!mlme$te# el compildo! dete!mi$ s" lo$&it"d co$side!$do el '!e como "$ !e&ist!o e$ el ("e ls v!ibles locles de l !"ti$ *o!m$ los cmpos. Tmbi+$ de te$e! e$ c"e$t los !e("e!imie$tos de lo$&it"d - li$eci%$ de l memo!i. Tl como oc"!!3 co$ los p!'met!os# l&"$os dtos p"ede$ te$e! compo$e$tes di$'micos e$ este cso# se debe!'$ &"!d! e$ l memo!i mo$t3c"lo o e$ el '!e de si&$ci%$ di$'mic del !e&ist!o de ctivci%$# como se e/plic!' co$ti$"ci%$.
1< ? )ompildo!es 5
"ila )e traajo Est pil se "tili, p! &"!d! !es"ltdos $%$imos de e/p!esio$es. Tmbi+$ se p"ede$ &"!d! l3mites de se$te$cis *o! 9"$("e es m's $o!ml &"!d!ls e$ v!ibles tempo!les:. A$li,$do el c%di&o de l !"ti$# el compildo! p"ede decidi! *'cilme$te l lo$&it"d m'/im de l pil e i$co!po!!l como "$ blo("e *ijo det!'s del '!e de ls v!ibles locles. /rea )e memoria )inámica Si el le$&"je objeto pe!mite !e&ist!os de ctivci%$ ("e p"ed$ modi*ic! s" lo$&it"d di$'micme$te# se p"ede i$co!po!! "$ p!te sep!d de memo!i di$'mic p! ls v!ibles locles - p! los p!'met!os co$ compo$e$tes di$'micos. )omo +st es l 0$ic p!te del !e&ist!o de ctivci%$ de l ("e $o se p"ede sbe! l lo$&it"d e$ tiempo de compilci%$# se debe sit"! l *i$l del !e&ist!o. Ls p!i$ciples ve$tjs ("e s"po$e "tili,! '!es de memo!i di$'mic so$ ("e $o se!' $eces!io elimi$! ls v!ibles c"$do l !"ti$ *i$lice# - ("e se mejo! l velocidd# - ("e l &esti%$ se e*ect0 "tili,$do el !e&ist!o SP. El i$co$ve$ie$te es ("e el '!e de pil de t!bjo - $o pod!' "tili,! el SP# si$o ("e se debe!' sim"l! el *"$cio$mie$to po! so*tF!e. +etorno )e valores Si l !"ti$ i$vocd tie$e ("e !eto!$! "$ vlo!# se p"ede$ se&"i! di*e!e$tes es("ems p! ("e se pe!cte de ello l !"ti$ i$vocdo!4 ? Si el vlo! es "$ tipo de dtos simple# se &"!d el !es"ltdo e$ el !e&ist!o de !es"ltdo de *"$ci%$. ? Si el vlo! $o cbe de m$e! $t"!l e$ el !e&ist!o# l sit"ci%$ se complic se!' $eces!io plic! "$ de ls @ sol"cio$es si&"ie$tes4 o Si el compildo! co$oce l lo$&it"d del !es"ltdo# p"ede !ese!v! espcio e$ el '!e de v!ibles tempo!les de l !"ti$ i$vocdo! ps! s" di!ecci%$ como p!'met!o e/t! l !"ti$ i$vocd. o L !"ti$ i$vocd p"ede !ese!v! espcio di$'micme$te e$ el !e&ist!o de !es"ltdo de *"$ci%$ - !eto!$! "$ p"$tdo! est di!ecci%$. o El !es"ltdo de p"ede dej! e$ l memo!i di$'mic del !e&ist!o de ctivci%$ de l !"ti$ i$vocd o e$ "$ v!ible locl# - po$e! "$ p"$tdo! ell e$ el !e&ist!o de !es"ltdo de *"$ci%$. La secuencia )e llama)a y retorno L sec"e$ci de psos ("e se llev$ cbo l i$voc! "$ !"ti$ es l si&"ie$te4 ? )!e! "$ !e&ist!o de ctivci%$. ? Evl"! los p!'met!os - &"!d!los e$ el !e&ist!o de ctivci%$. ? Lle$! el '!e de dmi$ist!ci%$ del !e&ist!o de ctivci%$4 p"$tdo! m!co de l !"ti$ i$vocdo! 9e$lce di$'mico:# di!ecci%$ de !eto!$o# p"$tdo! l+/ico ("i,' l&"$os !e&ist!os de l m'("i$. ? T!$s*e!i! el co$t!ol l !"ti$ i$vocd. ? Kce! ("e el p"$tdo! de m!co p"$te l $"evo !e&ist!o de ctivci%$ de l !"ti$ i$vocd. ? Act"li,! el p"$tdo! de pil !ese!v$do espcio s"*icie$te p! el '!e de v!ibles locles. ? Si - p!te de memo!i di$'mic# se lle$ medid ("e se v !e("i!ie$do. L sec"e$ci de psos $eces!i p! el !eto!$o es l si&"ie$te4 ? Si l !"ti$ i$vocd !eto!$ "$ vlo!# lo debe &"!d! e$ el '!e desi&$d p! esto. ? Si se $ &"!ddo los !e&ist!os de l m'("i$ e$ el '!e de dmi$ist!ci%$# - ("e !est"!!los tl como *"e!o$ &"!ddos.
)ompildo!es 5 ? 1>
? ? ? ?
Act"li,! el p"$tdo! de pil *i$ de ("e p"$te l p"$tdo! de m!co. Rest"!! el p"$tdo! de m!co desde el '!e de dmi$ist!ci%$. T!$s*e!i! el co$t!ol l !"ti$ i$vocdo! "tili,$do l di!ecci%$ de !eto!$o. Elimi$! el !e&ist!o de ctivci%$ de l !"ti$ i$vocd.
>. GESTIN DE ERRORES EN TIE2PO DE EJE)U)IN E/iste "$ i$me$s v!iedd de p!oblems ("e se p"ede$ p!ese$t! e$ el p!o&!m4 desbo!dmie$to de $0me!os e$te!os# divisi%$ po! ce!o El c%di&o &e$e!do# el sistem de ejec"ci%$# el sistem ope!tivo o el !dF!e# se&0$ ls ci!c"$st$cis# p"ede$ detect! el e!!o! -# p!obbleme$te# l&0$ $ivel del sistem d!' "$ me$sje de e!!o! - el p!o&!m *i$li,!'. L &esti%$ de los e!!o!es e$ tiempo de ejec"ci%$ s"po$e dos ccio$es4 detecci%$ - &esti%$. Respecto l )etección deci! ("e "$ e!!o! p"ede est! c"sdo po! motivos e/te!$os o bie$ po! el mismo p!o&!m. P! detect! e!!o!es e/te!$os depe$demos m"co del sistem# s3 "$ e!!o! de memo!i p"ede o $o se! t!$smitido l p!o&!m. )o$ !especto los i$te!$os# los p!ovocdos po! el mismo p!o&!m# e$ l&"$os csos el sistem ope!tivo p"ede p!ovoc! "$ i$te!!"pci%$ l detect!los# pe!o el compildo! tmbi+$ p"ede &e$e!! c%di&o e/t! desp"+s de ls ope!cio$es ("e p"ede$ se! co$*lictivs p! detect!los. )omo ests ve!i*iccio$es s"po$e$ i$c!eme$t! m"co el tiempo de p!oceso# l m-o!3 de los compildo!es pe!mite$ desctiv!ls e$ el p!oceso de &e$e!ci%$ del c%di&o objeto. L gestión de e!!o!es e$ tiempos de ejec"ci%$ m's com"$es so$ ls seles ls e/cepcio$es. Debemos te$e! e$ c"e$t ("e si el le$&"je $o pe!mite t!t! los e!!o!es e$ tiempo de ejec"ci%$# el sistem debe &e$e!! "$ me$sje i$teli&ible *i$li,! el p!o&!m c!e$do "$ copi de l memo!i ("e p"ed se! $li,d poste!io!i co$ "$ dep"!do!. Ls se0ales se i$voc$ c"$do se p!od"ce "$ e!!o! e$ tiempo de ejec"ci%$# e$c!&'$dose# po! ejemplo# de ce!!! *ice!os# libe!! !ec"!sos# most!! "$ me$sje de e!!o! - ce!!! el p!o&!m tmbi+$ se p"ede t!t! el e!!o! - co$ti$"! l ejec"ci%$ desp"+s j"sto de l i$st!"cci%$ ("e lo p!ovocdo. Ls e-cepciones so$ "$ m+todo m's *le/ible ("e ls seles - ("e se s"ele e$co$t!! e$ m"cos le$&"jes de p!o&!mci%$# co$siste e$ "tili,! &esto!es de e/cepcio$es# ("e especi*ic$ "$ co$j"$to de i$st!"ccio$es ("e se debe!3$ ejec"t! si l co$dici%$ de e!!o! ("e &estio$ se p!od"ce. No!mlme$te cd blo("e o !"ti$ posee s" p!opio &esto! de e/cepcio$es# I$cl"so# se p"ede$ te$e! disti$tos &esto!es de e/cepcio$es p! di*e!e$tes co$dicio$es de e!!o!. Te/to elbo!do p!ti! de4 )ompildo!es II Dvid 2e&3s i Jim+$e,# J"li 2i$&"illo$ i Al*o$so# Jo$ )odi$ i 8$t3# H!$cesc S$t$c i Delis" &unio 2