_
_
_
_
An¨¢lisis
Exposici¨®n did¨¢ctica de ideas, conjeturas o hip¨®tesis, a partir de unos hechos de actualidad comprobados ¡ªno necesariamente del d¨ªa¡ª que se reflejan en el propio texto. Excluye los juicios de valor y se aproxima m¨¢s al g¨¦nero de opini¨®n, pero se diferencia de ¨¦l en que no juzga ni pronostica, sino que s¨®lo formula hip¨®tesis, ofrece explicaciones argumentadas y pone en relaci¨®n datos dispersos

La pereza puede ser una virtud (en los lenguajes de programaci¨®n)

Jose Maria Tejederas Chacon.

La pereza en las personas no es precisamente una virtud. Nos han dicho a menudo que la pereza es la madre de todos los vicios y que es algo a evitar. Las personas perezosas suelen tener mala fama. Sin embargo, las cosas son distintas en los lenguajes de programaci¨®n. Como voy a mostrar aqu¨ª, la pereza a la hora de realizar c¨®mputos puede llegar a ser algo beneficioso, e incluso deseable.

En los lenguajes, lo contrario de la pereza es la impaciencia. Para ilustrar la diferencia, imagine que usted quiere organizar en su casa una fiesta para sus amigos y que no conoce bien sus gustos. Si es usted una persona impaciente, comprar¨¢ comidas y bebidas de diversos tipos para asegurarse de que todos quedar¨¢n satisfechos. Este comportamiento tiene las ventajas de que el invitado encontrar¨¢ inmediatamente el plato que le gusta, y que podr¨¢ empezar a comer (si su buena educaci¨®n se lo permite) desde el minuto uno. El inconveniente es que muy probablemente sobrar¨¢ la comida y la bebida que no responda a los gustos de los comensales. Es decir, usted habr¨¢ invertido recursos para nada. Eso es justo lo que sucede en un programa de ordenador escrito en un lenguaje impaciente: que realizar¨¢ c¨¢lculos cuyos resultados no siempre ser¨¢n necesarios.

Lo que har¨ªa un anfitri¨®n perezoso en esta situaci¨®n ser¨ªa esperar a que llegasen los invitados. A medida que van llegando, les preguntar¨ªa qu¨¦ es exactamente lo que desean para comer y beber, y lo encargar¨ªa a una tienda especializada. Mientras llega la comida, podr¨ªa entretenerles por ejemplo con las fotos del verano. Los lenguajes perezosos se comportan exactamente de ese modo: esperan a que exista demanda para un resultado y empiezan a calcularlo a partir del momento en que es demandado. La ventaja evidente es que nunca realizan c¨®mputos in¨²tiles, ni necesitan memoria para almacenar resultados que no se van a usar. A cambio, la parte del programa que demanda el resultado ha de esperar a que este sea calculado.

Imaginemos que un programa necesita la secuencia de los primeros n¨²meros primos, pero no conoce exactamente cu¨¢ntos va a necesitar, porque esa cantidad puede ser diferente en diferentes contextos. Un programa impaciente calcular¨ªa suficientes n¨²meros primos para atender a la demanda m¨¢s exigente, con lo que muy probablemente calcular¨ªa primos de m¨¢s. Un programa perezoso puede permitirse el lujo de ¡°calcular¡± todos los primos, es decir infinitos, aunque de hecho solo calcular¨¢ los que sean demandados. Veamos c¨®mo lo hace.

Escribir¨¦ [2, 3, 4] para referirme a la lista formada por los n¨²meros 2, 3 y 4. Igualmente, usar¨¦ la notaci¨®n x : lista para referirme a la inclusi¨®n de x al principio de la variable lista. Por ejemplo, la expresi¨®n 1 : [2,3,4] produce la lista [1,2,3,4]. La lista de todos los n¨²meros naturales empezando a partir de uno cualquiera se puede definir de esta manera:

naturalesEmpezandoEn i = i : naturalesEmpezandoEn (i+1)

?Es decir, la lista de los n¨²meros naturales que empiezan en i tiene a i como primer elemento, y le sigue la lista de los naturales que empiezan en i+1. Por ejemplo, naturalesEmpezandoEn 7 es el 7, seguido de naturalesEmpezandoEn 8; es decir, 7 : naturalesEmpezandoEn 8, que es [7, 8, 9¡­]. No cabe duda de que esta igualdad es correcta, aunque vista como programa sugiere un c¨®mputo infinito. La lista completa de los n¨²meros naturales se obtendr¨ªa mediante la expresi¨®n naturalesEmpezandoEn 0.

Para calcular todos los n¨²meros primos emplear¨¦ el algoritmo conocido como la Criba de Erat¨®stenes, por ser este sabio griego quien lo propuso. Comienza con la lista de los naturales a partir de 2 y realiza repetidamente la siguiente operaci¨®n: considera el primer n¨²mero p de la lista como un n¨²mero primo y a continuaci¨®n elimina a p de la lista y a todos sus m¨²ltiplos, es decir, a 2p, 3p, 4p, etc. A la lista que resulte le aplica el mismo procedimiento, y as¨ª hasta el infinito. De este modo, el primer n¨²mero primo ser¨¢ el 2, tachar¨¢ el 4, el 6, el 8¡­ Tomar¨¢ a continuaci¨®n el 3 y tachar¨¢ el 6 (que ya estaba tachado), el 9, el 12¡­ La Criba toma el primer n¨²mero de la lista sin tachar (el 5) y tachar¨¢ sus m¨²ltiplos. Usando la notaci¨®n anterior, el programa que expresa esta idea es el siguiente:

primos = cribar (naturalesEmpezandoEn 2)

cribar (p : resto) = p : cribar (tacharMultiplosDe p resto)

Todas las listas que aparecen en este programa (la de los naturales, la que resulta de tachar los m¨²ltiplos de p y la de los primos) son potencialmente infinitas, pero al lenguaje perezoso no se le ocurrir¨¢ ponerse a calcularlas hasta que exista un demanda concreta. Supongamos que tenemos una funci¨®n tomar que, dado un natural n, toma los primeros n elementos de una lista. La instrucci¨®n

imprime (tomar 100 primos)

genera una demanda para calcular los primeros 100 primos de la lista primos. En ese momento, el programa anterior se ejecutar¨¢ para realizar el c¨¢lculo de la parte demandada de la lista. Al llegar al primo que corresponde al lugar 100, suspender¨¢ el c¨¢lculo.

En la programaci¨®n, la pereza permite separar la parte de la generaci¨®n de resultados de la parte de su consumo, lo cual redunda en programas mas sencillos y modulares. La mayor¨ªa de los lenguajes de programaci¨®n son impacientes. El primer lenguaje perezoso de amplio uso se dise?¨® a finales de la d¨¦cada de 1980, y fue llamado Haskell en honor al matem¨¢tico estadounidense Haskell B. Curry (1900-1982). Los programas aqu¨ª mostrados est¨¢n escritos en Haskell. Este lenguaje pertenece a la categor¨ªa de los llamados lenguajes funcionales y muchas empresas lo usan, en particular gran parte de la banca inglesa y alemana. Ya ven ustedes que paradoja: una instituci¨®n como la banca, a la que nadie tachar¨ªa de perezosa, realiza los c¨¢lculos de las cuentas de sus clientes mediante un lenguaje perezoso. ?Vivir para ver!

Ricardo Pe?a Mar¨ª. Catedr¨¢tico de Lenguajes y Sistemas Inform¨¢ticos. Universidad Complutense de Madrid.

Cr¨®nicas del Intangible es un espacio de divulgaci¨®n sobre las ciencias de la computaci¨®n, coordinado por la sociedad acad¨¦mica SISTEDES (Sociedad de Ingenier¨ªa de Software y de Tecnolog¨ªas de Desarrollo de Software). El intangible es la parte no material de los sistemas inform¨¢ticos (es decir, el software), y aqu¨ª se relatan su historia y su devenir. Los autores son profesores de las universidades espa?olas, coordinados por Ricardo Pe?a Mar¨ª (catedr¨¢tico de la Universidad Complutense de Madrid) y Macario Polo Usaola (profesor titular de la Universidad de Castilla-La Mancha).

Tu suscripci¨®n se est¨¢ usando en otro dispositivo

?Quieres a?adir otro usuario a tu suscripci¨®n?

Si contin¨²as leyendo en este dispositivo, no se podr¨¢ leer en el otro.

?Por qu¨¦ est¨¢s viendo esto?

Flecha

Tu suscripci¨®n se est¨¢ usando en otro dispositivo y solo puedes acceder a EL PA?S desde un dispositivo a la vez.

Si quieres compartir tu cuenta, cambia tu suscripci¨®n a la modalidad Premium, as¨ª podr¨¢s a?adir otro usuario. Cada uno acceder¨¢ con su propia cuenta de email, lo que os permitir¨¢ personalizar vuestra experiencia en EL PA?S.

En el caso de no saber qui¨¦n est¨¢ usando tu cuenta, te recomendamos cambiar tu contrase?a aqu¨ª.

Si decides continuar compartiendo tu cuenta, este mensaje se mostrar¨¢ en tu dispositivo y en el de la otra persona que est¨¢ usando tu cuenta de forma indefinida, afectando a tu experiencia de lectura. Puedes consultar aqu¨ª los t¨¦rminos y condiciones de la suscripci¨®n digital.

Archivado En

Recomendaciones EL PA?S
Recomendaciones EL PA?S
Recomendaciones EL PA?S
_
_
seductrice.net
universo-virtual.com
buytrendz.net
thisforall.net
benchpressgains.com
qthzb.com
mindhunter9.com
dwjqp1.com
secure-signup.net
ahaayy.com
tressesindia.com
puresybian.com
krpano-chs.com
cre8workshop.com
hdkino.org
peixun021.com
qz786.com
utahperformingartscenter.org
worldqrmconference.com
shangyuwh.com
eejssdfsdfdfjsd.com
playminecraftfreeonline.com
trekvietnamtour.com
your-business-articles.com
essaywritingservice10.com
hindusamaaj.com
joggingvideo.com
wandercoups.com
wormblaster.net
tongchengchuyange0004.com
internetknowing.com
breachurch.com
peachesnginburlesque.com
dataarchitectoo.com
clientfunnelformula.com
30pps.com
cherylroll.com
ks2252.com
prowp.net
webmanicura.com
sofietsshotel.com
facetorch.com
nylawyerreview.com
apapromotions.com
shareparelli.com
goeaglepointe.com
thegreenmanpubphuket.com
karotorossian.com
publicsensor.com
taiwandefence.com
epcsur.com
southstills.com
tvtv98.com
thewellington-hotel.com
bccaipiao.com
colectoresindustrialesgs.com
shenanddcg.com
capriartfilmfestival.com
replicabreitlingsale.com
thaiamarinnewtoncorner.com
gkmcww.com
mbnkbj.com
andrewbrennandesign.com
cod54.com
luobinzhang.com
faithfirst.net
zjyc28.com
tongchengjinyeyouyue0004.com
nhuan6.com
kftz5k.com
oldgardensflowers.com
lightupthefloor.com
bahamamamas-stjohns.com
ly2818.com
905onthebay.com
fonemenu.com
notanothermovie.com
ukrainehighclassescort.com
meincmagazine.com
av-5858.com
yallerdawg.com
donkeythemovie.com
corporatehospitalitygroup.com
boboyy88.com
miteinander-lernen.com
dannayconsulting.com
officialtomsshoesoutletstore.com
forsale-amoxil-amoxicillin.net
generictadalafil-canada.net
guitarlessonseastlondon.com
lesliesrestaurants.com
mattyno9.com
nri-homeloans.com
rtgvisas-qatar.com
salbutamolventolinonline.net
sportsinjuries.info
wedsna.com
rgkntk.com
bkkmarketplace.com
zxqcwx.com
breakupprogram.com
boxcardc.com
unblockyoutubeindonesia.com
fabulousbookmark.com
beat-the.com
guatemala-sailfishing-vacations-charters.com
magie-marketing.com
kingstonliteracy.com
guitaraffinity.com
eurelookinggoodapparel.com
howtolosecheekfat.net
marioncma.org
oliviadavismusic.com
shantelcampbellrealestate.com
shopleborn13.com
topindiafree.com
v-visitors.net
djjky.com
053hh.com
originbluei.com
baucishotel.com
33kkn.com
intrinsiqresearch.com
mariaescort-kiev.com
mymaguk.com
sponsored4u.com
crimsonclass.com
bataillenavale.com
searchtile.com
ze-stribrnych-struh.com
zenithalhype.com
modalpkv.com
bouisset-lafforgue.com
useupload.com
37r.net
autoankauf-muenster.com
bantinbongda.net
bilgius.com
brabustermagazine.com
indigrow.org
miicrosofts.net
mysmiletravel.com
selinasims.com
spellcubesapp.com
usa-faction.com
hypoallergenicdogsnames.com
dailyupdatez.com
foodphotographyreviews.com
cricutcom-setup.com
chprowebdesign.com
katyrealty-kanepa.com
tasramar.com
bilgipinari.org
four-am.com
indiarepublicday.com
inquick-enbooks.com
iracmpi.com
kakaschoenen.com
lsm99flash.com
nana1255.com
ngen-niagara.com
technwzs.com
virtualonlinecasino1345.com
wallpapertop.net
casino-natali.com
iprofit-internet.com
denochemexicana.com
eventhalfkg.com
medcon-taiwan.com
life-himawari.com
myriamshomes.com
nightmarevue.com
healthandfitnesslives.com
androidnews-jp.com
allstarsru.com
bestofthebuckeyestate.com
bestofthefirststate.com
bestwireless7.com
britsmile.com
declarationintermittent.com
findhereall.com
jingyou888.com
lsm99deal.com
lsm99galaxy.com
moozatech.com
nuagh.com
patliyo.com
philomenamagikz.net
rckouba.net
saturnunipessoallda.com
tallahasseefrolics.com
thematurehardcore.net
totalenvironment-inthatquietearth.com
velislavakaymakanova.com
vermontenergetic.com
kakakpintar.com
begorgeouslady.com
1800birks4u.com
2wheelstogo.com
6strip4you.com
bigdata-world.net
emailandco.net
gacapal.com
jharpost.com
krishnaastro.com
lsm99credit.com
mascalzonicampani.com
sitemapxml.org
thecityslums.net
topagh.com
flairnetwebdesign.com
rajasthancarservices.com
bangkaeair.com
beneventocoupon.com
noternet.org
oqtive.com
smilebrightrx.com
decollage-etiquette.com
1millionbestdownloads.com
7658.info
bidbass.com
devlopworldtech.com
digitalmarketingrajkot.com
fluginfo.net
naqlafshk.com
passion-decouverte.com
playsirius.com
spacceleratorintl.com
stikyballs.com
top10way.com
yokidsyogurt.com
zszyhl.com
16firthcrescent.com
abogadolaboralistamd.com
apk2wap.com
aromacremeria.com
banparacard.com
bosmanraws.com
businessproviderblog.com
caltonosa.com
calvaryrevivalchurch.org
chastenedsoulwithabrokenheart.com
cheminotsgardcevennes.com
cooksspot.com
cqxzpt.com
deesywig.com
deltacartoonmaps.com
despixelsetdeshommes.com
duocoracaobrasileiro.com
fareshopbd.com
goodpainspills.com
hemendekor.com
kobisitecdn.com
makaigoods.com
mgs1454.com
piccadillyresidences.com
radiolaondafresca.com
rubendorf.com
searchengineimprov.com
sellmyhrvahome.com
shugahouseessentials.com
sonihullquad.com
subtractkilos.com
valeriekelmansky.com
vipasdigitalmarketing.com
voolivrerj.com
zeelonggroup.com
1015southrockhill.com
10x10b.com
111-online-casinos.com
191cb.com
3665arpentunitd.com
aitesonics.com
bag-shokunin.com
brightotech.com
communication-digitale-services.com
covoakland.org
dariaprimapack.com
freefortniteaccountss.com
gatebizglobal.com
global1entertainmentnews.com
greatytene.com
hiroshiwakita.com
iktodaypk.com
jahatsakong.com
meadowbrookgolfgroup.com
newsbharati.net
platinumstudiosdesign.com
slotxogamesplay.com
strikestaruk.com
trucosdefortnite.com
ufabetrune.com
weddedtowhitmore.com
12940brycecanyonunitb.com
1311dietrichoaks.com
2monarchtraceunit303.com
601legendhill.com
850elaine.com
adieusolasomade.com
andora-ke.com
bestslotxogames.com
cannagomcallen.com
endlesslyhot.com
iestpjva.com
ouqprint.com
pwmaplefest.com
qtylmr.com
rb88betting.com
buscadogues.com
1007macfm.com
born-wild.com
growthinvests.com
promocode-casino.com
proyectogalgoargentina.com
wbthompson-art.com
whitemountainwheels.com
7thavehvl.com
developmethis.com
funkydogbowties.com
travelodgegrandjunction.com
gao-town.com
globalmarketsuite.com
blogshippo.com
hdbka.com
proboards67.com
outletonline-michaelkors.com
kalkis-research.com
thuthuatit.net
buckcash.com
hollistercanada.com
docterror.com
asadart.com
vmayke.org
erwincomputers.com
dirimart.org
okkii.com
loteriasdecehegin.com
mountanalog.com
healingtaobritain.com
ttxmonitor.com
nwordpress.com
11bolabonanza.com