It never ceases to amaze me how business is something that happens irregularly and unexpectedly. For a couple of weeks I didn't have anything particular to do programming-wise. That has changed this week. Eric J. Roode, author of the ill-named List::MoreUtil, apparently became aware of my List::MoreUtils (which was there before), and sent me a note that I should take the stuff out of his module and put it into mine. Similarly, I received a suggestino from Slaven Rezic to add a python-alike function zip
. So now I have to translate both to XS.
Apart from that, I thought it might be useful to add a new language to my reportoir. Go figure...it's C# this time. It's really a very nice language. It's often compared to Java and has been titled a plagiarism which is entirely untrue. The only thing familiar from Java is it's sluggishness: You get a noticeable delay before a C# application would start. Runtime-wise however, it feels faster.
The good things about C#: It's convenient in that it has some syntactic sugar which makes the code less chatty than its Java equivalent. It hooks very tightly into the operating system so you can access all the things Java doesn't know about. With Java, I always had the impression that I am really programming a toy-machine and not a real one in that I may only do what the Java-API offers. To a certain exent, the same is true for C# only that this time I may do anything the operating system offers me. Also, it can be easily extended by embedding C/C++ code (I think the official lingo for that is 'unsafe code' which is entirely fine with me). And finally, you can use the familiar Windows widget-set and don't have to work with the Swing-cripple.
One remark about .NET: I simply can't understand why people hate it so much. It's really just a large API with the additional bonus that it is identical for C++, Visual Basic, C# and J# (whatever that is). Cunning as I am, I already came up with a useful pattern that can be deduced from that: Write your prototype in C# and once it's all working, translate to C++ which is a relatively smooth transition under .NET. Additional bonus is the fact that you're probably using Visual Studio. I am not much of an IDE guy in that I try to confine myself to vim and a couple of consoles but I have to say there's something quite appealing about that IDE in the way it can bundle source files in the various .NET languages, documentation, GUI design, Debugger etc. all together.
I also have a few rants, of course, but I save those for another entry a little later.