Categories
long Software and Programming

IDE Fix

I’ve been fiddling about with Dev C++, a Windows IDE for the free MinGW compiler system. It’s much improved from the 4.0 version, and more impressive than the “minimalist” Visual-MinGW project, but it still has a bit of a rough look, and an annoying update utility that just farts hax0r-esque attitude at the user – calling the platform you’re developing on Micro$lut Winblows really inspires user confidence, I’m sure…

Anyway, I’ve been tempted by two other free IDEs, so over the weekend I formatted a linux partition (Mandrake 7 is just taking up space) and downloaded both of them, along with the SDKs they depend on.

The first is SharpDevelop (#develop), a GPLed IDE for Microsoft’s .NET. I downloaded the source version and Microsoft’s freely available .NET Framework SDK (this is the monster that really drove me to recycle that partition). The installation was a ZIP archive, and contained no executable, but it had a batch file called build.bat. I double-clicked it and it ran the whole build process, fast and with no fuss. Shortly after, I had an executable to run.

I am bloody impressed with SharpDevelop, and (by extension) with the .NET framework in general. SharpDevelop looks a beautiful, feature-rich and friendly. It’s got code-completion, class-browsing, visual design of forms, an extensions framework and a unit-testing framework. It feels deep and looks… sharp.

(It’s not quite without problems, though: it crashed twice in the short time I’ve played with it).

One thing that could explain why SharpDevelop appears so impressive is that the developers appear to be very serious and dedicated, but another reason I think is that they’re working in a very high-level language, using a big library that wraps a lot of the complexity of the Windows API in nice and sensible objects, as well as providing lots of useful services. From the code samples I’ve seen, working in C# is probably pretty similar to working in Visual Basic, except the syntax is more Java-like.

It’s tempting to conclude that the better your tools, the better the product (or that the easier the tools, the faster the development, or whatever): Visual-MinGW (C++) is less impressive than DevC++ (Delphi) which is in turn trumped by SharpDevelop (C# and .NET).

On the topic of .NET, here’s an article about using COM components in the .NET framework (here’s a longer article on the same topic on MSDN).

The other IDE I downloaded is Eclipse, which uses Java and Sun’s Java SDK (at least I think it does, so I downloaded them. After installing the 300+ Mb .NET SDK, they both looked like small downloads). Eclipse is supposed to be “an IDE about nothing”, to paraphrase Seinfield, intended to be a platform that will host a slew of development plug-ins. It’s open source, but has an impressive group of big corporate backers, foremost among them IBM (and it’s apparently seen as in opposition to Sun’s own efforts, as hinted at by its name).

Along with Eclipse, I downloaded the CDT, which is the add-on for C++ development. However, I didn’t get far with that – I didn’t even manage to find where I was supposed to set-up my command line tools (compiler, make, etc). Although I admit I didn’t really try too hard.

However, when I tried a Java project, I was very impressed. I added the source files for my old bubbles applet to the project. This is Java 1.0 stuff done in Microsoft’s Visual J++ (version 1.0), and Eclipse immediately marked the errors (mostly deprecated methods) with useful explanations in the tooltips. The entire IDE seems to “compile as you type”, so that errors show up immediately. It also has code completion, good class browsing, lets you jump to declarations or implementations of method (including the source of the library methods, which is useful), and in general is a very pleasurable working environment. It didn’t crash, although it is dreadfully slow sometimes (I need a more powerful computer, not just a bigger disk. What else is new…)

Fiddling with Bubbles, I found a useful guide to deprecated methods in the 1.1 AWT.