As the saying goes, “if you want to do a good job, you must sharpen your tools first.” From a programmer’s point of view, the use of good tools always brings people twice the result with half the effort. In the face of many tools/software, how should we choose? Not long ago, I posted a post on the c++ forum of CSDN, hoping to solicit broad opinions from everyone, and got a good response. On the basis of sorting out this post, this paper also makes some supplements. Special thanks to DanielWYO, redleaves.

The following points need to be stated:

  1. This article is intended primarily for c++ programmers, but some general-purpose tools/software that are essential to c++ programmers are also included. These tools/software are also available to programmers in other languages.
  2. The evaluation of all kinds of tools/software listed is based on the summary of most netizens’ opinions, combined with the author’s own personal views, for reference, if there is any false, welcome to correct.
  3. Tools/software are listed in no particular order, including Open Source software and commercial products. For the former, I will provide the download address, and for the latter, I will try to provide reference sites for relevant information.
  4. This list is not static, and the tools/software listed are far from universal. If you have good suggestions and ideas, you can also provide them. I will update this list regularly if necessary

The development environment

Turbo c It is a classic tool for C language development in DOS era. It is suitable for two kinds of people: Beginner of C language (especially students) and professionals with nostalgic plots:)
Visual c + + 6.0/7.0 Stable and powerful IDE development environment, with rich debugging function, custom macro function is also a big feature. Microsoft classic, powerful needless to say. Some of the tools that come with it are also nice, like Spy++. But compilers do not support the c++ standard as well as their peers, especially versions 6.0 and earlier.
BCB Borland’s C++ Builder is another powerful IDE that rivals VC, with less speed and stability, but better support for the C++ standard.
Cygwin C++ compiler for Windows, based on GCC, is fully compatible with Windows specific things, such as support for winsock. More information about Cygwin can be found at http://www.cygwin.com.
Dev-c++ Windows platform, a similar VC, BCB c++ IDE development environment, belongs to shareware. The interface is gracious and elegant, and the size is not large. The 4.9.x version has Chinese language support, which does not need to be Chinese. The compiler is based on GCC and fully supports STL. But for larger software projects, I’m afraid it’s not up to the job. From: http://www.bloodshed.net/dev/devcpp.html to find relevant information about the Dev – c + +.
Source Insight Dev c++ and beautiful interface, provides code editing and viewing functions, with rich syntax highlighting functions, can automatically pop up as VC member function prompts, and has a fast and convenient function jump function (but the jump speed seems to be a little slow). However, if the default Settings are not suitable, you need to carefully adjust and modify them. Cannot find names after typedef.

auxiliary

Visual Assist VC IDE environment under the auxiliary programming tools, can identify a variety of keywords, functions, member variables, automatically give tip, and automatically correct the case error, spelling errors. It is a good companion for VC development.
Understand for C++ Learn more about Understand for C++ at http://www.scitools.com.

Program editor

EditPlus A very good text editing software, powerful but very lightweight. Support different language syntax highlight, and Project organization function, with rich custom functions. By setting up the User Tool, you can combine it with other language compilers to form a simple IDE.
Ultra Edit Similar in functionality to EditPlus, you can customize the editing environment through the configuration provided by script files, but not much has changed since version 6.0, and customization is not as convenient as EditPlus in terms of programming.
EMACS Arguably the most powerful and complex text editor in the world, it can also be used as a programmer’s editor.
Visual Slick Edit A powerful programmer with an editor. Most notably, its customization capabilities are very handy and can be compared to EMACS. Has a set of PCODE interpreter, with C syntax, but also can be attached to the dynamic library. It is very convenient to use with mingw. Details about SlickEdit can be found at http://www.slickedit.com.
IQEdit Full function editor for programmers, beautiful interface, can be found at http://pwksoftware.com about IQEdit details.

UML modeling /

Rational Rose Powerful modeling tools, already “household”, the merits of nature need not add comment. From http://www.rationalsoftware.com.cn you can find the detailed information about the Rational Rose.
Visual Modeler MS Visual Studio 6.0 with widgets. A strategic product of Rational and MicroSoft collaboration, it is a simplified version of Rose.
Visio Microsoft’s modeling tool, which feels a little more personal but is less versatile, powerful, and specialized than Rose, supports forward code generation and reverse engineering of code.
Together Another powerful modeling tool, written in Java, has a good reputation, though it is a bit slower. From http://www.togethersoft.com can find detailed information about the Togather, in addition, the following website provides a tutorial on Together:

http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6
Visual UML Support a variety of language types, such as: VC, VB, DELPHI, CORBA IDL, etc., can directly generate code from UML design diagram, easy to use, completely suitable for Personal use, the interface is also very clean. Detailed information about the Visual UML can be found from http://www.visualObject.com.
SmartDraw General chart making software, can be used to make organizational charts, flow charts, statistical charts, etc. With the gallery, basically meet the needs of making all kinds of charts. Detailed information about SmartDraw can be found at http://www.smartdraw.com.
PlayCase Domestic object-oriented modeling software, compatible with UML and IDEF, lightweight software, but the interface looks a little simple, but Mr. Gao Zhan with Delphi completed.

Version control

ClearCase Rational’s version control management software is powerful enough to control many types of documents, including Word, Excel, and PowerPoint documents. But it’s complicated to use, difficult to learn, and not free.
CVS It provides a means of version control management for web-based distributed collaborative development. It is free software and can be customized by script. But it is relatively weak in authority control.
VSS Microsoft version control management tool, relatively simple function, suitable for small team development, it is integrated into Microsoft’s other development tools, easy to use.
SourceOffSite Microsoft tools for developers to remotely access VSS databases, enabling databases to be updated remotely to support telecommuting.


XML

expat The C library for reading and processing XML documents, originally the personal work of James Clark, is simple, lightweight and fast. However, the encoding mode supported is limited, and the most regrettable is that it does not support Chinese. Can be found at http://expat.sourceforge.net for detailed information on the expat.
xml4c IBM’s XML Parser, written in c++, is super powerful. Claimed to support up to 100 character encoding, can support Chinese, suitable for large-scale XML applications. For a small range of applications, this is not the best choice, after all, you need to “carry” a heavy burden of about 12M DLLS. Can find detailed information about the xml4c from http://www.alphaworks.ibm.com/tech/xml4c.
Xerces c++ Apache’s XML project, also implemented in c++, is derived from IBM’s xml4c, so the programming interface is xml4c compliant. However, currently only a few character encodings are supported, such as ASCII, UTF-8, UTF-16, etc., which cannot process XML documents containing Chinese characters. From http://xml.apache.org/xerces-c you can find the detailed information about the Xerces c + +.

test

CppUnit A c++ unit testing framework, can be derived by the way of testing classes, custom specific test scheme. A member of the xUnit family, ported from JUnit, a unit testing framework for the Java language. Can find detailed information about the CppUint from http://cppuint.sourceforge.net.
Rational ROBOT Rational’s automated testing tool provides automated testing features by writing scripts. Its GUI mode script recording function is helpful for GUI software functional testing; Its VU script recording function is helpful to test the data communication function of some software.
Rational Purify The same Rational automated testing tool does not need the source code of the program under test. It can be used to check for memory access errors, Windows API call errors, etc., to complete the reliability test of the software, belonging to the white box test.


The log

log4cpp A c++ library for logging that allows you to log content to different destinations in a customized manner, such as file, console, syslog, etc., while masking irrelevant records by controlling the logging level. Can find detailed information about the log4cpp from http://log4cpp.sourceforge.net.

annotation

Doc++ Annotation document generation tool, according to the document annotations in the source program, can output TeX and HTML format documents. In addition to supporting C/C ++ language, it also supports IDL and Java. Provides only the command execution mode. Can find detailed information about the Doc++ from http://docpp.sourceforge.net.
Doxygen Annotation document generation tool, more complete than Doc++ function, can generate documents including HTML, PDF, RTF and a variety of formats, and a GUI interface, in addition to support c/c++ language, but also support IDL, Java, PHP, c#, etc.. fromwww.stack.nl/~dimitri/do…You can find more information about Doxygen.