A lesson in epistemology

I first learnt programming (in FORTRAN) in an introductory course on Computer Science in my first year of engineering. About an year after that I took on a project that required some ‘C’ programming with no knowledge of the language. I did that project moderately well. Some time after that, I learnt C++ from Bruce Ezekiel excellent book “Thinking in C++”, while simultaneously working on another project. Around the time I finished my graduation, I learnt C# mostly by reading an informal specification of the language.

Now, I want to learn F# and after looking at a small number of examples on technical blogs (which got me interested), I decided to download and study the specification of the F# language. I miscalculated. Reading a technical specification is not a good way to learn a language. My previous successful attempt at learning C# from its specification worked mainly because I already had experience in C and C++ (C# belongs to the same family of languages). F# is a functional language (as opposed to the imperative C family of languages) and my experience and concepts in C like languages do not translate to it. I now realize that given my background, I could learn Java (if I wanted to) by reading a technical specification but not F#. The new concepts I need to grasp F# cannot be easily learnt from a technical specification. They will have to be learnt by looking at and trying out numerous examples first, by induction.

What does this have to do with epistemology? The same principle (of induction) applies to all concepts, not just to concepts in specialized sciences. The final “finished form” of a concept is not particularly useful for learning. It is useful only when an approximate form of the concept has already been reached by induction from concrete examples.

As far as this blog is concerned, I have realized from this experience that most of my posts have been attempts at presenting ideas in “finished form”. Without the concrete examples that are necessary to reach these ideas through induction, it is unlikely that anyone who does not already agree with those ideas broadly will take them seriously. The “finished form” is useful for refining and clarifying existing ideas, not for reaching radically new ones.

Advertisements

3 Responses

  1. Possibly you might be interested in Andew Miner’s weblog, “On Coding Style,” here: http://oncodingstyle.blogspot.com/

    Andrew has an interest in the “epistemology of programming.” (I am not a programmer.) He is the coordinator of the north (Seattle) end of our Seattle-Portland Objectivist Network, SPON. (I am the coordinator of the Portland end.)

  2. Burgess,
    Thanks for the link. I do have some interesting questions on programming and philosophy and I would be interested in his ideas. One of them is “Is the current trend towards test-driven-development (TDD) and away from statically typed languages a result of a pragmatic philosophy?” I will put the question to him when I get a chance.

  3. I do not see your logic

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: