Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

The problem is is. Is it not?

Al­gu­no­s, por al­gu­na ra­zó­n, ha­cen es­to:

>>> a = 2
>>> b = 2
>>> a == b
True
>>> a is b
True

Y des­pué­s, cuan­do ven es­to, se sor­pren­den:

>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False

Se sorprenden porque "2 es 2" es más intuitivo que "1000 no es 1000". Podría atribuirlo a una tendencia innata al platonismo, pero en realidad es porque is no es eso.

El operador is es (en CPython) apenas una comparación de direcciones de memoria. Si los objetos a y b son el mismo cacho de memoria, entonces "son" el otro. Como python crea de antemano una cantidad de enteros pequeños, cada 2 que creás no es un nuevo 2, sino otra vez el 2 de la última vez.

Es­to fun­cio­na por dos mo­ti­vo­s:

  1. Los en­­te­­ros son so­­­lo le­c­­tu­­ra. Po­­­dés te­­ner mu­­chas va­­ria­­bles que "co­n­­tie­­nen" el mis­­mo 2, po­r­­que no lo pue­­den ro­m­­pe­­r.

  2. En py­tho­n, la asig­na­ción es tan só­lo crear alia­ses. No se ha­ce una co­pia de 2 cuan­do se ha­ce a = 2, so­la­men­te se di­ce "a es otro nom­bre pa­ra es­te 2 que ten­go acá".

Esto sorprende a la gente que viene de otros lenguajes, por ejemplo C o C++. En esos lenguajes, una variable int a nunca usaría la misma memoria que int b porque justamente, una variable es un pedazo de memoria, y se puede cambiar el contenido. En C y C++, los enteros son mutables. Este 2 no es ese 2, a menos que lo hagas intencionalmente con punteros.

De he­cho, la for­ma en que la asig­na­ción fun­cio­na en py­thon lle­va a otras sor­pre­sas que son más in­te­re­san­tes en la vi­da rea­l. Por ejem­plo:

>>> def f(s=""):
...     s+='x'
...     return s
...
>>> f()
'x'
>>> f()
'x'
>>> f()
'x'

Eso no sor­pren­de na­da. Aho­ra, ha­ga­mos un pe­que­ño cam­bio:

>>> def f(l=[]):
...     l.append('x')
...     return l
...
>>> f()
['x']
>>> f()
['x', 'x']
>>> f()
['x', 'x', 'x']

Y eso sí es sorprendente, si no lo esperabas. Sucede porque las listas son mutables. El argumento por default se define cuando la función se define, y cada vez que llamás f() estás usando y devolviendo la misma l. Antes, también usábamos siempre la misma s pero como los strings son inmutables, nunca cambiaba, y devolvíamos una nueva cada vez.

Podés comprobar que no te miento, obviamente que usando is. Y ya que estamos, eso no es un problema para listas. Es un problema para los objetos de cualquier clase que vos definas, a menos que los hagas inmutables. Así que seamos cuidadosos con los argumentos por defecto, ¿ok?

Volviendo al problema original de que 1000 is not 1000, lo sorprendente es que en realidad, no es interesante. Los enteros son fungibles. No te importa que sea el mismo entero, solo que sean iguales.

Com­pro­bar iden­ti­dad de en­te­ros es co­mo si me pres­ta­ras $1 y cuan­do te lo de­vuel­vo, en vez de ver si es una mo­ne­da de $1, te fi­ja­ras si es la mis­ma mo­ne­da. Sim­ple­men­te no im­por­ta. Lo que que­res es un 2, un 1000 o una mo­ne­da de $1.

Además, el reultado de 2 is 2 depende de la implementación de python. No hay motivo, en realidad, mas allá de una optimización, para que sea True.

Es­pe­ran­do que es­to acla­re el te­ma, les de­jo un úl­ti­mo frag­men­to de có­di­go:

.. code-block:: pycon
>>> a = float('NaN')
>>> a is a
True
>>> a == a
False

UP­DA­TE: Mu­chos co­men­ta­rios ite­re­san­tes en re­ddit y una con­ti­nua­ción chi­qui­ta acá

¡Hola!

Por otro la­do, no so­y:

  • Ro­­­be­r­­to Al­­si­­na, que vi­­ve en Hous­­ton y es ac­­ti­­vo en la co­­­mu­­ni­­dad ar­­gen­­ti­­na de la re­­gió­­n.

  • Ama­­do Ro­­­be­r­­to Al­­si­­na, po­­­lí­­ti­­co pa­­ra­­gua­­yo.

  • Ro­­­be­r­­to Ariel Al­­si­­na (a­­lias Ro­­­ber­s­­to­r­­m) que an­­da en mo­­­to.

  • Ro­­­be­r­­to Al­­si­­na, ar­­qui­­te­c­­to pue­r­­to­­­rri­­que­­ño.

  • Ro­­­be­r­­to Al­­si­­na, que vi­­ve en Vi­­lla Ale­­ma­­nay fué al Co­­­le­­gio Bu­­cki­n­­gha­­m.

  • Ro­­­be­r­­to Al­­si­­na Rui­­ba­­l, que oja­­lá es­­té usan­­do una pe­­lu­­ca en esa fo­­­to.

  • Ro­­­be­r­­to Go­n­­za­­les Al­­si­­na, que vi­­ve en Ca­­ne­­lo­­­nes, ciu­­dad ape­­ti­­to­­­s­a.

  • El TE­­MI­­DO Ro­­­be­r­­to Na­­va Al­­si­­na que con 15 añi­­tos an­­da ha­­cien­­do go­­­les en una li­­ga ama­­teur en al­­gu­­na pa­r­­te.

  • Ro­­­be­r­­to Le­­bron Al­­si­­na (ten­­go un ca­­chi­­to más de pe­­lo)

  • Ro­­­be­r­­to An­­to­­­nio Gó­­­mez Al­­si­­na, ac­­ti­­vis­­ta contra la tau­­ro­­­ma­­quia.

Oja­lá es­to acla­re las co­sas. Gra­cias por su aten­ció­n.

Re-Editar Drácula: Proyecto que me gustaría que alguien agarre.

This post makes no sense in en­glish, so span­ish on­ly!

Drácu­la es un li­bro muy par­tic­u­lar. Casi to­do el mun­do cree que sabe de qué se trata, pero en el 90% de los ca­sos no es así. O sea, sí, saben que es de un vam­piro, blabla.

Lo que no saben es na­da del li­bro. Saben de las pelícu­las, del es­pe­cial de Scoo­by Doo, de­los chistes de vam­piros, y cosas así, pero el li­bro en sí, no lo han leí­do.

¡Y es una lás­ti­ma! Es un li­bro muy in­tere­sante. Para la época que se pub­licó, tiene un es­ti­lo dinámi­co y poco ver­bor­rági­co. Es­tá lleno de ac­ción, es­ce­nas mem­o­rables (no es raro que se hayan he­cho tan­tas pelícu­las), per­son­ajes in­tere­santes. ¡Y enci­ma es un li­bro tec­nó­filo! No es una lec­tura forza­da leer Drácu­la co­mo una mi­cro-­ex­pre­sión de la lucha en­tre la cien­cia y la téc­ni­ca pos­i­tivista con­tra la cul­tura me­dieval reac­cionar­i­a, o cosas así.

Y en­ton­ces, cuan­do el otro día ví, en Work of Art (un re­al­i­ty), a un­os dis­eñadores crear tapas para Drácu­la, se me ocur­rió:

Edite­mos Drácu­la

Agar­remos el orig­i­nal, que es de do­minio públi­co, hag­amos una tra­duc­ción mod­er­na, hag­amos ebook­s, y quién te dice, una edi­ción en pa­pel. Re­galé­mosle a la gente la posi­bil­i­dad de leer una ver­sión mod­er­na de este li­bro buenísi­mo. Una tra­duc­ción que no sea cas­ti­za, ni dé vergüen­za hablan­do de "esto­fa­do con pol­vo de pimien­to ro­jo" si no que di­ga goulash, o por lo menos "esto­fa­do con pa­prika".

Yo ten­go un po­quito de can­cha ha­cien­do type­set­ting de li­bros. Se­guro que se puede con­seguir ilustrador/a/es co­pado/a/as/os para la tapa, tí­tu­los (¡o para ilus­trar in­ter­cal­ado!)

Y... lo mejor es que:

  1. Es un li­bro rel­a­ti­­va­­mente cor­­to

  2. Es­­tá es­­crito en muchas vo­ces dis­­t­in­­tas. No es­­­taría buenísi­­mo que Mi­­na Hark­er lo es­­cri­­ba una mu­­jer? Que Van Hel­s­ing es­­cri­­ba to­­tal­­mente dis­­t­in­­to que Lucy?

En­ton­ces: se nece­si­tan muchas cosas, pero más que nada, se nece­si­tan tra­duc­tores.

¿Quién quiere salir en la tapa de este li­bro? ¿Quién quiere traer al autén­ti­co Drácu­la, el vam­piro en se­ri­o, un autén­ti­co ma­cho de los cár­patos, de vuelta a la vi­da?

Anótense en los co­men­tar­ios.

Vivir en Zork

You are in an open field west of a big whi­te hou­se wi­th a boar­ded front door.

The­re is a sma­ll mail­box he­re.

>

Vi­vi­mos en la edad do­ra­da del tex­to. La gen­te es­cri­be más que nun­ca. La gen­te lee más que nun­ca. Ape­nas unos años atrá­s, el me­ca­nis­mo pre­fe­rio pa­ra con­tac­tar­se con otra gen­te eran las "lla­ma­das te­le­fó­ni­ca­s", ex­tra­ño pro­to­co­lo ba­sa­do en so­ni­do. Que an­ti­guo le pa­re­ce eso a la per­so­na mo­der­na, que ti­pea men­sa­jes en cual­quie­ra de los mil sis­te­mas de men­sa­je­ría ac­tua­le­s.

Cla­ro, tam­bién to­ma­mos más fo­tos que nun­ca, y fil­ma­mos más vi­deo que nun­ca por­que es­ta­mos en una edad do­ra­da de la in­for­ma­ció­n, en ge­ne­ra­l. Pe­ro eso era más o me­nos es­pe­ra­do.

¿Quién es­pe­ra­ba, ha­ce 20 año­s, que los chi­cos pre­fe­ri­rían man­dar­se men­sa­ji­tos uno a otro en vez de lla­mar­se por te­lé­fo­no? ¿Quién es­pe­ra­ba que la gen­te pre­fi­rie­ra leer men­sa­jes en vez de es­cu­char­lo­s?

Y eso es ra­ro, por­que des­de que ten­go me­mo­ria ven­go le­yen­do que los jo­ven­zue­los no leen ni es­cri­ben tan bien co­mo los ve­te­ra­nos (club del que aho­ra for­mo par­te, su­pon­go­). Esa te­mi­da fal­ta de "com­pren­sión de tex­to es­cri­to­", y los pi­bes que no en­ten­dían que corno leían. Cla­ro, po­dían re­pe­tir las pa­la­bra­s, pe­ro el hi­lo se les es­ca­pa­ba.

¿Pe­ro por qué es que esos chi­cos que no pue­den leer ni es­cri­bir leen y es­cri­ben tan­to? ¿Es una pa­ra­do­ja? ¿O es que cuan­do les em­pe­zó a in­te­re­sar lo que leían, re­sul­ta que sí en­tien­den?

O tal vez en­ten­der lar­gas hi­la­cio­nes no es de lo que se tra­ta cuan­do uno lee hoy en día. Tal vez leer es ob­te­ner mu­chos pe­da­ci­tos de da­to­s, y la co­rre­la­ción se ha­ce en la ca­be­za, en vez de que te la den ser­vi­da en ban­de­ja, es­cri­ta en tex­tos lar­gos y en­ten­di­ble­s.

> open mailbox

Opening the mailbox reveals:
A leaflet.

Tal vez el pro­ble­ma con los tex­tos lar­gos y la com­pren­sión de los mis­mos es que son de­ma­sia­do es­pe­cí­fi­co­s. Una vez que ex­pli­cás to­do, es abu­rri­do, y la men­te di­va­ga. Tal vez hay que man­te­ner to­do corti­to y abier­to. Tal vez el lec­tor quie­re unir los pun­tos por su cuen­ta.

> read leaflet

Taken.
Welcome to Zork (originally Dungeon)!

Dungeon is a game of adventure, danger, and low cunning. In it
you will explore some of the most amazing territory ever seen by
mortal man. Hardened adventurers have run screaming from the
terrors contained within.

Así que tal vez la for­ma de es­cri­bir en el si­go XXI es cor­ta y evo­ca­ti­va, en vez de as­tu­ta y cha­mu­lle­ra. Tal vez ha­ya que te­ner un com­po­nen­te de jue­go, y el lec­tor ga­na me­da­llas ima­gi­na­rias ca­da vez que pes­ca al­go de lo que lee, co­mo en un jue­go de al­go­vi­lle o co­saci­ty que te dan pre­mios in­sig­ni­fi­can­tes por irri­so­rias ta­reas lo­gra­das con es­fuer­zo inú­ti­l.

> go west

You are in a forest, with trees in all directions around you.

O ca­paz que es al re­vé­s. Ca­paz que leer (o es­cri­bi­r) se di­vi­dió en dos co­sas dis­tin­ta­s. Una lec­tu­ra al­ta, que es la tra­di­cio­na­l, y una ba­ja que es cor­ta y fun­cio­nal pe­ro no muy in­te­re­san­te.

> go west

Forest

Y tal vez por eso te­ne­mos co­sas co­mo las no­ve­las de Chi­na Mié­vi­lle,­lle­nas de ra­re­za por la ra­re­za mis­ma, pe­ro di­ver­ti­da­s, y co­sas co­mo twi­tte­r, lle­nas de ca­pri­cho­s, ins­pi­ra­ción y co­ne­xio­nes aza­ro­zas (bue­no, yo si­go gen­te co­pa­da), y blogs lle­nos de mis­ce­lá­nea in­co­ne­xa, y 9gag lleno de co­sas que, ho­nes­ta­men­te, no de­be­rían ser gra­cio­sas.

> reset

Starting over.

PS: http://www.­cra­z­y­ga­me­s.­co­m/­ga­me/­zo­rk


Contents © 2000-2020 Roberto Alsina