The Philosophy of Computer Science
plato.stanford.eduProps to the Stanford Encyclopaedia of Philosophy, it’s perhaps the best general resource on philosophy on the web
The Stanford Encyclopedia of Philosophy is definitely a step up from Wikipedia's coverage of philosophy, but it comes from a strong and pretty obvious Analytic point of view. For coverage from other points of view (which arguably give more accurate and informed accounts of non-analytic philosophy), you have to resort to classes or books.
It’s a great example of what an editorialized online encyclopedia can be. Would love to learn about other such resources for other fields.
Me too! If anyone has any fantastic niche web encyclopaedia links, link away!
Great article and discussion on it here for anyone trying to build something similar:
Note that there's also the "Internet Encyclopedia of Philosophy" which is, such as the SEP, written by professional Philosophers.
They definitely deserve a shout-out too, these two resources happily got me through a couple of undergrad philosophy electives!
Honest question: is this useful?
Sure: It's designed, like any qualitative model, to yield leverage. Know the laws, understand the principles, and soon you can pull off something amazing. Maybe it guides you into a career path within the broad field of CS, or perhaps you use the principles as metaphor-templates for your personal CS education. "In what way could this Hello World program be described as a mathematical object? Is it an axiomatic theory? What is that?" etc.
What I find problematic about the design here, however, is that it is overly referential at the cost of direct information transfer to the reader. Rather than communicate a logical chain of thought regarding a principle, it communicates that such-and-such a thing is thought by so-and-so to be a this-or-that. It seems to have been produced within a system that prioritizes thought-originator-referencing. Which would be fine except I'd imagine that most people who read "The Philosophy of Computer Science" probably aren't expecting what seems a lot like an extended bibliography.
I think the problem with communicating a logical chain of thought is that it presupposes the idea that logic is immutable and continuous throughout the chain. In sciences, logic is usually fairly immutable because it's not the object of study, so you can show the ideas, without context, and they'll make sense because the frame of reference is constant.
In philosophy, it's usually the case that if you simply presented the idea, without reference to the thinker, you'd definitely provoke misunderstandings, if not incomprehension. Philosophers don't have a common conceptual vocabulary, so when you think a given thinker is referring to a given idea (say, logic) you can really only say for certain that they're referring to their understanding of the idea.
Further, they don't have a common vocabulary for describing ideas - often to the point that you get 'young' and 'old' versions of the same thinker (for instance, Hume) because they use words in different ways within their own corpus.
So, if you wanted to present a logical chain of ideas, you'd have to develop first, your own logic that is a superset of all the contained systems of thought. Then, you'd have to develop a vocabulary that unifies disparate concepts without reducing their complexity.
Predictably, most philosophers have come to the conclusion it's easier just to organize thought by thinkers rather than ideas. Non-philosophers tend to see this as some kind of veiled appeal to authority - but it isn't really. Philosophers are very happy to pervert, break, or alter the corpus of a given thinker in order to do something new with it.
The strength of philosophy depends on rigorous questioning, and rigorous questioning does not tend to lead to monolithic bodies of thought - and that's what you'd need to produce the kind of logical and lexical superset an idea-oriented approach would need to be practical. Without substantial agreement on very many basic questions, such an approach would undoubtedly just do violence to the ideas.
That's the style used throughout the whole Stanford Encyclopedia of Philosophy. My guess is that style is used because it originates from and serves the academic community, where references are the norm.
I agree it'd be cool to see the other version of this too.
Aren’t names always referential, in the sense of refering to a meaning or in the abstract, some memory or experience, or even future experiences, that an interpreter has/is/will have? So is the issue you point out that the names are heavily loaded and proper nouns? And how is that at the cost of information transfer (one might argue it transfers more information since you are sending “heavy words” which decompress to a lot of content under a “lookup”)?
> direct information transfer
Well, all information transfer involves indirection by name, so what you’re getting at is that this lies on a spectrum where the words use are “heavy” and involve lookups where the definitions aren’t in the reader’s cache already? I’m pointing to a parallel here for similar “lookups” in the interpretation of a program by computer ... so maybe the issue is the programs analogous to the way this page is written involve like far network fetches.
This has zero practical usage unless you have a personal interest in the subject, in which case, go for it
Absolutely, because it keeps you from wasting time. Computer programming is applied analytic philosophy and unfortunately very few people realize this. For example, if more people knew about the shortcomings of Platonism, we wouldn't be wasting time on idiotic fads like OO patterns.
> Computer programming is applied analytic philosophy
A program may direct its attention to any sort of digitally represented piece of information–as computer science progresses the things that can be represented expand over time. What in the main analytic philosophers care about are philosophical concepts which are a subset of all knowledge. Therefore by this reckoning computer programming is not applied analytic philosophy.
You are also suggesting that there is some sort of pure/applied distinction within analytic philosophy. That's unorthodox. If there were such a distinction though you're suggesting that software engineering might be the way we take philosophical formalisms and apply them to the world. I think philosophers would argue that philosophy already does that.
Here is a definition of analytic philosophy from Wikipedia (https://en.wikipedia.org/wiki/Analytic_Philosophy):
"As a philosophical practice, [analytic philosophy] is characterized by an emphasis on argumentative clarity and precision, often making use of formal logic, conceptual analysis, and, to a lesser degree, mathematics and the natural sciences."
That is exactly what you do when you are doing computer programming. So computer programming is the practice of applying the techniques of analytic philosophy to computers.
No it is not.
Read your own excerpt. analytic philosophy is a philosophical practice; computer programming is a software engineering practice.
They are not the same thing.
That's not to say that the practice of philosophy couldn't be done digitally. I'm sure over time more and more of it will. But to go from there to applied analytic philosophy is computer programming is nonsensical.
Sorry, I don't think you know anything about the history of the relationship between computer programming and philosophy. Kurt Gödel was an analytic philosopher. John McCarthy's work stems directly from analytic philosophy, and goes all the way back to Descartes' ideas.
I find your reasoning quite short-sighted.
Do you? I've been thinking about this for rather a long time–not that that's any iron-clad guarantee as to how correct I am but it does tell you that it's not something I'm coming up with off the cuff. I'd be happy to elaborate. What in particular do you think I'm being short-sighted about? Note that I think that the business of philosophy is entirely compatible with computational methods, I just think that the claim that computer programming is equivalent to applied analytic philosophy† is one that makes no sense to me.
The main reason being, and I'll restate myself–philosophy is not concerned with all concepts, only a subset of them, those that are deemed to be philosophical concepts–what those are is another matter and a very very very interesting question in its own right. This is what differentiates philosophy from other fields that use the same cognitive techniques and methods, the same proscriptions and sensitivities‡ of which there are both many fields, many methods, and many pitfalls. How all the latter translates into software is one matter and is not up for debate here. What I am saying is that computer programming (as an activity, one that is done by a human to a computer) can deal with any concept and that makes it potentially much broader in scope than what philosopher's do, methodologically they can over time be made compatible–at the moment they are distant kin.
† i've made a best guess/good faith at what that's supposed to refer to
‡ what I mean by "cognitive techniques and methods, the same proscriptions and sensitivities" is the business of conceptual analysis and construction–learning about how concepts work and how we manipulate them mentally and how we communicate them, the practice of training oneself to to avoid errors in your thinking, learning about fallacies and applying them, learning to debate in good faith with yourself and others, learning about biases in human cognition, learning to spot these biases in ones own thoughts
Can you expand on this? To me, Plato seems like a fairly good fit for the computer world. I also think that, from the perspective of analytic philosophy, OO patterns make some kind of sense - since they allow us to clarify problems as being subsets of more general ones.
> Can you expand on this? To me, Plato seems like a fairly good fit for the computer world.
That is exactly the issue - computing is the closest thing we will ever have to Platonic Idealism. You can create simple, elegant, symmetric worlds. Many people instead assume that whatever poorly designed programming language is around at the moment is the be-all, end-all Platonic world that they must inhabit, and then proceed to come up with all kinds of dumb workarounds because the programming language does not model whatever they are trying to express, all the while patting themselves on the back for being clever and creating "abstractions."
OO patterns do not make any kind of sense. There is no "generality" or "abstraction" about Singletons or Factories. They are made-up nonsense terms for ad-hoc techniques people hacked together to work around the problems they had trying to apply certain classes of OO languages to modeling certain kinds of problems in the real world.
So the contrast should be between different philosophic schools - if patterns (and OO inheritance) is like Platonism, what would materialism be? I think DSLs and DDD is a kind of materialist view on computer programming. And DDD's emphasis on clear and precise naming and concepts is very much what analytic philosophy is also concerned with.
>OO patterns do not make any kind of sense.
Isn't this a matter of perspective, though? I've been thinking recently that programming languages are kinda like hexidecimal numbers or logarithms - essentially shorthands that allow us to handle stuff the human brain isn't built for. In this sense, object oriented thinking shouldn't be any worse than any other kind of thinking, provided the practitioner finds it useful for making the problem at hand tractable.
I can see there would be two obvious problems with this kind of relativism - if there were performance implications, or maintenance implications. But I don't see OO stuff causing these in and of itself.
I'm sure that most people who have studied OO would find many similarities with Plato's forms. The same could be said of Spinoza's attributes, however the latter is much more abstract (to say the least).
Without digressing too much from the topic however, I think OO has it's place. Sometimes it's rather like constructing scaffolding prior to building a small dog house, unnecessarily complex.
I’d think that inheritance makes oo closer to Aristotle’s categories.
Should people work on OpenSource at all after reading Niccolò Machiavelli?
Or seeing it in practice as capitalist technologists practicing the alternative accumulated enough wealth to buy politicians who passed patent laws allowing FOSS developers/companies to be put out of business, regulators who may penalize new services on Internet, and API rulings in court to reduce interoperability with or escape to FOSS alternatives? I think the default should be commercialized variants of either flexible shared-source or open source whose players pull together in lobbying and media to advance FOSS interests like their opponents do to advance lock-in and anti-competitive practices. Otherwise, the game continues with one side playing aggressively using every strategy available, the other side mostly is on the bench, and probability favors one side dominating in that for a long time.
Yes.
I'd also like to hear more about what you mean. I imagine 'Platonism' refers to his theory of the forms, which as an example of abstraction seems pretty useful, if taken in his case to an extreme. He seems pretty solid on modeling problems without getting caught up in implementation details, at least.
+100000000
I don't see why not. It's always a useful exercise to take a step back and see how things from different domains might connect up. It's also useful to understand how a discipline has evolved. Computing and information seem like very fundamental concepts now that we've stumbled upon them so it seems right and proper that we figure out how these things interface with all the other things we know about.
Incidentally I've seen Wadler suggest we call the field Informatics. I'd prefer that I think. The word science is doing too much work nowadays and computer science is only a science in the formal science kind of way, if that's even correct. It's definitely not a science in the way biology or chemistry are. By that reasoning I'd prefer the philosophy of informatics. Floridi has suggested the philosophy of computing and information but that's cumbersome. There's also philosophy of the digital which tries to cast its net the widest.
There are interesting things here to think about, and I think in practice a lot of discussions folks have in building software is philosophical. Another approach: What is/are the type(s) of argument that would convince you that something is useful? We could see if there is such an argument.
The really interesting philosophies emerge from the trenches and the battles in the field. For example, the most surprising meta-level insights on randomness come from Nassim Taleb's decade-long experience in trading securities. What he writes, is truly striking. The article in the link, however, make no reference to such real-world starting points. It fails to emerge from the very practical. It does not gradually abstract away details in order to arrive at surprising insights at the meta-level. The verifiable path is simply gone. It is much more an example in the art of mediocre teaching. I personally think that it is a useless read.
I am completely unfamiliar with Taleb, this is a genuine question - does he have any work that is accepted as academic philosophy? Just hearing coworkers/friends/etc talk about him, I thought he just wrote books for a general audience.
I don't think Taleb has engaged with academic philosophers. He prefers to portray himself as someone grounded in empiricism, and talks down "intellectual-yet-idiot" academics who lose the forest for the trees, in loving their flawed simplifications/abstractions more than the reality they are trying to model [1]. A lot of his ire is directed at economists' over-reliance on flawed mathematical assumptions (particularly relating to modeling randomness), and more broadly, academics in the less empirically grounded fields. I take his principal point to be that the modern approach to decision making under uncertainty (due to being neither theoretically nor empirically rigorous) is just a bunch of fashionable nonsense that has displaced several useful traditional/folk thumb rules which might superficially appear to conflict with the modern scientific models, but represent valuable insights won through hard experience. Most of his writing/speaking directed at a general audience is polemical, and often feels like he is ranting, so YMMV. If you're interested in getting a quick flavor of his work, try his talk at the National Science Foundation [2].
FWIW, several of Taleb's key points expound on some statements by Hume [3] and Seneca [4], so he does value certain works/ideas nominally considered philosophy.
[1] https://medium.com/incerto/the-intellectual-yet-idiot-13211e... (Taleb shares several of his articles/book-excerpts on Medium)
[2] https://www.youtube.com/watch?v=omsYJBMoIJU
[3] https://philosophynow.org/issues/69/Nassim_Nicholas_Taleb
[4] https://www.youtube.com/watch?v=k4MhC5tcEv0&feature=youtu.be...
PS: Having written this comment on HN makes me feel very weird, stating (my understanding of) the opinions of some particular person, but I just felt like responding to a sincere question.
Yes. I mean wikipedia answers it for you: https://en.wikipedia.org/wiki/Nassim_Nicholas_Taleb
That article provides little to no insight as to how his work has been incorporated within academic philosophy. It does provide a brief "Selection of papers" section, all of them in finance and statistical mechanics, so my original question remains.
The answer might be “his work hasn’t really intersected with academic philosophy”, that’s fine, I’m just curious to hear about it from people who have done more than read a Wikipedia page about him.
> The really interesting philosophies emerge from the trenches and the battles in the field. For example, the most surprising meta-level insights on randomness come from Nassim Taleb's decade-long experience in trading securities.
I don't think Taleb would say his work was more important or "surprising" than the work of Mandelbrot, an academic.
Gotta say, I've never ever considered "the Ontology of Programs" or "The Epistemological Status of Computer Science" before. I'm trying to keep an open mind here, but I do wonder if some academics are really stretching to justify the latest grant money.
> Ontology of programs
The presuppositions of programs or to program
Example: https://arxiv.org/pdf/math/0602053v3.pdf
> The epistemological status of computer science
Do Neural Nets learn or memorize? What's the difference and how do we know what Neural Nets do?
Example: https://arxiv.org/pdf/1706.05394.pdf
Or one of my personal favorites, the Epistemology of Computer Simulations in Science:
https://plato.stanford.edu/entries/simulations-science/#EpiC...
Comparing and contrasting how computers think and learn compared to us certainly is an interesting idea. I tend to think of myself as epistemologically agnostic, but not for lack of trying. I haven't kept up to speed on neural net development, do there could be some fascinating insights there.
Thanks for the links. I'll definitely check this out.
Are you posting your opinion for Grant money? Or are there other things that motivate people to think about things and express their opinion?
There is no need to disparage people who geek out about edge cases in classification systems.
I don't think I've disparaged anyone here. Being skeptical is one of the oldest traditions in philosophy. If one can't handle skepticism, they are in the wrong field.
Laziness is not skepticism.
Portland State offers PhD in Philosophy of Computer Science https://www.pdx.edu/computer-science/doctor-of-philosophy-in...
PhD = Doctor of Philosophy
This is just a normal PhD in Computer Science.