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 Microsoft Visual
Studio Express 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.

Otherwise, I hope to write one myself when I have Binge generating a KParts C# binding.
KDE#
I'm hoping against hope that C# will somehow in a meaningful and timely manner work its way into KDE.
The C++ nature of Qt and of course KDE which in the past have proved to be such an advantage in the speed and quality of development now pose significant technical challenges in implementing modern popular languages as at least 2nd class citizens. SMOKE bindings and similar C proxy libraries are maybe good for proof-of-concept, but are not acceptable long-term solutions.
I've read all of Adam's well thought insights on the subject, but until the dream of intermediate byte code generation either through gcc or llvm become a reality, i think possibly the next best thing is a managed extensions for C++ frontend to gcc. Aside from providing the ability to wrap unmanaged C++ classes, C++ interop carries significatly less overhead than PInvoke. But alas, this is also a long shot since there is no work going on with that that i know of, and mono doesn't currently support mixed mode assemblies anyway.
What other options are there? Switch to GNOME? I've tried to love GNOME, i really have...but it's not happening. This so-called "clean" look that others seem to like looks like garbage to me. I'll maintain my composure and not say what i really think about GNOME's complete and utter lack of form and functionality, since that's not what this post is about.
TT tends to be pretty tight-lipped about any future strategies, so i'll just hope it is impressed upon TT and the KDE community at large that tight linux/.Net integration is a very very good thing.