25 Comments
User's avatar
Sabina Gazic's avatar

Well, what Stephen said, it can be the problem treating philosophy and the world around us like a computer language. In philosophy, you object, for example, using ‘free will’ or ‘the gaze’ as valid philosophical concepts because of the ambiguity of their meaning. But computer coding will not help you with solving that problem, I think. If you use an ambiguous object as an input you’ll still get, let’s say, unexpected value as a result. It’s not the functions that are the problem in philosophy or the understanding the world, but how we define the concepts or the objects. 😏

Expand full comment
Eldar Sarajlic's avatar

The thing about programming, as I understand it, is that you can’t really be good at it if you don’t define your concepts well.

Good programming practice forces you to be clear, precise, and modular in your conceptual engineering.

That’s why I think it is uniquely beneficial for learners of all backgrounds.

Expand full comment
Sabina Gazic's avatar

But the same goes for philosophy, isn’t it? I’m in programming for over 30 years and just getting started with philosophy. So I really do wonder how you see computer coding can help you in defining complex philosophical concepts? The logical functions that are both used in philosophy and computing are not the issue, i think. What the problem might be are the concepts used in premises/code. But I may not understand you properly….☺️

Expand full comment
Eldar Sarajlic's avatar

Yes, the same goes for philosophy. That’s why I don’t see them as radically different but complementary. There is a reason why you, a computer scientist, like philosophy, and me, a philosopher, like computer science. 😀

Expand full comment
Sabina Gazic's avatar

Understanding (and possibly controlling) the mess called life? 😂

Expand full comment
Eldar Sarajlic's avatar

Yep 😀

Expand full comment
Stephen Gruppetta's avatar

I’ll need to reread to digest this, but what a fascinating idea. I love the intersection between philosophy and programming. I’ve always wanted to learn more about philosophy. Perhaps translating Python concepts is the way to go!

Expand full comment
Eldar Sarajlic's avatar

Thanks, Stephen!

I do plan to write a longer piece (perhaps even a book) called Python for Philosophers, where I’ll expand more on this.

I’m sure I’ll have a lot to learn from your writing too!

Expand full comment
Alejandro Piad Morffis's avatar

I want to do the EXACT opposite! Philosophy for Pythonistas.

Expand full comment
Stephen Gruppetta's avatar

Looking forward to it. And the symmetry is perfect since OOP was primarily developed to make programming look and feel a bit less like the computer sees it and a bit more like humans see the world.

In Python we often say that "everything is an object", as, I suppose, everything is in an "instance of a concept" in the world around us.

And every operation, every interaction, every process in Python is controlled by some special method in some class, often hidden from the main stage—so, everything is controlled by some feature of one of the concepts.

Composition in OOP is another concept that fits perfectly to your thoughts above, when an object has another object (or a different class) within it

Expand full comment
Margeret Heath's avatar

I find your discussion of Difference and Rhizome somewhat reductionist, contracting both ideas to their most denuded form, thus destroying the nuance, ambiguity and subtly of their intended construct. One does need to be able to play with fuzzy concepts, imbued with legacies of cultural references, and appreciate their multiple nature, before applying the scalpel in order to make the knife.

Expand full comment
Margeret Heath's avatar

Hi! So this might sound nuts, but seriously, get yourself a thesaurus, and a French thesaurus. Also, if you look at artwork, visual imagery of these ideas, it really helps (my) mind grip the ideas more tangibly cognitively. With most of the European philosophers- well any philosophy really - they read deep and wide. Poetry, literature, arts, sciences, everything. Also, I find trying to form a gestalt before I try to cleave and cut, helps me contextualise. In a sense it’s engineering, but with fuzzy logics, not neat definitions with itemised characteristics reduced to their leanest form. If you’ve read or listened to any Iain McGilchrist you’ll know what I mean about not leaning too heavily too soon into left-brain analytics. Let the mind range free to explore the associations bound-up in that imagery. I can recommend Richard Kearney on all of the French philosophers. I think you’ll appreciate his way of unpacking our more obscure Continental philosophers. He writes particularly on Philosophy of the Imagination which might be a rich seam to explore.

Expand full comment
Eldar Sarajlic's avatar

Thanks, I’ll check that out!

Expand full comment
Eldar Sarajlic's avatar

Maybe you're right, I don't know.

It's just that I have rarely seen these concepts used to explain something 'in the wild' in such a way to increase my understanding. Every time I read something where these two concepts are used I ended up being even more confused about what I was reading.

That was my partial experience, could be that I have not read enough.

Do you have anything to recommend? What should I read to see the usefulness of these two concepts? Please don't say either Derrida or Deleuze, I can't read that stuff anymore, bores me to death.

Expand full comment
Luke's avatar

Wait until you analyze monads in functional programming

It goes right into *theology* and ideas of *purity*. I’ll never forget talking about theological concepts like hypostatic union with a Haskell programmer and he caught on basically immediately and started relating it to monads!

Expand full comment
Eldar Sarajlic's avatar

Thanks, I’ll check that out too!

Expand full comment
Lorenzo Bradanini's avatar

one of the best articles that I've read so far this year. Huge congrats for this post

Expand full comment
Eldar Sarajlic's avatar

Thanks, Lorenzo!

Expand full comment
Malcolm Storey's avatar

re Platypus: modern biology regards each taxon (platypus, mammal, reptile) as being comprised of ALL and ONLY the descendants of a single ancestral individual. There is no fuzziness. When this isn't the case the taxon is polyphyletic, paraphyletic etc. and the classification needs to be revised to fix this. What you describe is "identification", the attempt to put the correct name on a specimen.

Expand full comment
Alejandro Piad Morffis's avatar

Oh man this is easily one of the best things I've read online in ages. I laughed my ass at many of your references, it was so refreshing. The last part about oop and concept creation is very on point. II teach it the opposite way, my CS students first learn oop and then, in the later years of the major, we'll have philosophical discussions about, you know, AI and consciousness and whatnot, and we get to pull on all these conceptual resources from basic software engineering.

Now here's one for you: the rules that make classes and instances work in Python, what is called a "type system", is what's called nominal typing, which is the traditional type system in OOP. That is, we say GuideDog is a Dog because you explicitly declared so. But in Python you also have a form of structural typing, which is kinda things are what they look like. So you can say, for example, anything that has a .swim() method is something that can swim, regardless of where in the class hierarchy it lies. Python calls this "duck typing". If it swims and quacks, it's a duck.

Now my question from you is, how does this look like in philosophy? Is there such a difference in where concepts come from?

Expand full comment
Eldar Sarajlic's avatar

Thanks, Alejandro! We’re all attacking the same beast, just from different directions 😀

I don’t know enough about these differences between nominal and structural typing to give a good answer, but this reminds me of something from graphic design: the Bauhaus dictum that ‘form should follow function’. Is this the distinction you mean? One where function follows the form and another where form follows the function?

Expand full comment
Alejandro Piad Morffis's avatar

Well maybe it's kinda like that, let me elaborate a bit.

In nominal typing you declare how things are related to each other, and then the language forces you to honor that declaration. Your GuideDog has to behave like a Dog to some extent (look out Liskov's substitution principle), but in structural typing is kind of the opposite, you don't declare beforegand this is a Dog, you just define a thing with some functionality (some structure, actually, that is, some methods with specific signatures), and then wherever you need, you can create a new concept out of thin air by saying now in this function I need something that barks, and the language will (if it has type checking) only let you use an object whose type has the requested structure. So you kinda create types when you use them, instead of when you implement them.

Hope it makes a bit more sense ;)

Expand full comment
Eldar Sarajlic's avatar

Yes, it does, I get it now. I guess the difference between analytic and continental philosophy could map nicely to it, where analytic could be nominal (determining the structure and set membership beforehand) and continental structural (declaring things as concepts in context, or as needed).

Expand full comment
Eldar Sarajlic's avatar

The caveat is that in continental philosophy you’d rather call this approach ‘post-structural’ than structural, though.

Expand full comment
Alejandro Piad Morffis's avatar

That's interesting, I was under the impression the difference between analytic and continental was more or less the same as empiricism versus rationalism...

Expand full comment