Adam Mayer explains pointers to art students

I don’t have a background in CS. In fact I got my degree in Crafts. Yes, you can get a degree in Crafts. And I have one.

Most of my programming skills are self-taught, which is fine most of the time but occasionally gets me into trouble. Recently I learned about pointers the hard way, and to help clarify things my friend Adam broke it down into art school terms for me. It was so hilarious (and helpful) that I’m reposting it here.

You’re telling me you went through art school without once discussing referers and referents? WHAT KIND OF PUNK-ASS ART SCHOOL DID YOU GO TO? Let me break it down to you in art-school terms, then:

In python, you can think of all variables as pointers. All they do is point to objects. When you say:
>> constructivism = 6
You can think of this as creating an “integer object” with a value of 6. Constructivism is not itself 6 (which is to say, constructivism is not “6” in the way that brutalist materialism might be “6”). Instead, constructivism is a variable which points to this newly created
integer object with a value of 6. If you were to say:
>> constructivism = []
or
>> constructivism = Socket()
then you’ll be creating an new empty list object, or a new socket object, and then constructivism will point to that instead.

That’s all pretty simple. Then there’s this:
>> futurism = constructivism
Now, constructivism is already a pointer to something else. Futurism, however, will not point to constructivism itself: instead it will point to whatever constructivism points too, much like in 1991 Saatchi did not point at Damien Hirst, but whatever Damien Hirst was pointing at at the time; in this instance a dead shark. Note that while Damien Hirst went on to point at other things, Saatchi is still pointing at the dead shark. So:
>> hirst = Shark( dead=True )
Hirst is now pointing at a dead shark.
>> saatchi = hirst
Saatchi is now pointing at the same dead shark. Now,
>> hirst = Skull( bling=True )
Hirst is now pointing at a blinged-out skull, but Saatchi is still stuck on the shark.

When two variables are pointing at the same thing, they both see any changes made to that thing over time. So, for example, look at the following code:

>> # note that hirst does not make the shark himself, but calls a constructor
>> hirst = Shark( dead=True )
>> saatchi = hirst
>> print hirst.living
False

Both Hirst and Saatchi are referring to the same dead shark. But, later:

>> # Saatchi uses his money to bring the shark back to life
>> saatchi.ressurect()
>> print saatchi.living
True
>> print hirst.living
True

However, let’s move on:
>> hirst = Skull() # Hirst has moved on to other dumb shit
>> # What doth life?
>> print hirst.living
AttributeError: Skull has no attribute 'living'

… because hirst now points to a skull, and not the shark.

I could go on, but I’m impatient to see what google ads start popping up for this thread.

-a
(Actually, you probably really need to hear about scoping, but I’ll do that in terms of objectification and the male gaze.)

Filed under: Programming

Tags: , , , ,

4 thoughts on “Adam Mayer explains pointers to art students

  1. Rose says:

    Thank you so much for putting this on the open web! Other people need to see it.

  2. phooky says:

    Variable scope can be interpreted as a man looking out the window of an express subway car as it passes a local platform and then hurtles beyond into yawning gulf of molten lava. He may vacantly stare into space (a null reference, or “None” in python parlance) or direct his gaze at a particular woman on the platform (the “object”). It is possible, as the train screams along the rails towards its diabolical fate, that the man may at some point focus on another woman, or even many, one after the other. The fact that the man is now gazing at another woman does not mean that the prior woman is somehow destroyed: only that his wild, feverish eyes have now focused on another. Likewise, when the platform has rushed past and his scrotum tightens in a final spasm of fear as the subway car lurches sickeningly into the void, he can be said to have gone “out of scope”. The variable has disappeared, and there is now no way to know what he was gazing at in his last terrified moments; that information has been lost. However, it’s important to note that the variable’s de-scoping does not effect the lifetime of any objects referred to by the panicked observer.

  3. Matt says:

    All memory should be Free().

    Death to malloc()ers!

  4. AmazonV says:

    HA! Adam is smart and funny, good thing he knows art and CS

Leave a Reply

Your email address will not be published. Required fields are marked *