Coding Microsoft

To move or not to move – C#

From the time I migrated from FoxPro/Clipper*1 in MS-DOS world to Windows (over a decade back), I have been a strong Visual Basic supporter. From time to time, in between I did some coding in C, C++ and to an extend in JAVA when it first came, but pretty much I have been a VB guy. (Just to prove that I did program in C++ check my Delete ’97 – a console application that sends files deleted from command line to recycle bin). When Web came, I sticked to VB, as most of my web programming was with ASP and VBScript. In fact, I did as little as little possible in JavaScript – which too was mostly limited to client side (browser) scripting.

In between, whenever I did program in C++, I felt it to be a waste of keystrokes to add semicolon in each line and I didn’t like the look of curly brackets every where. On a more serious note, coming from Basic/dBase world I felt comfortable with Visual Basic especially its support for UI, Database tasks and the availability of more high-level data types like currency, strings and more.

So when C# came, though I liked its power of expressions, my old dislike for C family of languages continued and kept me away from doing anything serious with it. And VB.NET gave me pretty much of what I wanted and also at the end of the day it was all ending up as MSIL (Intermediate Language) whether you did the initial writing in VB.NET or in C# or in PERL.NET.

But something happened yesterday that might change this. I listened to Anders Hejlsberg (Microsoft Chief Inventor of C#) talking about new features they are introducing in C# 2.0. The new features include Generics, Anonymous Methods, Nullable types, Partial Types and more. Especially I was very impressed with using Anonymous Methods in place of delegates; this can give great expressiveness with a simple syntax.

Anders Hejlsberg

So now, I am left to thinking about switching to C#. Even if I don’t move completely, one thing is sure, I am going to give this C# 2.0 a serious try.


*1 Though C++ was the first Object Oriented Language I learned, the one I used a lot, loved and appreciated was Clipper 5.x. The code-blocks (this is the successor to Macros in dBase) in Clipper gave you great power by allowing you to have code snippets in convenient places (even in a DB) and execute them whenever you wanted it. The support the language gave you to do common DB tasks (more so it was a language integrated with a DB Engine) like Input Masks  …, I can go on and on about Clipper 5.x, but let me stop my saying I still look forward to some of its power coming to new languages. Language Purists might disagree with me on the above lines, but then it is a free world :-)