The attentive programmer
Published July 11, 2024
This video features Daniele Procida at DjangoCon Europe 2019 in Copenhagen, Denmark.
https://2019.djangocon.eu/talks/nothingness-and-identity-in-python-and-django/
By Daniele Procida: https://twitter.com/evildmp
Daniele Procida connects programming with philosophical questions about being, identity, equality, and nothingness. Python and Django make distinctions that ordinary language hides concrete: `None`, zero, empty collections, empty strings, database `NULL`, form `blank`, object identity, and equality can all look similar while behaving differently. Using Plato and Aristotle, he compares abstract, class-based models with concrete, prototype-based ones, while stressing that neither philosophical direction is simply right. He argues that programmers are unusually well placed to think clearly about ontology and logic, but also warns that programmers who shape platforms used by billions can influence society in profound and unsettling ways.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: To be honest, I'm most anxious about this microphone because I went to a conference and spoke and when I saw the video, the headset was sticking out of the top of my head like that and It looked perfectly absurd, so I'm hoping that you've done it. Thank you very much, yeah. Okay. So yeah, um identity and nothingness in Python and Django. But before I say uh anything else, I want to say thank you for for being here. DjangoCon Europe is really a wonderful thing and I'm very happy to be part of it once again And thanks to everyone who's been a part of the team that has put this together. The discussions about this Jacokon started in Heidelberg last year. at the last DjangoCon where I met Benjamin and Emile
Speaker 1: and we first talked about the possibility of a Danish Django Con Europe. So what you're what you've been enjoying this week is the result of a year's work. And so please a special thank you to Benjamin and Emile and all the team and we're very grateful for everything that you've you've done. That's me. That's my favorite photo. You can get in contact with me by email. I sometimes bother to look at Twitter, but honestly it's possibly the worst imaginable way of that human beings have found to communicate with each other. So I don't use it very much.
Speaker 1: I am a Django core developer. I I should point out that I am the an ex-vice president of the Django Software Foundation. I'm not doing that anymore. I did it for three years and it was very enjoyable, but I'm afraid it's no longer my responsibility. I should mention that because so many people have talked to me about it today. I work for Divio. Many of you know Divio. We are sponsoring the conference. We're sponsoring the speech to text as we've done for for several years. Which is a really nice part of of this event. Thank you, uh Cheryl and Julia back there for all your typing. What we do is we we have
Speaker 1: a cloud platform for Python and Django hosting. So the idea is that you're an application developer and that's what you like doing. And so You give your applications to us to run so that you don't have to worry about them. So it's like you sleep while we drive. And I'm doing a um a workshop tomorrow. It should have been on Wednesday, but um for personal reasons I couldn't be here in time. Uh but I never wanted to do DevOps, uh which is for application developers who are interested in exploring um cloud deployment things like Docker and containerization and uh questions of maybe code portability that haven't occurred uh before. That'll be on Saturday at twelve o'clock.
Speaker 1: So it'll be quite an introductory thing, but it's hands-on. I I can hear a bit of noise as I move around, so I'm sorry if this noise from the microphone is disturbing you but uh I don't suppose there's anything we can do about that. Oh, and the other thing that's really important to me is my involvement in the African Python communities and their events. Um at this Django Khan we've got attendees from Namibia, Uganda, Kenya, uh Nigeria, Ghana, maybe there are others but I didn't meet them. But I've never met so many African attendees before at uh a DjangoCon. So take this opportunity to speak to them, find out about Python and Django in their countries, and perhaps visit one of those. events too. So
Speaker 1: wild horses wouldn't prevent me from going to uh the first African PyCon. So please take a look at that. Right, uh where's my ward? I'm so sorry about this noise. I'm not sure what it's banging against. My my skull I I think the banging's coming from me, but I'm not sure what we can do. So anyway, this is a sixteenth century fresco. In the Apostolic Palace in the Vatican. And it depicts um mainly uh thinkers and scholar uh scholars and thinkers uh mainly from antiquity. It's by uh Raphael And if we zoom into
Speaker 1: the center, here at the center are, by the way, also at the center of attention, as you can see, they are Plato and Aristotle. Aristotle who was uh Plato's most famous pupil, and like all good pupils, felt obliged not just to learn from his teacher, but to respond to him too. And we have Plato pointing towards the heavens in reference to a world outside space and time, one belonging uh to the pure forms. That the things in our material world are just kinds of shadowy copies of. And Aristotle is answering him and he's pointing down to the material world, because he argues that form only exists as the form of substance, and that
Speaker 1: Knowledge and truth require us to generalize from the concrete and the particular, so we abstract from the particular And these two directions of thought represent the most the single most important axis in Western philosophy. Which do we reach for or turn to first? To universal truths and ideals that lie beyond the world of the senses? or to the actual world that presents it to us it presents itself to us at our feet. Now you can't imagine that you can reduce uh Plato and Aristotle to such a simple dichotomy, it's much more uh subtle and and complex than that. But still, this difference represents two different directions of thought.
Speaker 1: And you don't need to be a student of philosophy to to recognize them. And people generally recognize themselves. Some of you will will will do this. You'll have intellectual sympathies already right now that generally resonate with Plato's and some will find themselves more by inclination inclined to the um uh to the Aristotelian This doesn't mean that people are Platonists or Aristotelians or that they do or don't believe in a world of universal pure forms, but that generally speaking, they find themselves Inclined to prefer a certain direction or way of thinking. And you can use the access represented by these two different directions as a key to understanding the history of Western philosophy over the last 25
Speaker 1: centuries. We're going to um come back to this. So when I started learning Python, which was 10 years ago this month, I had a very memorable experience. It was a five-day introduction to Python and Django, and we were given a handbook. And uh as you can see, I lived in that handbook for years afterwards. It was literally always open on my desk beside me, and every page looked like that because that It became the place where I put down my coffee cup. And I took it home one evening in that very first week and I showed it to my girlfriend Carol. And she leafed through it and then she exclaimed, functions, classes, and attributes, it's Aristotle. And in his ethics, Aristotle is concerned with virtue. He argues that the defining human function is rational activity. And he's very interested in the relationship between what a being is
Speaker 1: and what a being does. And I mentioned this to the person who was giving us our training the next day. His name was Ian Millington, whom some of you may actually know. And it turned out that as well as having uh earned a doctorate in the field of artificial intelligence, His first degree was in theology and so he was familiar with these ideas. We had three of my colleagues in the room with us And Ian and I were animatedly discussing Aristotle and reason and Python functions and the human soul. And after enduring a few minutes of this, one of my colleagues announced I'm a creationist and this talk about functions and reason is making me feel very uncomfortable, which I wasn't expecting him to say. So I was completely puzzled and not entirely sure whether he was teasing me with a joke
Speaker 1: or if I'd misheard and I asked him Um what about it made him feel uneasy? And my colleague Ben said, You needn't look so surprised. I'm a creationist too. At this point my mouth was hanging open a bit. I don't think I looked very intelligent. And then my third colleague said, Daniela, you're outnumbered. I'm also a creationist. So I was a little bit stunned and there were so many things I wanted to ask, like Should we accept Aristotle's account of virtue as a disposition? Or what do you make of Aristotle's conception of function as defining activity rather than purpose? Or do you identify a contradiction between Aristotle's form substance dualism and a creationist account of the soul?
Speaker 1: So all these things were going around in my head in quick succession. But the only one that formulated itself into anything resembling an actual coherent sentence was, What about the dinosaurs? And Fortunately Fortunately I didn't actually blurt that out. And if there's one thing I've learnt in life, it's to recognize when I'm outnumbered. So I as intrigued as I was I didn't pursue the question, but I've never forgotten that experience and I marveled at how quickly we got from basic concepts in programming to ideas in metaphysics and um and ontology that weren't only important to uh academic philosophers, for example, but could also resonate with people who had not studied philosophy or theology, and those ideas had the power to shake
Speaker 1: people. And shaking people is exactly what important philosophical concept concepts tend to do. Philosophical concepts are literally at work, uh they're literally expressed in programming itself We find them expressed in code and we work with them when we think and talk about our code. And this has become more obvious The more I see of it, how deeply embedded in programming these ideas are. Obviously, logic is a branch of philosophy, and programming is putting together sequences of logical operations. But as the experience with Aristotle and functions suggests, Maybe it's deeper and more interesting than that Now for a programming beginner like me, um
Speaker 1: this connection gave me something quite useful to hold on to, a way into understanding programming concepts. Through things I was already familiar with. I already knew my way around things like attributes and ontologies and identity and truth and nothingness and so on around types and instances and abstract classes. Not because And you they were necessarily because these things are contested and troublesome in philosophy, whereas in programming at least somebody's gone to the trouble of defining them very strictly for you. But they were things that I was used to tangling with. I was on familiar territory. And another thing I really enjoyed uh were the declarations about programming, which seemed often very mysterious and poetic. My handbook said
Speaker 1: functions are first-class values. It said values have type, variables don't. And it reminded me of Wittgenstein. Truth functions can be arranged in series. Or Kant. Existence is not a predicate. I really couldn't judge whether these declarations were true or what their implications were. And I wasn't sure what kind of things they were, were they axioms or necessary truths or discoveries? But I could tell that they seemed to be significant significant declarations about something important. And reading statements like these about Python reminded me of the feeling I had when I was first studying philosophy and encountering things like this in philosophy. I couldn't judge necessarily whether these statements were true or false, but they seemed really strongly to lie upon a line of truth.
Speaker 1: It seemed to matter whether they were going to turn out to be true or not. And they were often things that I didn't understand the first time or the twentieth time I read them, but I felt that they demanded that I come back to them again and again until I did. And the same with the things like that that I read About Python. And when you find an idea that seems to lie upon a line of truth, you feel an obligation to follow it and explore it and find out more about it for yourself. Sometimes these statements had the benefit of making me feel superior. Python, my handbook said, correctly distinguishes between an initializer and a constructor. Many languages, like Java conflate the two incorrectly calling this a constructor. Now you can only imagine the pity and scorn I felt for those who might conflate a constructor with an in
Speaker 1: an initializer. And I had literally no idea what a constructor might be, but I knew that I would never be so gauche as to confuse it with an initializer. And in just the same way I enjoyed a kind of superior feeling in philosophy sometimes. Here's Kant um criticizing the resort to philosophical arguments that appeal to common sense as a defiant w uh a convenient way of being defiant. without any insight. So I will take any opportunity to feel a bit superior, even if it's on the basis of no more merit than having chosen a good side to be on. Now, when I started my programming I kept running into surprises that were not unlike the problems that philosophers find themselves with when they start to do things with apparently simple concepts
Speaker 1: For example, even a child learns to use the word nothing with confidence very early on. What are you doing? Nothing. And we use the The word and concept a dozen times a day, not just in speech, but in the thinking that represents and orders the world around us. And we do it without without hesitation or doubt. And just as in philosophy, nothing starts to look more troublesome when we peer at it more closely, the programmer who has to deal with nothing runs into similar. Complications. One of the first things I learned to do was how to check for nothingness as a programmer. And all of a sudden it was a marvel how many different kinds of nothingness there were, how many different kinds of absences of something could exist. There was none and there was zero and there were empty lists and sets and other collections.
Speaker 1: There was the empty string and then in Django model fields I discovered further kinds of nothing. There was null for the database and blank for the forms and they were all not something and they were all different. And in the Django applications I started building, I needed to represent the world to construct a picture, not just of its material, but of its logical form. So let's say I needed to be able to represent actual people. Well yes, I'd need a person model for that. Um so we'd have actual persons in the world, and I'd need to have an adequate account of Actual persons in my own logical representation in my thinking that is. In my Django models, in the database, in the forms, in the output And all the different kinds of nothingness didn't merely make a difference, they made a different kind of difference to it in all of these different
Speaker 1: uh representations. So you can just think about the names and parts of names that people have. Which ones of those can be non-existent or will you allow to be non-existent? How do you code it? What nothingness, what combinations of nothingness will you allow? How will these nothingnesses that you allow affect the way you display them or order them and so on? It turns out to be really complex because nothingness isn't a simple business and it affects everything it touches. Nothing really does matter And I found another abiding fascination on the other side of nothingness and negation in being. So just as negation has its origin in nothingness, so identity has its origin
Speaker 1: in being. Both identity and being belong to the verb to be, and once again, even a child learns very early on how to use simple words like is confidently and correctly. And so does the Python beginner, usually using these notions in simple, successful ways. So the new programmer will have read or been told that is refers to identity while is equal to the double equal sign um refers to equality. But just as in ordinary language we can say seven and seven is fourteen or seven plus seven Um sorry, I got that wrong. We can say seven and seven is fourteen, or seven plus seven
Speaker 1: equals 14, um there isn't too much pressing need to worry about it at first, because they all seem to work in expected ways, like this, until they don't. Because here, although A and B evaluate to the same thing, they are not the same object. And the Python beginner will continue to run into puzzles in which their expectations built on apparently similar outcomes of apparently similar operations are confounded. The two operations are only apparently similar. You might say superficially similar, but I think actually the similarity is at the deepest conceptual level that only a human being would recognize. And that's why human beings get into so much trouble when they're programming because of their Ability to handle deep concepts.
Speaker 1: And the puzzles can catch them out in their code. Maybe you know what's going on here. So we have a a sum and it's And here we have the another sum and okay, A is turns out not to be B But it's equal to it. So and that's very puzzling until you understand what's happening. And the Python beginner will start to explore to find out what the hell is going on here They will learn more about is, what is is and what equality is and what assignment assignment is. And it'll be quite a while before they internalize all these rules and ideas and learn to ask the right kinds of questions. And here it's um because of an implementation in Python where um numbers up to 256 are handled differently from
Speaker 1: Larger ones. So once again, these are ideas that we use in everyday life without hesitation and get away with it, while philosophy has spilt a vast amount of ink trying to understand these things. And it might seem like an awful lot of trouble for such a small word like is. And people lose patience when people make a lot of fuss about small things. They think It might be the same kind of quibbling that's going on that Bill Clinton famously indulged in when he said before the grand jury, it depends on what the meaning of the word is is. And that wasn't a good look, and it's also not a good look to be squirming and sweaty on television when you're being interviewed about your relations with a young intern who was less than half your age But
Speaker 1: the Python interpreter has more patience than a grand jury. And importantly, um Uh it has no powers of understanding. So when we're dealing with it, we'd better be sure that we agree with it on what the meaning of the word is is whenever we use it. And we'd better understand Python's internal metaphysics of being. So I want to return again to the question of Plato and Aristotle. Carol was delighted to read about functions and attributes in Python because it reminded her of Aristotle, and indeed he certainly has a lot to say about them. But since we've been contrasting Plato with Aristotle, let's look more closely. For Plato, our attention should be directed towards the ideal forms of things. because
Speaker 1: the actual things in our worlds of senses are merely shadows or imperfect copies. For Aristotle on the other hand We have to start with the concrete particulars and abstract or generalize generalize from them. Form is found only in hearing in substances. And to me, this actually aligns quite nicely with another distinction. The object-oriented programming we do in Python is class-based, and excuse me if uh this is old news to you, but class-based programming is not the only object-oriented paradigm. Prototype-based programming as used in JavaScript is another. So in class-based programming, we define abstract classes and from those classes we instantiate objects. In prototype
Speaker 1: prototype-based programming, we create concrete objects, so we start with the concrete and use those to create new ones. I say we, I've never done this myself actually. But It's funny, isn't it, that in Plato and class-based programming, we start with the ideal form, the ideal of the object, the blueprint, the class that defines it, that exists in and of itself. Whereas in prototype based programming, the general form of a thing only exists through the concrete. In other words, it seems to me that Plato, not Aristotle is a better model for Python. So um Plato is to Python as Aristotle is to JavaScript, perhaps. Wait, Carol didn't know that, but she's a philosopher, not a programmer. And here we are back again.
Speaker 1: With Plato pointing upwards for the source to the source of truth, the realm of ideas in the abstract, and Aristotle referring to the concrete world around him at his feet And to say that one is right and one is wrong is not the point. But I feel that's a difference that somehow asks us to take sides. For example, any debate now between a pragmatist and an idealist can be overlaid upon the encounter between Plato pointing up and Aristotle pointing down. Not to say that idealists are Platonists. or um pragmatists are Aristotelian, or that their positions are dependent on those of Plato or or Aristotle, just that we can see say that we see how these two uh approaches these different approaches align or fit. So Plato and Aristotle lived 25
Speaker 1: century 25 centuries ago, but their ideas are still alive and at work. And we can engage with them and I love that So let's go back to this question for the last uh time. Which is the one for us, which speaks to us most deeply? And I personally have two answers for this, and sometimes I think this I don't have to choose is really the best answer. But the other times I think the answer is Plato. Obviously. Maybe there's a better way to look at this. Here for the last time are Plato and Aristotle on the walls of the Apostolic Palace, all eyes on them, the centre around which everything else revolves, pointing up and pointing down. And here's John Travolta in Saturday Night Fever, all eyes on him. the center around which everything else revolves, also pointing up
Speaker 1: and pointing down at the same time. And those two directions give us a line. It's a line of truth. We can choose a direction on that line. We don't have to, but we can. And the important thing is not to choose the direction, but to be aware of the dimension it gives us. John Travolta gives us both directions at once. And as I mentioned before, when you find something that seems to be a line of truth You feel obliged to follow it and explore it, to work it out for yourself which direction is yours. And this is the force of the demand that I felt in philosophy to respond to those kinds of things. And of all the people in the world that I've met, the ones who respond to these questions most strongly are programmers.
Speaker 1: Maybe the people who become programmers are predisposed to being alive to these questions. Maybe programming itself seeds something in people. And it's not just the way that they're alive to these questions, it's also the way That programmers seem to be especially well equipped to tackle them. I've never met any other population of people, including actual academic philosophers, who can think And talk about philosophical questions as intelligently and wisely as programmers can. And it's an experience I've had over and over again. There is something in programming that gives people insights into certain kinds of philosophical questions and a clear grasp of certain important concepts. Logical ones, yes, you'd expect that, but also those around ontology and the metaphysics of existence, around identity and nothingness.
Speaker 1: And the conversations I've had with programmers about these things have been consistently more enjoyable and rewarding than the ones I've had with my students, for example, or my colleagues, or as we call them in academia opponents. And I'm sure that if programmers became philosophers, they'd have something to say that would be worth hearing. So here's Kant's treatment of the concept of nothingness. It's a equal in technical rigor to anything you'd find in uh that a programmer could give you. And I'd love to see a philosopher programmer get their teeth into that. Or into his um uh analysis of judgment which he describes as logical functions of unity. There's that word functions again. And I'm pretty sure that a programmer philosopher would have something to say more valuable about it than the reams of worthless rubbish that I've had to read on the subject of Kant's Table of Judgments.
Speaker 1: And I'm not I'm not talking by the way about essays by my undergraduates, but actual books I've taken the trouble to buy And there are so many places to go and things to think about that are directly related to these concepts in uh programming. There's so much that we could continue talking about and maybe it's um much wider and further than you imagine. I love this stuff and programmers are made for it and I find it nothing less than fascinating. And I'm not really sure what to conclude, because I can't give any advice about this. Um programmers are made for this, they seem to be genuinely good at it good at it. All I can say really is Thank you for the conversations and I hope that there are going to be many more of them. Thank you.
Speaker 1: Can I keep the slides up please? Just in case I need to go backwards and forwards. Yeah. Do we have time for any questions?
Speaker 2: We do have quite We do have time for questions, if there are any Okay. I'm stunned. Russell is out of words. Can we please mark that in a calendar? Like thank you.
Speaker 3: Hello. So um you gave basically two examples of links between philosophers and um programming languages. Can you uh give any more examples? Like for example, some programming languages actually embody different concepts of what it means to be a program. like uh uh logical programming or uh um or or data flow programming. These are uh basically different different definitions of the program and um can you give any example of of philosophical concept that would be exemplified by this sort of thing and I know that it's like uh um
Speaker 3: Tackle kind of questions like how to do that.
Speaker 1: I probably could, but now that you've asked me in front of everybody, I I'm not sure if I I can. I I know that, for example, that um I read that the when the Russians were developing their own programming archetypes and paradigms that they had computers that ran on um um they they had computers that ran on uh not uh binary systems, but they had three values in there at the at the very less low level. I'd be very fascinated to um uh know a little bit more about that and what it says about our understanding of logic and truth for example because our understanding of logic and truth is directly connected to our understanding of um binary So that's a kind of lame answer, but as soon as I've left the stage I'll think of a really good one.
Speaker 3: Oh, sorry. Thank you.
Speaker 4: Daniel is always a huge pleasure to learn from you from you. Thank you for allowing us for that And this philosophical point of view, uh quite a slightly provocative question, if you allow me. In Python environment, what would be the place for the a log allegory of the cave of plateau? The
Speaker 1: Plato's allegory of the cave is, I think, quite interesting because uh um if I can try and explain this in a moment, he he he argues that what we see Through our senses, is it's just a kind of shadow of reality. We don't see the true reality, which is only attainable through the understanding and through reasoning, not through the senses, which are a kind of second-rate way of grasping the world. So uh his thought his analogy is of that imagine that we are sitting in a cave and all we can see are shadowy representations on the wall and they're shadows that are being cast by things that are outside the cave in the light So they're only poor copies. So, you know, uh uh if we draw a triangle, if we have a triangle, we'll have a triangle somewhere, it'll have three sides. But it's not a perfect triangle because of course it's
Speaker 1: made of material stuff and even at the atomic level it'll be a little bit wiggly. But it's a triangle because it derives somehow from the ideal class. of the triangle that exists purely as a thing in itself beyond space and time. And the You know, you can't overlay these things completely, so the analogy starts to break down because every single object that I instantiate from my Python class is perfectly good. Unlike the shadowy, imperfect copies that our material reality is. So I don't think you can Press this analogy further than it goes without starting to find out where it breaks down.
Speaker 1: But that's also the point at which you um are already deep enough That it's going to be hard to get out. And then that's why you should the point which you should actually start reading Plato for himself and and will get something out of that. So It's a starting point to say the thick kind of things that I've said, but it's you know don't take that as an authority on Plato or Aristotle, please. Thank you very much, Deb.
Speaker 5: Hi. Okay. Thank you very much for the talk. Um I wanted to know what you thought about if programmers can define functions And define meanings. Does that make programmers gods?
Speaker 1: In the interest of time I removed a very large section on on you know on being God and actually that is very much the experience that I had when I started this programming in Python, building objects and build constructing worlds and constructing the logic of the worlds and the things in the world and I think you know I I felt some sympathy for God after a while here having to make it all
Speaker 5: Yeah well in the beginning was the word right that's what the book says so
Speaker 1: So y exactly, and no wonder he had to go and lie down after a a few days of it because yeah. constructing objects in this kind of programming. So yeah. Thank you.
Speaker 6: Yeah, thank you also for the talk. Um I'm not quite sure if I got everything right. I'm maybe being a little bit too serious about your talk, but Um like after that talk you could think that like uh programmers uh compared to philosophers are like the elite of the society, like creating so many things and defining things and knowing so much about things but um yeah so like what do you think about that and like oh maybe phrase this differently uh Actually philosophers do not really have control of society, right? So they have a length of crazy ideas about society and about like defining everything quite into
Speaker 6: series few categories, but then the M test doesn't usually end up or add up with what happens in reality.
Speaker 1: Yeah
Speaker 6: So do you also see simulation there as well?
Speaker 1: Yes, I I do actually and it um this morning's talk on arsenic was also connected to this because Programmers, we are you said asked about being playing God and in the world of the our Python environment, yes we are. But some of the programmers that are around are actually building Tools that frame the way billions of people think. Billions of people use Facebook And their conception of friendship and relationships and so on are mediated through what has been given to them, in effect, by Mark Zuckerberg, which is a pretty frightening um thought. So He is providing the template
Speaker 1: for the way of thinking that literally billions of people have because it is uh used so much by them and is so become so deeply embedded in their thinking. And and that's quite um that's quite sinister when it comes out of this safe little environment, Python environment, into the real world. Plato, I talked about philosopher programmers, which was an allusion to Plato's idea of philosopher kings. He said, you know, there will never be a just society until um kings become philosophers uh or philosophers become kings. Well uh actually that history has not really borne out that idea and
Speaker 1: I think it would be lovely if programmers became philosophers, but I don't think it would be a great idea if programmers became Kings.
Speaker 2: Thank you. Unfortunately we are pretty much out of time.
Speaker 1: Yeah. Thank you very much.
Programming expresses philosophical ideas directly: logic, identity, truth, nothingness, ontology, types, and instances all appear in code. Thinking about programming can therefore provide a practical way into difficult philosophical concepts.
Discussed at 10:09Python distinguishes among values such as None, zero, empty collections, and empty strings. Django adds separate notions of null for database storage and blank for form validation, and these choices affect how data is represented and displayed.
Discussed at 14:12`is` tests whether two names refer to the same object, while `==` tests whether their values are equal. Two expressions can therefore compare equal without being identical objects, sometimes producing surprising results such as with integers.
Discussed at 16:31The speaker argues that Python’s class-based object-oriented model resembles Plato because abstract classes are defined first and objects are instantiated from them. Prototype-based programming, associated here with JavaScript, is more Aristotelian because it starts with concrete objects and derives new ones from them.
Discussed at 20:20The analogy suggests that sensory reality is like a shadow of ideal forms, while a Python class resembles an ideal form from which objects are instantiated. However, the analogy has limits because Python objects are fully valid instances rather than imperfect material copies.
Discussed at 29:27The speaker says programming can feel godlike because programmers construct objects, worlds, and the logic governing them. He also jokes that this helps explain why a creator might need to rest after doing the work.
Discussed at 31:55The speaker would welcome programmers becoming philosophers because he believes they have valuable insight into questions about existence, identity, and nothingness. He cautions against programmers becoming kings, since giving them direct political power would not necessarily produce a just society.
Discussed at 34:24Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025
Published June 13, 2025