做爲一個軟件開發者,你不可避免地須要用到各類工具來設計、理解、編輯任何程序,本文做者按類型總結了10類開發者須知的工具。CSDN摘譯以下: html
免責聲明:「最好」的軟件工具一般屬於主觀見解,也許你並不一樣意個人觀點,可是也能夠從中獲取所需。 java
1. 版本控制工具 git
不管你是在100人的團隊,仍是一我的作設計、開發,版本控制工具都能讓你從中獲益。 程序員
經過版本控制工具,你能夠保留同一文件中在不一樣時期的版本,這對圖表和二進制文件都適用,尤爲適合文本類型文件。 macos
主流版本控制工具能夠分爲兩種:集中式和分佈式。集中式版本控制工具須要一個服務器存儲倉庫,你能夠在合適的時候把代碼提交到服務器上。而分佈式版本控制工具(DVCS)則不須要中心服務器:每一個倉庫的使用者都有本身的本地緩存,將更新從一個本地倉庫傳遞到另外一個的過程很是簡單隻須要從源系統push或者從目標系統pull便可。 apache
目前最流行的開源版本控制工具要數Subvision(SVN)、Git以及Mercurial(hg)了,其中SVN是集中式版本控制工具,Git和Mercurial則是分佈式的。 編程
值得注意的是,有不少知名網站提供倉庫託管服務,好比bitbucket.org、SourceForge、GoogleCode以及Github等等,這些網站都提供免費託管服務,但在具體服務支持與收費上各不相同。 瀏覽器
2. 文件比較工具 緩存
不管你是想要與版本控制系統合併代碼,仍是僅僅想要比較兩個文件的不一樣,文件比較工具都是很是有用的。其中diff是一個很是有名的命令行比較工具,我也喜歡Beyond Compare這款圖形界面比較工具——惋惜它並不是免費,可是並不貴並且簡單、強大。除此以外,常見文件比較工具還有SourceGearDiffMerge(免費、跨平臺=Windows/OS X/Linux),Compare It!(收費、僅支持Windows),DeltaWalker(較貴、僅支持OSX)以及UltraCompare(較貴、跨平臺)。 安全
3. 編輯器
處理文本文件的難以取決於你使用的軟件。重量級的編輯器,如Eclipse、NetBeans、Visual Studio都屬因而IDE(integrateddevelopment environment,集成開發環境),若是你須要作特定的工做,他們都很是強大。但有時候你僅僅想要簡單、快速地編輯文件,系統自帶的編輯器(Windows下的Notepad和Machine下的TextEdit)雖然輕量可是不夠強大。這裏介紹幾個中量級的編輯器:Windows平臺的Notepad++、Mac平臺的TextWrangler都是不錯的免費編輯器,還有GNUemacs、Vim這樣強大、可擴展的自由軟件。
4. 構建工具
若是你使用IDE進行開發,僅僅單擊「Build」便可覺得你編譯程序的源代碼。可是注意:編譯軟件時經常有不少細節的編譯選項,而使用IDE時經常被深藏在複雜的菜單中。我認爲,專業的程序員應該使用可定義的構建工具,選擇正確的編譯選項達到最優效果。
5. 腳本工具
有時候你須要快速整合多個軟件以達到某個目的,這時很難選擇C或者C++這樣須要編譯的編程語言,由於它們在執行前須要先編譯成可執行的文件。此時,更好的解決方案是腳本語言,它們一般集成在操做系統中,編寫一個腳本甚至能夠在多臺計算機中運行。
常見現代腳本語言有Python、Ruby、Groovy、awk、Perl等等。不論你更喜歡那種,我建議你選擇其中一款。我很喜歡Python,不只由於它簡單、鼓勵好的編程規範,並且擁有強大的調試工具——基於Eclipse的PyDev。藉助PyDev,你能夠設置斷點、並端部執行你的腳本。
6. 數值分析工具
除非你打算作一些及其簡單的項目,或者爲嵌入式系統進行邏輯編程,你經常會須要對數據有一個直觀地瞭解——圖表、或者曲線圖,又或者僅僅想要解一個方程,這時候你會須要數據分析工具,好比MATLAB、Mathematica、MathCAD,它們都非免費,甚至價格昂貴,可是價格強大。
若是你的需求簡單,SciLab、Octave、PyLab這些MATLAB的免費「克隆」版本也提供了某些MATLAB的基本功能,語法也與MATLAB相近或相同。其中PyLab用Python實現,若是你懂Python,或許能夠將其利用到科學計算領域。
7. 文檔工具
工程環境中,你經常須要和他人分享想法,不少軟件均可以作到這點,好比使用微軟的Visio能夠提供流程圖、表,Word來編輯文檔,PowerPoint來作演示。但它們都非免費,有時候你更須要免費或者更特化的文檔工具。
8. 終端以及通訊工具
有時候你會須要經過串口進行通訊,這時你就須要終端工具了,在Web瀏覽器出現以前,這更爲常見。曾經與Windows綁定的HyperTerminal不夠強大,不建議使用,並且微軟在Vista以後也再也不集成它。我我的更喜歡PuTTYtel和TeraTermPro。其它通訊工具如FTP及其安全變種SFTP、SCP方面我最喜歡Cyberduck,如今支持Mac和Windows。
9. 軟件QA(質量保障)工具
對於開發者來講,爲避免bug你確定須要QA工具。我不是很清楚這方面,可是知道大概能夠分如下幾類:
10. 基本命令行工具
雖然GUI對於計算機交互是革命性的改進,但還有不少事用命令行作起來更加簡單,好比使用腳本可以輕易組合多個程序。若是你使用OS X或者Linux,那計算機上通常已經預裝了UNIX命令行工具,Windows用戶能夠下載相應的二進制文件。
其它,諸如7zip、CPU-Z、System Explorer之類的軟件雖然沒有放在這個列表中,但也都是很是實用的工具。