Skip to content

Checking out the Competition

Friday, 2 July 2004  |  john ratke

    Since I am somewhat new to C# and .net I decided to follow up on a
    thread I had read on Joel On Software about the new <a href="http://lab.msdn.microsoft.com/express/">Microsoft Visual
    Studio Express</a> product
    line which is targeted at enthusiasts and hobbyists.  So I went, and
    sure enough, Visual C# Express Beta was a free download, and only 50mb.
    Note that they require that you give them a valid email address, and
    also, from what I've read, the evaulation expires next year.



I find it interesting that Microsoft is releasing their tools like this. They probably feel forced to because they don't want to lose the hobbyist market completely to Open Source offerings. If people want to learn how to program, Microsoft has to do something to get them to try their tools, and this is what they are doing. I remember when I was first starting out programming and QBasic came free with DOS. Then if you wanted to compile executables and have more IDE features, you had to buy QuickBasic, which I ended up doing.

Luckily I had just enough harddrive space free in my Windows partition for the Visual C# install. I must say that I was impressed by the simplicity and clarity of the setup. It even had a little check box at the very end saying that you could send your usage data to Microsoft to help improve the setup process (even though the setup process was already only a few clicks). Clicking on the details of that message opened a text file showing the click patterns through the various screens of the setup wizard, and generic info like the free space on the hard drive and the fact that the install was successful.

I think such functionality would be great for KDE. We could have the apps completely control what got logged using a mechanism similar to kDebug. For example:
kUsability << "Button 1 clicked!!" << endl; would log the "Button 1 clicked!!" message to a log file along with the time and the date (somewhat important for determining how long users are staring at the screen with a confused look on their face). Then something could trigger popping up a dialog to ask the user to send this anonymous data to KDE to help us with our usability. Sending the data could be accomplished via email as I believe we do for bug reports today. Does any KDE app do anything like this?

The Visual C# IDE overall is very polished. I felt that the only Beta quality part of it was some missing help files. With the form editor it is very easy to create form layouts, including menu bars, tool bars, and status bars. And just double clicking a button takes you to the code that will run when the button is clicked. There was an example hello world type console program as well as a simple windows forms application with just one button. There is also a larger example program which is a screensaver that downloads an RSS fead and displays headlines.

As someone who is relatively new to the C# programming language, it is nice to see what looks to be a simple and powerful language, as opposed to the C++ that I am used to. C# is type safe. It's not too complicated. It has easy to use pass by value and pass by reference. Everything is in one or more classes like in Java. It has namespaces. It has easy to use exceptions. It has a built in string type. It has a foreach statement. It has object properties and you can control the accessor methods and don't have to write a lot of code for them. And by virtue of running in the .net environment it has automatic memory management and can interoperate with code written in other languages. I used to not understand what they meant when they used the phrase "managed code." (They do use that phrase a lot.) But now it makes sense that the environment "manages" the memory, specifically the de-allocation. All of these things combine to make C# useful programming language. I know this may sound like a stupid Microsoft commercial, but it really isn't. Let's hope that C# on Mono with MonoDevelop can bring these same qualities to Linux development.