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."
ergo sum
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
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
Sorry, Kant was never a python programmer. Impossible. My personal guess is that Kant was programming in Modula, but it could also have been Brainf**ck. Any other suggestions by people who have actually read Cunt?
use Python.
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.
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!
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.
-- thinkyhead software and media
The Stanford Encyclopedia of Philosophy, http://plato.stanford.edu/, has an introduction on philosophy of computer science which is far more interesting than this worthless drivel.
Slow news day, huh?
- Despite popular opinion, I am not perfect.
the first virus/ worm/ trojan author?
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
Through my (admittedly limited) experience with updating another team's perl scripts, I've discovered the design philosophy of perl:
"Plankalkul is dead." - Nietzsche
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
Nice little article I'm really glad this got posted. It really does nice job of tying things together. No, I don't take it seriously... but the author definitely understands the different philosophies that are under each programming language and manages to make a reasonably entertaining connection back to a philosopher.
[signature]
would be PHP then?
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!
. . . COBOL, FORTRAN and APL are still up for grabs.
I'm really stumped about who to pick for the Occam programming language.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
Struth!
Genesis 1:32 And God typed
Tractatus
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. For that matter, have a look at the Turing machine http://en.wikipedia.org/wiki/Turing_machine. Bottom line, the field of Computer Science is based on logic.
Nope, sorry, we can't do that because of [[WP:OR]]. -~~~~
I'm not sure educative is a word. Probably looking for pedagogical.
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 some superficial analogues of functions as verbs, variables as nouns, and some languages have syntax flexibility that reflects natural language to an extent (e.g., Perl's indirect object format: $awesome = 1 if $natalie_portman && $hot_grits;) These are intentionally created that way by the language designer, though. I'm wondering if, based on these superficial intentional "boundary conditions", any deeper parallels to natural language emerge. My intuition tells me that Lisp is likely very similar to how language is structured within our brains--a series of nested clauses, each representing its own set of ideas or objects. If you subscribe to any of Chomsky's or Pinker's ideas of how our brains use language, the simple combinatorial system that allows us to create arbitrarily complex sentences seems like it would apply equally well to many programming languages.
Just some of my musings while I avoid work in the morning...
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.
Seastead this.
Realizes the lame pun
*Boooooo!*
*Boooooo!*
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...)
"Here's what's happening. You're starting to drive like your Dad..." - Red Green
Machiavelli must have been the inspiration for Scheme.
In the land of the blind, the one-eyed man is king.
The pythagoreans identify nicely with Mathematica.
Oh shit! I forgot to click "Post Anonymously"...
"There are more things in Heaven and Earth, Horatio, than are dreamt of in your philosophies."
- Shakespeare (Hamlet)
It must have been something you assimilated. . . .
Immanuel Kant was a real pissant
Who was very rarely stable
Heidegger, Heidegger was a boozy beggar
Who could think you under the table
David Hume could out-consume
Wilhelm Friedrich Hegel
And Wittgenstein was a beery swine
Who was just as schloshed as Schlegel
There's nothing Nietzsche couldn't teach ya
'Bout the raising of the wrist
Socrates himself was permanently pissed
John Stuart Mill, of his own free will
With half a pint of shandy got particularly ill
Plato, they say, could stick it away
Half a crate of whiskey every day
Aristotle, Aristotle was a bugger for the bottle
Hobbes was fond of his dram
And Rene Descartes was a drunken fart
"I drink therefore I am"
Yes, Socrates himself is particularly missed
A lovely little thinker but a bugger when he's pissed
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
Sweet! Now your homework will run really fast.
nihilism is purposeless and random. coding therefore cannot have anything to do with nietzsche, since it is all structure
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
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.
How about LabVIEW?
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).
The Tao of math: The numbers you can count are not the real numbers.
Certainly not most of the world's population. At least they could understand the classic "What if Operating Systems Were Airlines?"
I like how he calls php more of a business language than Java. That is funny! Yes sir, I'll get right on that Cobol to php transition project!
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.
Pathological kinda promises Path + Logical - but instead, you get stuck with pathetic.
Socrates - ADA (he used his logical skills to help the aristocrats gain power, the real reason he was executed.) .NET languages. (Stuff pinched from everywhere and turned into an immense framework)
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
From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
Because PHP and ASP programmers have sandpaper over their keys? I don't get it.
Wouldn't Kant have used a subject oriented language?
You'll understand.
Voltaire's Professor Pangloss was based on Leibniz, not Rousseau. Leibniz would probably have been a better programmer anyway.
If you're serious about the topic, someone above mentioned Wittgenstein. The Saphir-Worf hypothesis is basic reading for linguistics. Here 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.
Wtf is this guy smoking? ML had a provably sound parametric type system in the late 1970s!
120 characters isn't enough to explain it.
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.
I think he means most web servers run PHP and ASP over Python and Java.
I have to agree with him. Look at most web hosting services companies, PHP is *always* in their list, python and java, not so much. Same goes for ASP/.NET if they're a Microsoft-controlled company.
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!)
Are you adequate?
Nihilism and Absurdism. At least I can't find any meaning or value in PHP. Kierkegaard and Nietzsche would probably agree.
Meme of the day: I browse "Disable Sigs: Checked". So should you.
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
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
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
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
While in undergrad CS I minored in Philosophy - I've always seen them as not only complimentary, but the same practice in a different context. Both are fundamentally about structured thinking.
Really? The first one I jumped to (Perl) had no such section. Tried several other languages beginning with "P" and nothing in those articles either. I couldn't even find anything like that on the Wackypedia pages.
CUR ALLOC 20195.....5804M
Where are Bertrand Russell and Ayn Rand? Surely they are worthy of a mention.
... in absentia mod points
Save your wrists today - switch to Dvorak
I tried reading the article (which wasn't great but good enough for chuckles), but stopped at the above sentence. Looks like the article author clearly doesn't know what he's talking about...
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 society to have some psychological mobility, then rebuild it later as he settles down in adulthood. its a classic psychological developmental arc. nietzsche's entire arc of intellectual discovery is simply the average teenage philosphical experience. he destroys god... then rebuilds him, calling him "superman", but defining "superman" as essentially the same thing as the god he destroyed. all god is, and ever was, was a simple idealization of what mankind can become. wow, what an amazing philosophical contribution. zzz
nietzsche is mediocre. his popularity stems simply from the resonance he shares with teenage psychology. anyone who matures past the teenage years feels no real affinity for anything nietzsche ruminates about. (where "teenage years" refers to a psychological condition, not an actual chronological time period: plenty of 40 year olds are still psychologically teenagers)
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
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 started: a believer in god. calling god superman is not an amazing philosophical contribution. all the idea of god ever was, and ever will be, is simply an idealization of what man can become. whoop de friggin doo
nietsche is kind of like freud: extremely popular and influential, but essentially 100% bogus
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
the guy got the most obvious one wrong.... in "The Design and Evolution of C++" (page 23), Bjarne Stroustrup says it himself:
"I feel most at home with the empiricists rather than with the idealists - the mysticists I just can't appreciate. That is, I tend to prefer Aristotle to Plato, Hume to Descartes, and shake my head sadly over Pascal."
Descartes was a nerd.. he would definitely read slashdot if it existed then...
Normal, healthy XVII age male - just like average high school male now would say:
"Coito ergo sum"
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.
Any sufficiently advanced intelligence is indistinguishable from stupidity.
listen carefully to what i am saying, as i have already said this and you are not demonstrating a capacity to listen or comprehend:
if you wish to destroy something and replace it with something else, you are still a nihilist if you have no articulation of what that "something else" is
if i see a house and i say i want to tear it down and replace it with "beauty", you are a most definitely nothing more than a demolisher, until that time that you build something else
understand?
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
The article is riddled with false claims about programming languages. (All quotes are from the article.)
Java was the first strongly-typed language
ML had true strong-types in 1973 a full 20 years before Java. (And Java's types are fairly weak compared to ML/Haskell/Agda, etc.)
Perl was created in the 80's, a decade in which finally logic/functional programming had found its place in the programming languages world.
Perl has nothing to do with logic or fuctional programming other than the occational "map". For logic programming try Prolog.
C programming language was equally influential to the design of all other "programming philosophies"
Not all other programming philosophies. Don't forget about Fortran, Algol, Lisp, Pascal, Smalltalk, Modula 2, Ada, etc.
C++ ... is the first language that tries to capture this idea of forms by giving the developers the capability to abstract the problem [into classes] before doing anything else.
C++ was not the first language to abstract problems into objects and classes, it was beaten by both Simula and Smalltalk. (At least that is what I think the article is claiming; a less generous reading might be that the article is erroneously claiming that C++ is the first language to have any sort of abstraction which is so wrong it doesn't even need rebuttal.)
Um, no. Pointers/references are mutable reference cells, i.e., stateful objects. Sense and Reference is, roughly, about synonymy.
The most famous example sentences in Sense and Reference are "The morning star is the evening star," and "The morning star is the morning star." The reference of the expressions "the morning star" and "the evening star" is the same, namely, Venus. However, the first sentence is an astronomical discovery, while the second one is a tautology. This is because while the two expressions have the same reference, they don't have the same sense. In particular, while the reference of a name is the object it stands for, the sense is something else.
In programming language terms, the simplest example I can think of for the analogous result is that in a purely functional programming language, there can be two very different implementations of the same function (where "function" here means "mapping of arguments to results"). The two implementations have the same reference (the same function in the sense I listed), but different senses (the fact that the two implementations do the same thing is not tautological; it may require a very non-trivial proof).
Are you adequate?
all in all, they are just approximations...much like a lego car modelled after a real one.
That's because all the cool kids moved to VPS hosting ages ago, where you run whatever the fuck you want on a (virtual) server you have root on for a few dollars a month.
And so will my multi-million LOC, 24/7, multi-thousand CPU, Python business app.
Different strokes for different folks, I guess.
While I don't discount syntax as a factor, I'm not convinced that this is really the most important one. See below.
Frankly, I find that they are most often dismissed because the constructs in question are "too complicated," even when the examples shown are more concise and flexible ways of doing things that the programmer already does all the time.
For example, all competent imperative programmers know the following two patterns very well:
Programmers who complain about functional operations like map, fold and reduce being "too hard" or "too complicated" write what's structurally the same stupid loops, over and over, every single time they have to perform a computation of this form; they master the concepts of map, reduce and fold in practice, but insist in verbosely spelling them out at the low-level every single time, over and over. I call it BabyTalk programming; they think the program style is "clear" because they can immediately understand what each individual operation is doing; but this is only so because they're not abstracting away the most common complex patterns.
And since you brought up Python, well, Guido's comments on reduce() are a prime example of this; and Python is the reigning BabyTalk language.
Are you adequate?
This is the most retarded piece of drivel in the history of the Internet!
While I agree on Socrates and Aristotle, Plato should definitely be Algol, Fortran, or Cobol.
Kant should at best be associated with BrainF*ck, or some other useless nonsensical irrational joke of a programming language. Even that would be a greater honor than he deserves!
Python should in fact be associated with the very opposite philosophy, and the greatest philosopher of the twentieth century: Ayn Rand. Python is clearly something Howard Roark would design: clean, rational, and brilliant.
= intercal. Impossible to understand yet... instructive.
This may be the first time I've ever wanted to do so, but I'd mod this Anonymous Coward up if I had points.
And I'm even a fan of PHP
"The cup is in turn designed for holding hot or cold liquids, and has an open rim and closed base." --US Patent #5425497
We've kicked around possible ways to merge the two at the c2.com wiki so that we can hopefully end the Great Standoff; and I've come to conclude that *encapsulation* is the biggest impediment, and key philosophical difference between OO and relational.
Relational generally "shares" all operators, while OO lets encapsulation determine what gets what operator. If there is to be a limit to operators in relational, it is handled via a set-based security system, not encapsulation.
Encapsulation does not scale well as an operator management technique in my opinion. Relational does not view the relationship between operators and nouns (entities) as anything special: it could be one-to-one, one-to-many, many-to-many, etc. OO tends to elevate the status of one-to-one "packaged" relationships because it views "objects" as special things tightly bound with self-handling tools, hence the name "object oriented".
Relational has a more complex mix-and-match view of things whereby borders are relative and situational. There is no master or primary "object". I see OOP as primitive in this regard. Perhaps it better matches the "real world" because of this, but the real world is often too limiting. Cyberspace can emulate gazillion dimensions. Let's use them.
Table-ized A.I.
That's an interesting way to put it. But since one can be representationally equivalent of the other, a more practical question may be: "Is it better to model the world (or our problems) with sets or with graphs?"
Table-ized A.I.
...
?
"The cup is in turn designed for holding hot or cold liquids, and has an open rim and closed base." --US Patent #5425497
I would go with Lisp for them.
An Education is the Font of All Liberty