I’ve always been interested in development tools and their ability to contribute (quite significantly in some cases) to the productivity of the developer in question. I’m not one of those individuals who loudly proclaims the VI is the end-all and be-all. No, quite the contrary. Although I love VIM, I _know_ there are many situations in which it is far from the appropriate choice… At any rate, here are some tools for Windows developers that should definitely be considered.
Araxis Merge. As Matt would say – this is a quality program. Hands down, this is the best GUI diff tool I’ve used. With 3 way compare, easy folder and file comparison and a well implemented method of transferring changes, it’s intuitive and definitely speeds up the merging process. It’s one disadvantage is that it can be slow at times…
Cream for VIM. “Oy?!” I can hear you saying. Cream’s an interesting add-on to VIM in that it tries to present a simpler and more polished interface to VIM. In addition, it defaults to modeless operation. Commonly used items are placed in pull-down menus and much _much_ more. Now, although I use it I’m still not 100% satisfied with it. There are a number of bugs (setting options via the command line doesn’t modify them in some cases) et. al. However, I find that the polished interface allows me to do my work faster – although I’m most often in expert (i.e. traditional VIM) mode. For all you diehards out there, I’d recommend VIM.
4NT or Cygwin. For all those times you need to supplement the Windows shell with something more powerful. Cygwin’s the full blown environment and my personal choice, although 4NT has its merits too – namely its basically an NT shell with improved tab completion and some common built in *nix commands. For the diehard shell guru in you ;) I’ve heard that the next version of Windows should have a much improved shell that’s fully scriptable in .NET. Sounds extremely interesting and something like that will probably replace utils like these…
Perl or Python. Ah…scripting. Many a time you’ll have to do some tiresome/tedious task that you’re _sure_ you can automate. So, you spend countless minutes/hours researching up what you have to do, learning the basics of a scripting language and coding up your algorithm to do it. Was it faster than doing it manually? Who knows? :-) But, suffice it to say – we’ve all done this… Python’s my personal favorite (simpler and cleaner syntax, OO by design), although I know people who swear by Perl. And we all know that Perl’s excellent at regex…so that might sway you. In the future on Windows I can see them being displaced by .NET languages _especially_ when Longhorn rolls around.
Eclipse. Ok. Yeah – the IDE that I’ve enjoyed using the most. Eclipse may not be the _best_ IDE (yet). I’ve heard so many excellent reviews about IntelliJ IDEA for Java development and for C, I’ve got to say that Visual SlickEdit is by _far_ the superior tool. _However_ with a well developed, open plugin architecture, a huge community surrounding it and an excellent price (FREE) it really should be considered. It’s the EMACS of the modern era ;-) If you’re doing Java work, the latest series – 3.0M9 – works very well on Windows (although the speed could still be improved) and its feature set approaches IDEA’s. However, I’m given to understand that IDEA’s interface and ability to intuitively help the programmer is a lot, lot better For C work, I would not recommend the CDT. Although its useful, it pales next to SlickEdit and Visual C++. I remain hopeful though and wish for the day I can use Eclipse for C/C++ work.
Any other suggestions, disagreements etc. would be much appreciated!