Slashdot Mirror


Philosophies and Programming Languages

evariste.galois writes "Wikipedia has a special section called, 'Language Philosophy,' in every article for a programming language. This section looks at the motivation and the basic principles of the language design. What if we investigate further than that? What deeper connections between philosophies and programming languages exist? By considering the most influential thinkers of all time (e.g. Plato, Descartes, Kant) we can figure out which programming language fits best with aspects of their philosophy (Did you know that Kant was the first Python programmer)? The list is not exhaustive, but this is a funny and educative start."

8 of 239 comments (clear)

  1. Python by MyLongNickName · · Score: 5, Funny

    No wonder I Kant get anything done in Python!!!

    *looks around and sees no one laughing*
    *quietly backs off of the stage*

    --
    See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
  2. Those who kan't... by jimbudncl · · Score: 5, Funny

    use Python.

  3. What's the Point? by Sponge+Bath · · Score: 5, Informative

    This read more like a 'If programming language X was a car then it would be a Y' type lists.
    Good for a brief chuckle, but not particularly enlightening.

  4. Re:Codito by pilgrim23 · · Score: 5, Funny

    I always thought it was sum ergo cogito..... but then I always was getting Descartes before de Horse

    --
    - Minutus cantorum, minutus balorum, minutus carborata descendum pantorum.
  5. Re:Philosophy of Perl by Lord+Ender · · Score: 5, Funny

    Perl is a lot like Christianity, actually. It borrows almost everything from previous languages, and it makes you hate yourself.

    --
    A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
  6. Re:Philosophy and language by Estanislao+Mart�nez · · Score: 5, Interesting

    There are certainly general principles that apply to all programming languages, such as the trade-off between clarity and concision [...]

    I don't think you're really getting at what you mean here. How is the verbose "clear"? I understand you're trying to get at how most programmers find the more concise, expressive code much harder to understand, and seem to only be able to understand code when all of the operations are at very low level. So, for example, they claim that a map function is "unclear," while doing a loop that manually manages an array index counter is "clear." But that's simply not "clearer" in any sense; that's basically missing the forest for the trees.

    But does C++ really have a different "philosophy" than Objective-C, or are we just talking about the problem-solving intent and domain of the language and its suitability to a given problem?

    There are serious, philosophically interesting differences between some software paradigms, but if somebody's looking for them in C++ vs. Objective C, they're more likely trying to pick nits that don't exist. If you want a really big, real-world relevant set of philosophical issues that recurs over and over in software engineering, try the object-relational impedance mismatch. This comes down to two different types of ontology. To sum it up (badly!) in two bullet points:

    • Object-oriented modeling tacitly assumes an ontology where the world is made out of objects. Objects are treated as complexes of properties, divided into essentials and accidents.
    • Relational modeling assumes an ontology where the world is made out of facts (i.e., relations). Relational tables represent sets of facts that are assumed to hold; objects are just the values related by the facts. Taken to its logical conclusion, objects are atomic; all of their structure comes from which facts they occur in.

    And since you brought up Wittgenstein, note that the relational ontology is well, the first two sentences of the Tractatus:

    1. The world is all that is the case.

    1.1 The world is the totality of facts, not of things.

  7. Why the droids will win. by v(*_*)vvvv · · Score: 5, Insightful

    Programming languages are layers that abstract away the computer underneath. Philosophy is about pealing the layers that abstract away our being that lies underneath.

    Of course, we know everything about a computer, because we built it. Yet we know nothing about our being, even when we're all trapped in one.

    That could be our biggest weakness when the droids turn against us. Computers and machines will always know exactly what they are, while humans will forever be confused.

  8. Re:Philosophy and language by mckinnsb · · Score: 5, Insightful
    Mod parent up - he makes a few good points, which I would like to respond to here.

    I don't think you're really getting at what you mean here. How is the verbose "clear"? I understand you're trying to get at how most programmers find the more concise, expressive code much harder to understand, and seem to only be able to understand code when all of the operations are at very low level. So, for example, they claim that a map function is "unclear," while doing a loop that manually manages an array index counter is "clear." But that's simply not "clearer" in any sense; that's basically missing the forest for the trees.

    I feel that the most concise, expressive code is code which is part of rigorously defined, parsimonious model; hence what you mean by "missing the forest for the trees" - one code block/tree does not express succinctly the forest/design or the code block/tree's part in the forest/design. Expressive code does not exist of itself - it exists when it is part of a well designed model and everything around it makes sense. Like last Wednesday's XKCD comic stated in jest (but should be taken quite seriously) , "You will never find a programming language that relieves you of the burden of clarifying your ideas." In corollary, you will never find a way to write one block of code that will ever free you of that burden, either.

    There are serious, philosophically interesting differences between some software paradigms, but if somebody's looking for them in C++ vs. Objective C, they're more likely trying to pick nits that don't exist.

    Couldn't agree with you more here. Philosophy comes into play more when you start talking about design paradigms, and not the languages themselves. I would agree that certain languages lend themselves more to certain design paradigms, which would then reflect on Philosophy - but I still feel that this article, although lighthearted and undeserving of scrutiny, has got it backwards. You can certainly construct features of one language within another if you really *try*.

    As an aside - Socrates as an Assembly programmer? Seriously? That was the one choice I couldn't really let sit. I feel like he was chosen for that because he was the "first" philosopher, and some people view Assembly as the "first" programming language. Personally, I view Assembly more of a Alphabet than a Language (or to be a little more fair, more like Ancient Cuneiform than Latin), and if you were going to pick a philosopher to be a Assembly programmer, you should probably pick a Deconstructionist - Jacques Derrida would have been a good one.