Practical Solutions for Real-Life Programming

Home Arturius Errata Resources Test Programs
Articles Compilers Libraries Site Map Tools
Site Map: /Tools/index.html Visit The Imperfect C++ Website!

Tools

"Write it, fix it, categorize it. We've got your tools for all those bools!"

Very little can be achieved without the appropriate tools. Take to heart the philosphy of the Pragmatic Programmers and automate everything. To start you off, here are several of the development and system tools I use regularly. They won't cover all your needs, to be sure, but it's a reasonable start1.

Note: The tools listed below are provided according to the conditions outlined in the over-arching disclaimer for the Imperfect C++ CD.

Included on the CD!: located locally (on the CD).
Link To Website!: located on the World Wide Web 2.


Development Tools

I use all these development tools in the course of my work, and I recommend them all, even the ones I wrote!

Link To Website! CVS
Manufacturer: open source community
Home Page: http://www.cvshome.org/

Concurrent Versions System (CVS), is the dominant open-source network-transparent version control system. CVS is useful for everyone from individual developers to large, distributed teams.

Also you should check out the great book "Pragmatic Version Control using CVS" by the Pragmatic Programmers.

Link To Website! Doxygen
Manufacturer: Dimitri van Heesch / open source community
Home Page: http://www.stack.nl/~dimitri/doxygen/

Doxygen is one of the leading open-source source code documentation tools. I use it with most of my libraries - STLSoft recls Open-RJ UNIXEm - and don't have many complaints. So long as you do the professional thing, and document as you code, you'll have no problems. Still, writing the documentation itself is still a PITA - if anyone's got any tips for how to make that easier, please let me know!

Link To Website! NDoc
Manufacturer: open source community
Home Page: http://ndoc.sourceforge.net/

NDoc is a documentation tool for .NET development. It can analye your .NET projects and is able to produce help in HTML, CHM, LaTex and MSDN formats. Nothing much more to say, other than it's got GUI and/or command-line forms, and is readily integrated into make-driven build chains.

Link To Website! Synesis Software Development Tools
Manufacturer: Synesis Software
Home Page: http://synesis.com.au/devtools.html

These are a miscellaneous collection of scripts and executable programs, including source manipulation, version control drivers, wizards and code generators. These are available online, and are updated from time to time. They're not included on the CD because some of them were decidedly lacklustre at the time that I was preparing it, and I decided not to embarass myself. By the time you read this, they'll be online in a robust and de-uglified form. ;)

Link To Website! Vim
Manufacturer: Bram Moolenaar / open source community
Home Page: http://www.vim.org/

Vi IMproved - says it all. Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files.

I alternate hundreds of times a day between Vim and Visual Studio '98. Maybe I should make my mind up, or maybe "evolve" to a better editor, such as Emacs, or super-charge my typing speed with Visual Studio.NET (yes, I am kidding!). Anyway, where VS'98 lets me down, Vim satisfies all my needs. Try it, use it, love it. (Plus, it gives you the Vi skills to survive on unfriendly UNIX boxes.)


System Tools

Link To Website! Dependency Walker
Manufacturer: Microsoft / Steve P. Millar
Home Page: http://www.dependencywalker.com/

This is a fabulously useful tool, that used to be part of the Microsoft Platform SDK but is now provided free of charge by Steve Miller. It provides a graphical, hierarchical decomposition of the dependent dynamic modules (DLLs). This can be extremely useful in diagnosing "DLL Hell".

Included on the CD! Synesis Software System Tools
Version: 2.5.2.370
Manufacturer: Synesis Software
Home Page: http://synesis.com.au/systools.html
File: systools_linux_2.5.02.0370.tar, Operating System: Linux, Size: 120 KB
File: systools_win32_2.5.02.0370.zip, Operating System: Win32, Size: 621 KB

These tools have evolved over the last several years to provide functions that are either not available as part of the operating system, or whose interface is poorly designed or somewhat inaccessible. If you're a software engineer, you'll find these tools most helpful, since most of them have come about to directly serve my needs.

A good example of this is the whereis tool, which has -i, -l and -p flags that constrain the search to the locations specified in the INCLUDE, LIB and PATH environment variables.

Another good example is nvx (Environment Expander), which expands any named environment variable(s), or the predefined variables via the same options for whereis, and can also mark any that don't exist. This is a great help at diagnosing problems in compiler environment settings.

But the tools can also be of use to system administrators and power users: I've had plenty feedback (and some requests) from such folks.

Link To Website! SysInternals
Manufacturer: Mark Russinovich and Bryce Cogswell
Home Page: http://www.sysinternals.org/

The unmatched rich source of Windows system utilities - and if any OS needed utilities it's Windows - from the inestimable Mark Russinovich and Bryce Cogswell. If you are doing serious things with Windows, you need to be checking out this site regularly.

A word of warning for C++ programmers: the code's pretty hideous looking C. Still, you can't fault them for that, though, because they get it to do some pretty impressive things.

Included on the CD! Windows Shell Extensions
Version: 1.6.1
Manufacturer: Synesis Software
Home Page: http://shellext.com/
File: shellext1_6_1.exe, Operating System: Win32, Size: 169 KB

Windows Shell Extensions are small, COM components that plug into Windows Explorer and customise its behaviour. Since using a mouse and/or doing things manually in windows is marginally better than have teeth pulled, I've been writing Shell Extensions for a long time. Available at http://shellext.com/ are some of the general purpose ones I've released free of charge. I've had thousands of downloads of these in the last few years, and only two bug reports (now fixed), so I invite you to download and install them, and make using Windows slightly less onerous.


[*]: All trademarked names are property and © their respective owner. Descriptions taken from respective websites.
[1]: Manufacturer policies on providing these products is subject to change withouth notice to the author.
[2]: Access to resources located on the World Wide Web requires an internet connectivity service.


Valid XHTML 1.0! Imperfect C++ content copyright Addison-Wesley | Additional content copyright Synesis Software Pty Ltd and Greg Peet
Website designed by Greg Peet. Thanks Greg!