a bigger pond [04/30/2006 06:07:50]
I'm thinking seriously about ditching python in favor of C# as my main programming language.
That's a hard thing to say, because it means walking away from the codebase I've been tinkering with for the past six years. But maybe that's a good thing. The code I have could have been rails, but when I look at rails today, I'm not impressed. What's the point of building a tutorial site for yet another python framework, just to compete with all the other python frameworks, when you still have to do the job of convincing people to use python?
One problem is that python tools suck. Sure, there are IDE's out there that do code completion, and there's a refactoring browser, and even several GUI builders, but these all look like toys compared to visual studio express, which Microsoft now gives away for free.
C# the language isn't quite as abstract as python. There are no list comprehensions or metaclasses, but it feels like a step up from java. C# has:
- anonymous functions (delegates)
- a python-like
yieldstatement - a nice type system with generics
- interfaces
- properties (Yay!!)
Python's expressiveness blew VBScript out of the water six years ago, but C# is a real, viable language. I could see myself using it on a daily basis.
Of course, you can also chunk up to a higher level language if you need to, since so many other languages work with .NET - there's IronPython, which is sanctioned by Microsoft but appears to be rather out of date, and Boo, which is like python, not to mention LSharp and DotLisp and even stranger beasts like nemerle and mercury and lexico.
The other main advantage is the huge number of developers. Thanks to Microsoft's reach, .NET is a much bigger pond than python. I can hire .NET developers anywhere, or if i want, I can get a job as a .NET developer. (The Java pond is bigger still, but Java always felt clunky to me.)
As an example, there's an app I've been wanting to do for a long time involving interactive diagrams. In python, I'd have to build this from scratch (probably starting with wxOGL) but a quick google searches turned up several .NET libraries, including the beautiful and open source netron.
And then finally there's mono, the open source .NET implementation, so I can run and this stuff on my linux network or on my mac. Maybe even offer hosting through mod_mono. Who knows?
I guess most of all what I'm saying is it's time to stop being a hermit. There's no point spending years trying to make everything perfect while the rest of the world passes me by. I don't regret the work I've done, but it would sure be nice to forget about all that infrastructure and actually write some applications again.
