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."
Codito (Score:4, Funny)
ergo sum
Re:Codito (Score:5, Funny)
Re:Codito (Score:5, Funny)
Once you figure out that you are, then the next question comes up.
/(bb|[^b]{2})/
Re: (Score:2)
(a Thai joke)
Re: (Score:3, Interesting)
555
(a Thai joke)
I was a language instructor as a SSgt in the USAF at the defense language institute Korean school in Monterey, CA. One of my students, an Army Special Forces SFC with Thai language experience (I have none), was participating in a creative role play involving numbers and vocabulary commonly used with numbers.
He put on his army trench coat (class b uniform day) stood in front of the class, and proceeded to act like a guy who sells watches on the street. His sales pitch (for a tv commercial, I guess) went fa
Re: (Score:2)
Re: (Score:3, Funny)
More like:
si ego.codito:
ego.sum()
Python (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*
Re: (Score:3, Funny)
List is Wrong (Score:2)
Re:List is Wrong (Score:5, Interesting)
Lisp.
Alternately a convoluted, confusing and maddening knot of junk, and a transcending work of crystalline insight, clarity and genius, and either way, constantly leaving you with the nagging feeling that if you'd just went through it one more time with love and care, you'd finally, truly get what it's all about.
Arrgh!!! LISP!!! (Score:2)
I heard of a student learning an early version of LISP and entered the following line...
True = false
He was interrupted, forgot about it, saved and then the fun began! I don't know if the story is correct but the thought is humorous.
Re: (Score:3, Informative)
Oddly enough, what you write has no relationship, linguistic or otherwise, to Lisp where, even if there were bindings of the symbols true and false in some context, they still would not equate to the constants T and NIL, whose values cannot be changed.
Now setting the value of nil in Smalltalk to something else - that's good times.
Re:List is Wrong (Score:5, Funny)
I thought he was a real pissant who was rarely very stable.
Re: (Score:2)
Why are you bringing composers into this?
Those who kan't... (Score:5, Funny)
Re: (Score:2)
perl is for nihlists
What's the Point? (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.
Re:What's the Point? (Score:5, Interesting)
Guess we can add this one to the list.
Re: (Score:2)
Yeah... the past discussed article about languages and religions ( http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html [aegisub.net] ) was more comprehensive and insightful.
Re: (Score:2)
Yeah, 2300 years ago. Plato is irrelevant.
Is it even possible to make a less significant statement?
Re:What's the Point? (Score:5, Informative)
In the same sense that Galileo is irrelevant in modern physics. Irrelevant yet fundamentally important in the creation of the modern system of knowledge.
Is it even possible to make a less significant statement?
You just did. Any computer language that wasn't designed randomly has a philosophy behind it; there was some kind of principles behind the design. Flawed or elegant, there were choices about how to arrange abstract concepts.
Re: (Score:3, Interesting)
Wikipedia has a special section called, 'Language Philosophy,' in every article for a programming language.
Is it even possible to make a less significant statement?
You must be new here.
A goatse link.
I, for one, welcome our Philosophic Programming Overlords.
To name three.
The article wasn't factually correct. This
Java was the first strongly-typed language, in which everything must have a type (or share a Form) before it is being used
isn't even close. Sigh. By that definition FORTRAN counts. Every variable DOES have a type "before being used". It's a floating point type if the variable name starts with A-H, O-Z and integer otherwise. Perhaps the author is confused about static typing. In which case he's still off by a couple of decades on which was language was first to be "strongly-
Re: (Score:2)
If programming language X was a car then it would be a Y
...where "Y" is "head of a list", according to Wittgenstein.
Isn't that ironic, don't ya think? (Score:2)
In a similar manner, everything in Assembly begs for a question.
That's not what that means! In fact, the point being made is antithetical to begging the question!
Re: (Score:2)
"Beg the question" and "Beg for a question" are two very different things. There's nothing wrong with how the author used the latter.
Re:Isn't that ironic, don't ya think? (Score:4, Insightful)
Philosophy and language (Score:5, Interesting)
Before we start this discussion, everyone should read the Tractatus Logico-philosophicus by Ludwig Wittgenstein. Programming languages, like human languages, express rules and patterns, but in philosophy we talk about how and when to employ rules, where to look for patterns. There are certainly general principles that apply to all programming languages, such as the trade-off between clarity and concision, whether it's better to own or reference an object in a given instance, etc. 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? Do those really constitute philosophy, or are they just functional artifacts of the form?
Discuss.
Re: (Score:2, Interesting)
Re:Philosophy and language (Score:5, Interesting)
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.
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 [wikipedia.org]. This comes down to two different types of ontology. To sum it up (badly!) in two bullet points:
And since you brought up Wittgenstein, note that the relational ontology is well, the first two sentences of the Tractatus:
Re: (Score:3, Interesting)
Re:Philosophy and language (Score:5, Insightful)
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.
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.
Re: (Score:2, Insightful)
To really sum it up: Is the world made of sets or is it made of graphs?
Cute, but flawed... (Score:2, Insightful)
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!)
Re: (Score:2)
Noting that there is a trade-off between concision and clarity does not mean that verbosity is clear, it means that there are situations when the most concise expression may not be the most clear. It is perfectly consistent with the observation that the most concise expression may at times also be the most clear, and that being more verbose may not always add clarity.
Re: (Score:2, Interesting)
But what I meant to single out is not programming languages, but rather, data modeling; i.e., the use of computer programs to reason about the world.
However, I still think that there
Re: (Score:2)
>>Tractatus Logico-philosophicus by Ludwig Wittgenstein
I've read it.
While he considered himself brilliant, if he can't even bother to define or defend his own terms and statements, it has no value.
Re: (Score:2)
If that's your reaction to the Tractatus, then you clearly didn't read it very carefully or understand it very well.
Re: (Score:2)
>>If that's your reaction to the Tractatus, then you clearly didn't read it very carefully or understand it very well.
Writing obtusely doesn't make one intelligent.
Which is ironic, since he considered all philosophical problems just problems with clarity of language, with the job of the philosopher akin to that of a linguistic janitor, cleaning up definitions.
Re:Philosophy and language (Score:5, Insightful)
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.
Re: (Score:2)
The pointers vs. references debate is like having sexual words vs. using innuendo (e.g. "masturbate" vs. "play with oneself").
Re:Philosophy and language (Score:4, Insightful)
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:
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.
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...
Philosophy of computer science (Score:4, Informative)
The Stanford Encyclopedia of Philosophy, http://plato.stanford.edu/ [stanford.edu], has an introduction on philosophy of computer science [stanford.edu] which is far more interesting than this worthless drivel.
Nietzsche? (Score:2)
the first virus/ worm/ trojan author?
Re: (Score:2)
Re:Nietzsche? (Score:5, Funny)
Re: (Score:2)
I'm sure there are a lot of things that Schrodinger would like, but the rest of us would just like for him to get on with it and make up his damn mind already.
Re: (Score:3, Insightful)
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.
Re: (Score:2)
I'm tempted to say lolcode.
he would have no language at all (Score:2)
nihilism is purposeless and random. coding therefore cannot have anything to do with nietzsche, since it is all structure
Re: (Score:3, Informative)
nihilism is purposeless and random. coding therefore cannot have anything to do with nietzsche, since it is all structure
That's all well and good. But, Nietzsche wasn't a nihilist. In fact, he wrote extensively in opposition to it. While both Nietzsche and the nihilists agreed on the illegitimacy of the existing moral order, Nietzsche wanted to replace it with something new, while nihilists insist that no such thing is possible.
what are those new values? (Score:2)
prattling on about a superman does not count, its too vague and humorously deific when god is supposed to be dead
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
Re: (Score:3, Insightful)
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.
i think all morality should be destroyed (Score:2)
and replaced with waffles
if you belittle my philosophy in any way, its just because "you say so", not because you have any valid logical reason to object
whu?! howabout i have a valid coherent logical reason to object that i can articulate in logical reasonable terms. fair enough?
ok: defining what a "superman" is in logically coherent terms as expansive as the moral system it is supposed to replace would have value
otherwise, what nietzsche is doing is what every teenager does: destroy his faith in his societ
can you articulate those "new" values? (Score:2)
could nietzsche? beyond prattling on about a superman?
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
nietzsche never articulated (Score:2)
what was supposed to replace the moral system he said needed replacing. all he did was refer to a "superman", which basically is nothing more than a synonym for the god he was supposedly destroying. nietzsche is mediocre, teenage-level psychology. that explains his popularity, but you can't take him seriously, because his effect IS simple nihilism, even if he never actively espouses that, because he never articulates a valid alternative to what he said needed replacing
in essence, he comes back to where he
Re: (Score:2)
If you're right about Nietzsche, perhaps FORTH [wikipedia.org] would make more sense. Lisps are dynamically typed, but FORTH is truly typeless and much less conventional.
Philosophy of Perl (Score:5, Funny)
Through my (admittedly limited) experience with updating another team's perl scripts, I've discovered the design philosophy of perl:
Re:Philosophy of Perl (Score:4, Funny)
I always thought Perl's philosophy was to make you think of it's creator (Larry Wall). How so, you ask? Well...developing in Perl is like pounding your head against a wall...
Re:Philosophy of Perl (Score:5, Funny)
Perl is a lot like Christianity, actually. It borrows almost everything from previous languages, and it makes you hate yourself.
Re:Philosophy of Perl (Score:4, Insightful)
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.
which philosopher (Score:2)
would be PHP then?
Re: (Score:2, Funny)
That excessively drunk guy you overheard at the bar last Saturday.
Re:which philosopher (Score:5, Funny)
Jack Handy.
Re: (Score:2)
I think it was the little-known Neckreday, who first said, "GIT-R-DONE!"
Re: (Score:2)
That frequently hits 120, but, at times, might, also might hit someone two rows behind him.
+5 funny (Score:2)
... in absentia mod points
Finally! (Score:5, Interesting)
As a programmer who was a philosophy major in college I am so happy to finally see the connection made by others (even if at such a superficial and shallow level).
In all seriousness, however, philosophy and programming are amazingly similar. They each are about breaking down complex thoughts into atomic, logical pieces. The origin of computer theory is in philosophy.
And for all of you philosophy majors who are sick of being asked what you are going to do with a philosophy degree (as I was).... tell them you will be a computer programmer!
Ada and Karl Marx seem to be a nice fit . . . (Score:2)
. . . COBOL, FORTRAN and APL are still up for grabs.
I'm really stumped about who to pick for the Occam programming language.
First Bruce! (Score:2)
Struth!
CS and AI are grounded in philosophy (Score:4, Informative)
Computer Science is already grounded in Philosophy, especially in Artificial Intelligence. Have a look at Defeasible Logic (based on defeasible reasoning) for some recent developments. If you want specific programming languages, have a look at Prolog. Search for theorem solvers online. Or check wikipedia for Logic programming http://en.wikipedia.org/wiki/Logic_programming [wikipedia.org]. For that matter, have a look at the Turing machine http://en.wikipedia.org/wiki/Turing_machine [wikipedia.org]. Bottom line, the field of Computer Science is based on logic.
Original Research (Score:2)
educative? (Score:2)
Re: (Score:3, Informative)
It is a word: educative. [merriam-webster.com]
I'd quote the OED as well, but I'm too lazy to start up my VPN and interrupt the torrents.
Besides, pedagogical would have more to do with the method of teaching. "Educational" would probably have been the best choice.
Re: (Score:2)
It's a perfectly cromulant [reference.com] word.
Implications... (Score:2)
Does this mean Nietzsche would have worked for Netcraft?
"This just in--COBOL is dead. Netcraft confirms it."
And in a slightly more serious vein, discussion of philosophy of language design is all well and good. At the very least it's the kind of masturbation one can do with the whole family. Kantian compilers and Platonic preprocessors are certainly titillating. But what I'd be more interested in is if there have been any studies of programming languages in terms of human language. I know you can make
Informational Realism (Score:2)
This is a lineage that goes back to at least Principia Mathematica's attempt to derive "relation arithmetic" as a way of orienting our descriptions of the world around relations rather than around objects.
Oh! Pascal! (Score:2)
I've saved this classic text for years and years. Not only was it the first serious programming language I ever took up, but the imaginary programmer addressed throughout the text was a female--like me. I loved it. Did that fact have anything to do with the philosophy of the developers of the language? Probably not, but it somehow spoke volumes about the people I knew who coded in it. (Back when the Earth was still cooling...)
Re: (Score:2)
I read that book also and you certainly brought back memories. The author struck a good balance in making an otherwise dry subject, interesting and at times even funny. I remember a paragraph about the importance of choosing meaningful variable names. In it, the author presented the "Who's on first" routine by Abbot and Costello.
Machiavelli (Score:4, Funny)
Machiavelli must have been the inspiration for Scheme.
Re: (Score:2)
Why? Did he talk with a lisp?
*ducks*
Pythagoreans use Mathematica (Score:3, Insightful)
The pythagoreans identify nicely with Mathematica.
Ya, but... (Score:2)
- Shakespeare (Hamlet)
Re: (Score:3, Funny)
so, buffer overflows?
Why the droids will win. (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.
Pascal was strongly typed long before Java (Score:4, Informative)
From TFA:
"Java was the first strongly-typed language, in which everything must have a type (or share a Form) before it is being used"
The author obviously doesn't know Pascal. Not only does everything in Pascal have a type, and must be declared as such, Pascal doesn't even have the concept of a typecast. And much less implicit conversions than Java (the only way to get from a real to an integer is through a function like round or trunc). In Pascal, an array of 5 integers is a different type than an array of 6 integers (actually, you don't give a number, but a type for indexing, which may be an integer subrange type like 0..4, but might as well be e.g. an enumeration type).
Re: (Score:2, Insightful)
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.
FORTRAN (Score:3, Insightful)
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.
Leibniz, not Rousseau (Score:3, Interesting)
Voltaire's Professor Pangloss was based on Leibniz, not Rousseau. Leibniz would probably have been a better programmer anyway.
Re:Leibniz, not Rousseau (Score:4, Interesting)
True. I further congratulate you in advance for being the only person I've met who got or may have gotten exactly what was wrong with the rave literary reviews for Forest Gump - and if you read it and saw the movie, why the movie was superior in all of the ways that the book sucked donkey balls.
Tien - I point out the event where Rousseau was overwhelmed with Voltaire, and frustrated by him, that he sent ruffians to beat him senseless in a dark alley, admonishing them to not do too much damage to Voltaire's head, as some good may yet come from it.
And Rousseau did endlessly parrot the best of all possible worlds meme. Perhaps my classical education was erroneous, but I was taught that it was Rousseau's clever and beautiful defense of the best outcome of the Lisbon earthquake that finally drove Voltaire over the edge.
Given those things and given that Leibniz would have been the better programmer, and given the many hundreds of thousands of lines of FORTRAN II and IV code I've seen - I still contend that the FORTRAN / FORTRAN IV programmer of prolific note is that monkey-see, monkey-do philosopher, Rousseau. Perhaps Leibniz did write a few dozen decent lines of it for him to proliferate...
Alternative list (Score:4, Informative)
Plato - Java. (He believed in abstract objects but only had single inheritance)
Aristotle - SQL (he tried to systematise and arrange everything)
Aquinas -
Hegel - C++. (Hegel surely wrote the first write-only philosophical language)
Descartes - Visual Basic (if you can make a picture of it, it must be right)
Pascal - Prolog.
Ada, Lady Lovelace - Lisp.
Bertrand Russell - Erlang or Haskell
Ludwig Wittgenstein - PL/1
Re: (Score:2)
Pascal - Prolog.
Man, I didn't see that coming.
Kant and Python (Score:2)
Wouldn't Kant have used a subject oriented language?
If you're serious about the topic... (Score:4, Interesting)
If you're serious about the topic, someone above mentioned Wittgenstein. The Saphir-Worf hypothesis is basic reading for linguistics. Here [acm.org] is a paper called "Notation as a Tool of Thought" written by a guy called Kenneth Iverson that discusses the effect that computer languages have on expression of thought.
Blithering about Kant being the first Python programmer and other such vacant nonsense may be entertaining in a limited way, but there are serious and fascinating issues in the study of linguistics, including those dealing with artificial language.
Java the first strongly typed language? (Score:2)
Wtf is this guy smoking? ML had a provably sound parametric type system in the late 1970s!
Re: (Score:2)
Wtf is this guy smoking? ML had a provably sound parametric type system in the late 1970s!
Odd that you don't find it obvious - he's smoking a little thing called youth. From what little I remember, it was pretty good shit!
PHP definitely is deeply inspired by (Score:2)
Nihilism [wikipedia.org] and Absurdism [wikipedia.org]. At least I can't find any meaning or value in PHP. Kierkegaard and Nietzsche would probably agree.
Re: (Score:2)
Re: (Score:2, Funny)
This is so not funny - its pure flame and its most trollish--- check this out asshammer - http://arstechnica.com/open-source/news/2009/03/google-launches-project-to-boost-python-performance-by-5x.ars [arstechnica.com]
Sweet! Now your homework will run really fast.
Re: (Score:2)
And another "-1, Disagree" trolling. What's going on. Have the moderators gotten overrun by 4chan retards, or what?
If you disagree, say so in a comment. But I guess you can't disagree, because
A1. you can't articulate yourself, and
A2. I am right, and you know it.
or
B. You are already a Wikinazi.