Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Image

Philosophies and Programming Languages 239

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."

*

This discussion has been archived. No new comments can be posted.

Philosophies and Programming Languages

Comments Filter:
  • Re:Nietzsche? (Score:3, Insightful)

    by TheCycoONE ( 913189 ) on Friday April 17, 2009 @12:42PM (#27615553)

    I doubt it, Nietzsche rejected artificial morality and the distinction between good and evil. As a language he would be type-less and purposefully unlike conventional languages. I'm thinking LISP, but perhaps someone more familiar with his works can express a better choice.

  • by xee ( 128376 ) on Friday April 17, 2009 @01:00PM (#27615899) Journal

    The pythagoreans identify nicely with Mathematica.

  • by v(*_*)vvvv ( 233078 ) on Friday April 17, 2009 @01:20PM (#27616381)

    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.

  • by SanityInAnarchy ( 655584 ) <ninja@slaphack.com> on Friday April 17, 2009 @01:24PM (#27616463) Journal

    I suspect it depends very much how clean that other team's perl is. Perl is perhaps the language in which it is easiest for sheer laziness to lead to something unreadable.

    However, Perl can be readable, and there are other reasons to like it.

    Disclaimer: I haven't touched Perl since I became a Ruby/Javascript convert.

  • by Brian Gordon ( 987471 ) on Friday April 17, 2009 @01:47PM (#27616867)
    Yes there is. The author's saying assembly defines everything explicitly; it's higher level languages that "beg for a question" about where that came from or how that works. Following his logic assembly doesn't "beg for a question" at all, but rather the opposite.
  • by DrVomact ( 726065 ) on Friday April 17, 2009 @01:58PM (#27617073) Journal

    Let's see...early or late Wittgenstein? The early Wittgenstein—the one who wrote the Tractatus—would have been a pure C programmer. Clarity, brevity, precision. The later Wittgenstein, the one we meet in Philosophical Investigations, programmed in Pascal. You know—the academic language which was completely cool, but never quite finished.

    As for Kant, he was definitely a Python guy. Only an obsessive-compulsive German would think that making a language indent-sensitive is a good thing.

  • by mckinnsb ( 984522 ) on Friday April 17, 2009 @02:03PM (#27617185)
    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.

  • FORTRAN (Score:3, Insightful)

    by earlymon ( 1116185 ) on Friday April 17, 2009 @02:25PM (#27617605) Homepage Journal

    All FORTRANs up to and including FORTRAN IV WATFIV were concordant with their best-known programmer, Rousseau - it was, after all, the best of all possible worlds.

    Voltaire pointed out the mind-numbing ridiculousness of that idea, salvaged what was the real essence, and formulated a framework of thought that influenced all others. His philosophy was direct, compact and completely elegant. Naturally, Voltaire is best read not in translated English, but in its original FORTRAN 77 form.

  • by Estanislao Martínez ( 203477 ) on Friday April 17, 2009 @02:45PM (#27617917) Homepage

    In criticizing the philosophy of the Tractatus - specifically view of language as being bounded everywhere by rules - Wittgenstein thinks about languages as games, gains a valuable insight by comparing it to games like tennis. In tennis, there are rules for where you stand when serving, where you can and cannot hit the ball to have it count as a point, etc. But the game isn't bounded everywhere by rules - for example, how high can you hit the ball? So too with human language.

    I think you're missing the most important point about Wittgenstein's game analogies. It's part of a critique of the classical theory of categories, which assumes that categories have necessary and sufficient conditions for membership, that language terms stand for categories, and thus, insists that terms must have definitions in terms of necessary and sufficient conditions for the applicability of the term. Thus, the term "game" stands in need of a definition that tells us what are the properties that all games share.

    Wittgenstein tries to get us to see that there's no such definition to be had for "game"; as you try various candidate properties to see if they're shared by all games, you always find some game that doesn't have it. Games stand in a set of family resemblances to each other. But when you start following this idea through, you start to understand that Wittgenstein is inviting us to see instances of "language" in the same light as he's made us see the instances of games: language is a large complex of social practices that share family resemblances to each other.

    The other Wittgenstinian analogy that's relevant here is that language is like a toolbox. This fits in quite nicely with the family resemblance discussion, too: what is the property shared by all tools? To quote Wittgenstein's parody of the attempt to provide such a property:

    14. Imagine someone's saying: "All tools serve to modify something. Thus the hammer modifies the position of the nail, the saw the shape of the board, and so on."---And what is modified by the rule, the glue-pot, the nails?---"Our knowledge of things' length, the temperature of the glue, and the solidity of the box."-----Would anything be gained by this assimilation of expressions?---

    Also, Wittgenstein's treatment of rules is quite a bit more radical than you state it here, because it's framed as a critique of the notion of rule-following: the idea that rules "guide" the behavior of people. This is probably the part of Wittgenstein that's the most relevant to computer science, and in particular, to AI (classic AI fundamentally sees intelligence as rule-following). Alas, I haven't reviewed these parts in a while.

    Yes, I know this is specifically a topic about programming languages, something that the Tractatus deals with much better, being primarily about idealized languages for philosophical reasoning, but if you're going to start reading the man's work, you'd do yourself a favor by considering his earlier work in light of the critiques he presents in his later work.

    It's actually controversial to what extent Wittgenstein repudiated the Tractatus. More generally, the Tractatuts might well be the book that Wittgenstein's readers most disagree about. Wittgenstein always insisted that the philosophers who most admired the Tractatus completely missed the point behind it. There's certainly a shared theme between it an the Investigations: philosophy is a kind of confusion that comes up when philosophers fail to understand the limits of language. In the Investigations, the critique of philosophers' abuse of language takes the form of an attack on the classical theory of categories (the one that the idea of family resemblances is opposed to). In the Tractatus, on the other hand, the critique is based on the extremely obscure idea that there are things that language "shows" without "saying"--an idea that the book is (arguably) supposed to "show" rather than say...

  • by Estanislao Martínez ( 203477 ) on Friday April 17, 2009 @02:50PM (#27618001) Homepage

    The author obviously doesn't know Pascal.

    Um, or the fact that the type system of languages like O'Caml and Haskell [wikipedia.org] is an elaboration of Russell's type theory [wikipedia.org], for that matter.

  • by 0xdeadbeef ( 28836 ) on Friday April 17, 2009 @03:40PM (#27618795) Homepage Journal

    To really sum it up: Is the world made of sets or is it made of graphs?

  • by Estanislao Martínez ( 203477 ) on Friday April 17, 2009 @04:00PM (#27619039) Homepage

    To really sum it up: Is the world made of sets or is it made of graphs?

    No, that's really just two different versions of "the world is made of facts, not things." Set theory doesn't rely on objects having essential properties; the only thing set theory assumes of the set members is that there is an identity relation on them. (Though of course, as we both know, sets really are graphs!)

  • by johnsonav ( 1098915 ) on Friday April 17, 2009 @04:44PM (#27619701) Journal

    prattling on about a superman does not count [...]

    Why... Because you say so?

    it does no good to overthrow an existing order without properly articulating a new one

    otherwise, your effect is nihilism, whether actively espouse that philosophy or not

    He did articulate a new one. Whether you agree with it or not--or even find it silly--does not change the fact that Nietzsche was offering an alternative; an alternative that a nihilist, by definition, is not.

With your bare hands?!?

Working...