關於開發和編程工具,有哪些經驗可以分享給初學者?

包括但不限於圖形界面工具,命令行工具,編程工具,調試工具等等。


我認為開發工具分三類,需區別對待:

1. 可以使用一輩子的工具,學習路徑幾乎沒有盡頭,值得在職業初期就好好考慮,仔細斟酌進行選擇,並在整個生涯中不斷努力力求學到更多,你的工作效率會因為這種努力不斷提高。如:

  • 編輯器: emacs
  • 基本操作系統環境:如shell
  • 基本編程語言: c / lisp

2. 任何時候都需要掌握的工具,這類工具總是每隔一個周期就有新的產品出現,取代掉舊有的產品,但相對來說是值得學習的,能保持一個較長的時代的有效期,如:

  • 版本控制系統:git
  • 社交網路: stack overflow/github
  • 寫作工具: markdown / latex / html
  • 通用編程語言: python / ruby / javascript

3. 特定領域需要的工具,此類工具往往時效性較短,不斷被新產品取代,一旦掌握,能在特定領域獲得非常高的效率,但缺點是很快會過期,通常是幾年之內

  • 各類編程框架: rails / backbone / angular
  • 各類測試框架:xunit / rspec
  • 用戶行為分析工具: ga
  • 各類設計工具: balsamiq
  • 各類項目管理,代碼集成工具: github / trac / basecamp

對程序員來說,工具對效率的影響其實微乎其微,最影響產出的,是對問題理解的深度。
工具只會影響碼農的效率,不會影響程序員的。


不要總試圖去漢化它

======= 非新手或者沒時間的忽略下面的話 =======

其實我當初看到這個題目,我馬上想到就是在學校的時候,浪費一堆時間去找漢化版,結果導致我很多編程習慣/思維 偏軌,後來花了很長時間才改正過來。所以這一點,只是對新手的建議。因為就目前項目開發/編程調試工具來說,80%以上(保守估計)都是來自國外,如果每用一樣工具,都要去漢化,將會浪費很多時間,而且漢化版,往往不穩定,或者功能被閹割,或者因為漢化者的英文水平有限導致一些常識上的錯誤。

至於其它經驗,因為編程語言實在太多,每一種語言幾乎都對應了一個專業的開發調試工具,因此我建議具體問題具體分析,比如這樣問會更好
「關於Python語言的開發/編程工具,你有哪些心得或給初學者的建議?」,這樣會更具體一點。

@李路 的答案已經總結得很好了,不過很抽象,只是提到一些關鍵字,沒辦法給新手起到引導作用。反而有可能讓新手更迷惑, @李路 提到的很多東西,我是聽都沒聽過(本人編程年齡有6年左右),更別說新手看到會有怎麼樣的迷惑。

=================================


實際項目中用到的一些東東,希望有用:
編譯器 gcc/g++
調試工具 gdb ,ddd(gdb視圖封裝,亮點data view)
參考: http://www.cnblogs.com/wangkangluo1/archive/2012/05/28/2521432.html
valgrind 內存泄露檢測 (dmalloc函數)
參考: http://www.cnblogs.com/wangkangluo1/archive/2011/07/20/2111248.html
http://www.cnblogs.com/wangkangluo1/archive/2012/06/05/2535509.html
strace 系統調用跟蹤
參考:http://www.cnblogs.com/wangkangluo1/archive/2012/06/05/2535515.html
ltrace 動態庫調用跟蹤
gprof/gcov 代碼函數調用時間/次數分析
參考: http://www.cnblogs.com/wangkangluo1/archive/2011/07/13/2104977.html
syslog()函數 linux系統日誌函數(調試常用)
參考: http://www.cnblogs.com/wangkangluo1/archive/2012/05/30/2526011.html
sourceinsight 大型項目源碼分析(推薦ide)
pmap 內存空間映射查看
參考: http://www.cnblogs.com/wangkangluo1/archive/2012/06/04/2535121.html
cppunit 單元測試
參考: http://www.cnblogs.com/wangkangluo1/archive/2011/06/02/2068793.html
http://alternativeto.net/ (這個網站能夠告訴哪些類似工具更好,不同平台的替代方案等)
http://www.softpedia.com/ (一個羅馬尼亞的工具,類庫歸檔網站)
(其他參考http://www.cnblogs.com/wangkangluo1/archive/2012/03/01/2374947.html)


門檻低、容易快速上手的工具,最後將成為你的負擔。開始學習曲線比較大的工具,很慢慢成為你最好的幫手。例如vim。

如果你在反覆、重複執行相同的操作,就一定有相應的方法、工具幫你自動化解決(指非創造性勞作),DIY。

把小工具搭配使用,受益無窮。龐大、試圖解決一切問題的工具(幾乎所有IDE的特徵),它的每個功能都不會是最好的。挑選每個領域的最好工具,組合起來用。

所有工具,看一眼別人怎麼說就行(不要浪費時間看別人喋喋不休或爭論不止),立即試用,記下心得。記得小馬過河的故事。


1、不用糾結用什麼工具更好,再好的工具也是需要你去「編」程,不要捨本逐末。
2、再NB的工具,用得不熟都白扯,關鍵看你是否能熟練使用。


作為Emacs黨,我推薦:
Emacs + gdb + cscope


用Visual Studio,你就不需要到處找上面的答案裡面的一大堆工具了,這一個就夠了。


初期先用該領域的主流工具,比如,寫Windows桌面程序選擇Visual Studio,寫iOS或Mac程序選擇xcode,寫Java當然是Eclipse、NetBeans、IDEA,通過遠程修改linux shell腳本選擇Vim、Emacs,這些主流工具社區龐大,有各種經驗分享,碰到問題時可以及時解決。


給前端開發初學者的建議(雖然我自己也只能算個初學者):

1、要重視工具。前端工程師很多是從設計或其它行業轉過來的,對 IDE 沒有概念,很容易忽視工具。真有用記事本幹活的同仁。所以一定要對選擇工具這件事保持足夠的重視,已經有合適工具在手的朋友也不要拒絕新的選擇,有空跟同行多交流。(這裡也想提醒自己,打開視野,擁抱變化。)

2、工具要打磨。磨刀不誤砍柴工。工具的默認配置不可能適合每個人,所以一定要打磨調校。舉一些小例子,比如調一調快捷鍵、挪一挪工具條、換一換配色、改一改代碼提示的詞庫。工具順手了,工作效率會有明顯提升。

3、自己寫工具。廣義上的工具並不局限於別人寫好的應用軟體。一份根據工作需要整理出來的速查表、一套精心編輯過文檔模板等等,都可以說是工具。對前端工程師來說,自己的看家本領更是編寫小工具的理想選擇——HTML/CSS 在表述界面時的先天優勢、JavaScript 的靈活與強大、網頁的跨平台與無需安裝,這些技能可令前端工程師在團隊內部發揮不可估量的價值。(我經常寫一些代碼生成工具放在公司內網,有些方便同事,有些方便自己,一勞永逸,事半功倍。)


工欲善其事,必先利其器。

人和動物的差別不是是否會使用工具,而是是否會創造工具。

做工具的主宰,而不是工具的奴隸。


不管什麼工具,他的錯誤信息都是用人類的語言寫的,試著去讀一下,也許你就知道到底是什麼問題了。


裝吧...不用IDE, 問我公司的設計師,你最愛用哪款設計軟體做設計, 答:windows自帶的畫板.......


初學者?用記事本吧!有益無害!


快,更快,小,簡單,有愛。


用過各種文本編輯器,說說感想。

sublime: 一開始上手的編輯器,中途不知道什麼原因不用了。最終又開始用這個編輯器,因為其速度應該是無敵的,對於用比較老舊電腦的同學們強烈推薦。

vim:從sublime後就開始用vim了,很強大,各種自定義,有一定的學習曲線。不過強烈建議學習他的按鍵,因為的確可以讓你飛速的編輯,即使不用vim,這些快捷鍵很多編輯器也都有插件來模擬的, 對於後期換其他編輯器也沒有任何問題。

emacs: 號稱偽裝成編輯器的操作系統。強大到無敵但是也意味著學習到想死。學習成本太大,本人學習了好久,折騰了大量時間,最後發現學習編程在編輯器上折騰實在是沒有必要。最終決定放棄,不過其中的org mode用來記筆記很好(jupyter-notebook?)。

atom: Google的產品,介於IDE和上面編輯器之間,少了很多複雜的配置,圖形界面對新手友好。最後沒用還是由於速度和sublime差好多,對有比較好的電腦的同學們建議用這個。

各種其他IDE (xcode, android studio, Eclipse ...): 優點是全面,缺點也是,這樣本身就很大,找功能也麻煩,但是很多時候你不得不用他,因為都是基於平台的開發,如果自己要搭建這樣的環境無異於和自己過不去。


Sublime Text 3——你值得擁有(下面用ST3來代替)

ST3 + jre = Java IDE
ST3 + gcc/g++ = C /C++ IDE
ST3 + Markdown預覽插件 = Markdown文本編輯器

以上是我已經配置好的,確定可以使用的配置。
默認支持python,js。
除此之外通過各種插件還能支持更多語言和更多功能,更不用說可以完全自定義的界面和快捷鍵。
相比與上G的VS,破百M的Eclipse,過50M的Code::Blocks,ST3可以秒開。秒開啊親!當你想敲代碼的時候,光是進入變成界面就要等個一分鐘,能爽么- -。

恩,先說這麼多,要是需要的話,我再系統地介紹一下。


工具這一塊主要是個輔助,關鍵的還是自己能合理安排自己的時間,整理好自己的碎片時間能做很多事情,工作效率一方面是合理安排,另一方面是保持一個良好的心態工作,愉悅的心情能讓你的工作事半功倍。

小問題

平時有問題解決不了就去CSDN問,那裡有很多大牛,還有一些源碼,不過是要金幣的。

sdk服務

要是找sdk服務的話我就去DevStore,集成了從設計開發到運維服務的一系列服務,很方便,還有SDK配置過程和服務評測,相同功能的氪對比選擇,很實用。

新聞

平時關注新聞的話我會看鳳凰,新浪,IT之家,都是很好的新聞平台關注最新的互聯網時事新聞。

看書報
的話,是《程序員》和《電腦報》,都是很專業的,很不錯。

存儲

雲盤是很好的選擇,不用隨身攜帶,只要能上網就能找到自己所需要的東西,方便快捷。


用流行的工具
用身邊人在用的工具
用開放的工具

專業工具做專業的事

學會組合小工具,比如用一些簡單的腳本語言自動化工具間數據傳遞

不被工具綁架,工具是用來提高效率的,要衡量投入產出比

覺得比較重要的幾個工具:
命令行:包括各種常用系統的。從簡單的命令開始,逐漸熟練使用
sublime:文本編輯
nano:linux下簡單文本編輯
各種ide:隨需選擇
java開發:intellij


Bmob後端雲用來學習很不錯,是提供後端服務的,可以幫助我們邊學邊實踐


推薦閱讀:

年終總結的意義何在?你們都是怎麼寫年終總結的?

TAG:開發工具 | 心得 |