Sunday, September 25, 2005

C#, .Net, and Mono

So, I've been doing some tutorials on MSDN on the C# language. It seems like Java without the emphasis on a virtual machine. Or, like C++ with emphasis on portability of useful code. Either way, the gun is in a lock box instead of just having the safety on or being taken away completely. I'm going to be looking into Python.Net and IronPython very soon, as well, and the Boo programming language, which is a Python-ish .Net language.

So, from the get-go, I admit that I do like C# for what it is. I've been looking for a compiled language for those cases when I would care to have one, and maybe it would be a good way to diversify my skill set. I've even considered an eventual implementation of Involgo in C#. With Python.Net I can wrap a .Net assembly for Involgo into the original Python API, and let any existing code still work, but likely faster.

C# looks like it would let me do a lot of the things that I like Python for, but without making them too difficult to manage like some other compiled languages. Delegates are nifty for passing function-like objects. I can pass objects without a specific type when I really need to, or have static typing when I need/want/think I want it. And, the automatic usability from so many languages is just "to die for".

I do wonder, however, what the consensus among the .Net community is for the Mono project. Most .Net users are definitely Microsoft users, so what do they think about us "others"? In the FS/OS world, the community is king. In their world, the community is surely strong, but it is far different. I wonder often about this rift between geeks. We're all after the same thing, we just think there are different ways to go about it.

1 comment:

Anonymous said...

C# and the other .Net languages aren't strictly 'compiled' languages like C, C++, etc. They compile to an intermediate byte-code much like Java does.
It's one of the reasons .Net was language independent and with the Mono project should be easily platform independent.
The performance difference between the two isn't as great as you'd expect especially as Java is a much more mature language. With a .Net app you'll find it appears huge in comparison to what it actually is - thats the accompanying .Net runtime.

Swings and roundabouts.

Personally I'd stick with Python all the way. Also give Ruby a go.