Document directory
- 1. version control tools
- 3. Editor
- 4. Build tools
- 5. Script tools
- 6. Numerical Analysis Tools
- 7. Document tools
- 8. terminals and communication tools
- 9. Software QA (Quality Assurance) Tools
- 10. Basic command line tools
As a software developer, you inevitably need to use various tools to design, understand, and edit any program. The author of this article summarizes the 10 types of developer notice tools by type.
Disclaimer: "best" software tools are generally subjective. You may not agree with my opinion, but you can also obtain the necessary information from it.
1. version control tools
Whether you are a team of 100 people or a design, development, or version control tool, you can benefit from this.
With version control tools, you can retain versions of the same file in different periods, which is applicable to both charts and binary files, especially for text files.
Mainstream version control tools can be divided into two types: centralized and distributed. Centralized version control tools require a server storage warehouse. You can submit the code to the server when appropriate. The distributed version control tool (DVCs) does not require a central server: Each repository user has its own local cache, the process of transferring an update from a local repository to another is very simple. You only need to push the update from the source system or pull from the target system.
Currently, the most popular open-source version control tools include subvision (SVN), git, and mercurial (HG). SVN is a centralized version control tool, while git and mercurial are distributed.
It is worth noting that many well-known websites provide warehouse hosting services, such as bitbucket.org, SourceForge, googlecode, and GitHub. These websites provide free hosting services, however, the service support and billing vary.
2. file comparison tool
Whether you want to merge code with the version control system or just compare two files, file comparison tools are very useful. Diff is a very famous command line comparison tool. I also like beyond compare, a graphical interface comparison tool. Unfortunately, it is not free, but not expensive, simple, and powerful. In addition, common file comparison tools include sourcegeardiffmerge (free, cross-platform = Windows/OS X/Linux) and compare it! (Charged, only supports windows), deltawalker (more expensive, only supports OSX) and ultracompare (more expensive, cross-platform ).
3. Editor
The difficulty in processing text files depends on the software you use. Heavyweight editors, such as Eclipse, netbeans, and Visual Studio, all belong to the integrated development environment (IDE). They are very powerful if you need to do specific work. However, sometimes you only want to edit files in a simple and fast manner. The built-in Editor (notepad in windows and textedit in machine) is lightweight but not powerful enough. Here we will introduce several medium-level Editors: notepad ++ on Windows and textwrangler on Mac are good free editors, as well as powerful and scalable free software such as gnuemacs and Vim.
4. Build tools
If you use IDE for development, just click "build" to compile the source code of your program. However, note: compilation software often has many details of compilation options, while IDE is often hidden in complicated menus. In my opinion, professional programmers should use customizable build tools and select the correct compilation options to achieve optimal results.
5. Script tools
Sometimes you need to quickly integrate multiple software to achieve a specific purpose. In this case, it is difficult to select a programming language such as C or C ++ that requires compilation, because they need to be compiled into executable files before execution. In this case, a better solution is the scripting language, which is usually integrated into the operating system and can be compiled to run on multiple computers.
Common modern scripting languages include python, Ruby, groovy, awk, and Perl. Whether you like it or not, I suggest you choose one of them. I like python very much, not only because it is simple, encourages good programming specifications, but also has a powerful debugging tool-eclipse-based pydev. With pydev, you can set breakpoints and execute your scripts at the end.
6. Numerical Analysis Tools
Unless you plan to do some simple projects or perform logical programming for embedded systems, you often need to have an intuitive understanding of the data-charts, or graphs, or you just want to solve an equation. At this time, you will need data analysis tools, such as MATLAB, Mathematica, and Mathcad. They are not free, even expensive, but powerful.
If your requirements are simple, the Free "clone" version of SCILAB, Ave ave, and pylab also provides some basic functions of Matlab, And the syntax is similar to or the same as that of Matlab. Pylab is implemented in Python. If you know python, you may be able to use it in the scientific computing field.
7. Document tools
In the engineering environment, you often need to share ideas with others. Many software can do this. For example, Microsoft Visio can provide flowcharts, tables, word to edit documents, and PowerPoint for demonstration. But they are not free. Sometimes you need free or more specialized document tools.
- Graphical visualization tools-- I often use graphviz Based on command lines and yed with interactive interfaces.
- Flowchart-- Use graphics to express ideas. Quick sequence dimo-editor is basic, but it is enough to help you draw these images.
- Typographical tools-- You can use WYSIWYG or non-WYSIWYG software, or Tex or latex.
- Code self-document Tool-- Doxygen is very common. It can convert comments in code into documents, while javadoc is a document tool designed for Java.
8. terminals and communication tools
Sometimes you need to communicate through the serial port, then you need a terminal tool, which is more common before the web browser appears. HyperTerminal, which was previously bound to Windows, is not powerful enough and is not recommended. Microsoft will not integrate it after Vista. I personally prefer puttytel and teratermpro. I like cyberduck most in other communication tools, such as FTP and its security variants, SFTP and SCP. Now it supports Mac and windows.
9. Software QA (Quality Assurance) Tools
For developers, QA tools are required to avoid bugs. I am not very clear about this, but I know it can be divided into the following categories:
- Static analysis tools.It is a tool for analyzing software. It can analyze software source code or compiled files. The most famous is the C language-oriented lint. Lint will mark the red line in the errors of your code as always, marking your errors. The Java language corresponds to findbugs, which helps to measure Code complexity. Generally, good programming functions are relatively small. If a function contains more than 20-30 lines of code, you can consider breaking it down, this makes it easier to design and debug.
- Unit Test and code coverage. Large-scale software testing is often very difficult, which is widely accepted; however, it is much easier to use unit testing to test smaller software modules. However, unit tests also have areas of expertise. For example, for embedded systems, although cross-compilation can be used to find bugs on PCs, the results cannot be consistent on embedded machines. Unit tests also have certain skills, such as writing reusable test scripts. Code coverage tool I have only seen my colleagues use cantata ++, but it is not cheap.
- Code "beautifier ".If you and your colleagues use the same encoding style, it is easier to find simple syntax errors. We usually have their own programming habits, but we can achieve a unified programming style through software-such as automatic indentation, Tab space conversion, and so on. I have used uncrustify AND ITS GUI tool universalindentgu.
10. Basic command line tools
Although the GUI is a revolutionary improvement in computer interaction, there are still many things to do with command lines, such as using scripts to easily combine multiple programs. If you use OS X or Linux, Unix Command Line tools are usually pre-installed on your computer, and Windows users can download the corresponding binary files.
Other software such as 7zip, CPU-Z, and system Explorer are not included in this list, but they are also very useful tools.