Kierkegaard and Stroustrup

This Lambda the Ultimate post pointed to an interview with the creator of the C++ programming language Bjarne Stroustrup in which he says he was influenced by the 19th century philosopher Soren Kierkegaard. It immediately reminded me of a Kierkegaard quote to which I find myself drawn over and over:

What I need to make up my mind about is what I must do, not what I must know, except insofar as knowledge must precede every action…The vital thing is to find a truth which is truth for me, to find the idea for which I can live and die. Of what use would it be for me to discover a so-called objective truth…if it had no deeper significance for me and my life? (Soren Kierekgaard)

I am still very much in search of this “idea”. I first saw this quote on Julia Watkin’s University of Tasmania website. During the brief time that I knew her, I enjoyed talking with Julia about philosophy and other subjects. Sadly, Julia is no longer with us. I wonder what she would have had to say about Stroustrup’s interview comments re: Kierkegaard?

I went back to Stroustrup’s book, The Design and Evolution of C++ (Addison-Wesley, 1994) to see what he had originally said about Kierkegaard. Here are the relevant excerpts (page 23):

I have a lot of sympathy for the student Euclid reputedly had evicted for asking, “But what is mathematics for?” Similarly, my interest in computers and programming languages is fundamentally pragmatic.

I feel most at home with the empiricists rather than with the idealists…That is, I tend to prefer Aristotle to Plato, Hume to Descartes, and shake my head sadly over Pascal. I find comprehensive “systems” like those of Plato and Kant fascinating, yet fundamentally unsatisfying in that they appear to me dangerously remote from everyday experiences and the essential peculiarities of individuals.

I find Kierkegaard’s almost fanatical concern for the individual and keen psychological insights much more appealing than the grandiose schemes and concern for humanity in the abstract of Hegel or Marx. Respect for groups that doesn’t include respect for individuals of those groups isn’t respect at all. Many C++ design decisions have their roots in my dislike for forcing people to do things in some particular way. In history, some of the worst disasters have been caused by idealists trying to force people into “doing what is good for them.” Such idealism not only leads to suffering among its innocent victims, but also to delusion and corruption of the idealists applying the force. I also find idealists prone to ignore experience and experiment that inconveniently clashes with dogma or theory. Where ideals clash and sometimes even when pundits seem to agree, I prefer to provide support that gives the programmer a choice.

In Julia Watkin’s book Kierkegaard (Geoffrey Chapman, 1997, pages 107-108), she had this to say:

In his use of the Socratic method, Kierkegaard strove to keep his own view to himself through the use of pseudonyms, acting as an “occasion” for people’s discovery and self-discovery instead of setting himself up as a teaching authority or arguing the rightness of his own ideas. I would urge that it is this feature of Kierkegaard’s writing that makes him especially effective in a time when two main tendencies seem to be especially dominant – a pluralism that accepts the validity of all views but stands by the correctness of no particular view of the universe, and a scientific or religious fundamentalism that is rigidly exclusive of views other than its own. Kierkegaard avoids the pitfalls of both trends, and he also does something else; he makes room for truth, both intellectual and existential, through encouraging people to be open-minded, to be aware of the spiritual dimension of existence, and to venture in life as well as in thought.

Although Stroustrup remarked in the interview referred to above that he is “…not particularly fond of Kierkegaard’s religious philosophy”, there is some resonance between his comments and Julia’s analysis.

2 Responses to “Kierkegaard and Stroustrup”

  1. SoundEagle Says:

    Hi dbenn! Thank you for your excellent post here. If you don’t mind, I would like some clarifications.

    It is clear from your writing here that you place yourself in the empiricist-versus-idealist spectrum far closer to the former rather than the latter. Where would you place yourself in the realist-versus-constructionist spectrum?

    I find your sentence “Many C++ design decisions have their roots in my dislike for forcing people to do things in some particular way.” somewhat unclear as to what you are trying to convey. Please kindly elaborate more. There is no need to introduce me to object-oriented programming as I am familiar with it and have used it in the past.

    Apart from the philosophers mentioned in this post, where and how Nietzsche would fit in the scheme of things pertaining to the scope of this post?

  2. dbenn Says:

    Thanks SoundEagle!

    You might find my post about linguistic determinism and programming languages interesting too:

    I know less about constructivism/constructionism than I should. What little I do know suggests that there is potential for confusion. Can you point me to a resource that clarifies which specific flavour you mean? I have a book by Brouwer about constructivism in relation to PLs that I’ll look at in the meantime too. I haven’t looked at it for a long time.

    I’ll say what I can though. With respect to mathematical entities like number types, I’d say I’m in the realist camp. So too with Science but I think our models only approximate the actual entities. I think they have awaited our discovery, even imaginary numbers. Do I think that PL constructs exist independently in the same way? Perhaps in the formal sense of what is required for Turing Completeness. But I suppose that in the same way that theorems proceed from axioms and mathematics, PL constructs are elaborations of “discovered” entities such as selection, iteration, recursion, variables (memory), mutation. This needs more thought. What’s your view? Have you read interesting papers in this area?

    The sentence “Many C++ design decisions have their roots in my dislike for forcing people to do things in some particular way”, is a quote from Stroustrup. What I believe he is saying is that the programmer should be free to choose the PL construct he/she prefers. I’d have to go back to the context of that comment to represent him adequately but one trivial example might be iteration using an iterator vs iteration over a numeric range to process a data structure that exposes both an iterator and an index-based access method.

    It’s an interesting question as to where Nietzsche would fit in here. I’m going to have to think about that some more before answering. I suppose his views on perspectivism are relevant here.

Leave a Reply

%d bloggers like this: