有哪些新手程序猿不知道(或容易忽視)的大殺技?

相關問題:

有哪些新手程序員不知道的小技巧?


大殺技是戰略性的,小技巧是戰術性的;大殺技數量少,小技巧非常多。

在上圖「編程之鑽」所繪的編程的每個子領域(子學科)中,其實都有若干的大殺技。

Tracing

可稱之為「大殺技」的方法或技術,我首先想到的是 Tracing(程序跟蹤)技術,俗稱「打(印)日誌」。

如下題:

老程序員解bug有哪些通用套路?

由於各種原因,初中級猿常常在掐蟲(Debugging,調試)上面畫去了大量的時間和精力(有的可能要佔到總工時的 30-50% 以上),可效果也不怎麼好。

過去二十多年,我自身的掐蟲經驗和體會是:

調試成功十有八九靠的是 Tracing(打日誌),尤其那些疑難的 bugs。常見的命令行或 GUI debugger、設斷點、單步調試等等,我很少用。

看到 @int32bit 說:

骨灰級大神用print就夠了,比如Linux之父Linus Torvalds從不用任何debugger工具:Linus Torvalds: Debugging hell,還有Python之父Guido van Rossum 自稱使用print語句排查90%的bug。

感謝 @int32bit 提供的鏈接!原來這些話出自魁北克大學計算機科學教授 Daniel Lemire 的一篇 blog:

I do not use a debugger

教授還列舉了幾位反對或很少用 debugger 的業界大咖:

I am not alone. In five minutes, I was able to find several famous

programmers who took positions against debuggers or who reported barely

using them.

Linus Torvalds, the creator of Linux, does not use a debugger.

Robert C. Martin, one of the inventors of agile programming, thinks that debuggers are a wasteful timesink.

John Graham-Cumming hates debuggers.

Brian W. Kernighan and Rob Pike wrote that stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places. Kernighan once wrote that the most effective debugging tool is still careful thought, coupled with judiciously placed print statements.

The author of Python, Guido van Rossum has been quoted as saying that uses print statements for 90% of his debugging.

欣慰,原來大師們的經驗與體會和我一直想的一樣。

你看,殺滅八九成的 bug 靠打日誌,看來「print 大法」作為一種編程大殺技確實是當之無愧的。

當然,幾十年過去了,滅蟲還直接用 print 原始了點。在 OO 界一般都會用 Tracer、Logger 等等高級對象進行封裝,各大語言和平台也都提供了類似的跟蹤 API。

。。。


學好英語就打開了Google和stackoverflow的大門,流利的英文閱讀,和習慣性英文搜索,能幫你超越90%的程序員。


Google 和 stackoverflow 能解決你的大部分問題


看python或者python子包(比如numpy)的的官方文檔,裡頭的東西比你想的還要全。

python里很多極其複雜,偏門的代碼都是有封裝好的庫的。比如python的obpds庫可以直接用來搞TCAD軟體(模擬半導體的)才能做的事情。直接調用就可以了。用bing,google搜。但是新手程序員盡量自己造輪子。


  • UTF-8
  • 用別人的輪子
  • 面向Google/GitHub編程


如果需求實現起來實在太複雜了

可以嘗試找產品坎需求……


這條是面向廣大被鄙視的PHP程序員的

什麼⊙?⊙?PHP程序員不算程序員?那出門左轉不送→_→

嘛接下來算是一些小常識,最起碼個人覺得有助於提升效率的那種。

1. 關於IDE

推薦使用phpstorm,雖然在貴乎使用IDE是政治不正確,但是對於新手而言,Ctrl加滑鼠就能實現類和函數定義/調用跳轉,自動提示等功能,可以省去很多查詢文檔,去技術群提naive問題的時間。

2. 關於文檔和資料

與其上搜索引擎漫無目的的瞎找,上官網查手冊其實是一個非常好的選擇。比如一些擴展的安裝,函數的使用,在http://php.net上面往往會有極為詳盡的介紹和實例。

如果以上不滿足你的要求,比如要查一些沒接觸過的技術等,相信我,去官網會比看博客要詳盡的多。(特別是現在很多技術博客都在互相抄襲的前提下)

3. 關於問問題

在下也經歷過一言不合就去技術群里找大佬求助的情況。不過如果問的都是一些很沒有營養的問題,大佬們一般就會無視。而得不到有效回答的人心態也會很差T^T 所以為了避免被大佬們嫌棄,同時也能更快的提升自己,問問題之前最好思考一下:

這個問題能不能通過查文檔和手冊解決

這個問題是不是在技術論壇(Stack Overflow,segmentfault等地方)找到相同或類似的回答

這個問題是不是描述清楚,而不是簡單地拋出一個「哎呀我要怎麼用這個函數」之類的問題,有時候換成「在xx環境下,傳入了xx參數,得到xx結果,拋出xx異常或返回xx錯誤,請問如何解決」這樣是不是會更好些呢?

問問題的語氣( ̄~ ̄) 如果是向人請教的話請保持謙虛,畢竟人家回答你的時候等於是用他的時間在幫助你(以無償的形式)。如果問個問題還表現得理所應當甚至是傲慢的話,換位思考一下。。。別人會願意回答你的問題嘛(攤手)


少買書,多利用搜索引擎

我書架上全是過去買的入門到放棄,說實話推銷一波,有人要麼,放著怪佔地方的,便宜,,,

經常買來的書,翻一翻,回頭就發現,跟搜索到的文檔沒什麼區別,絕大多數問題,都能在谷歌百度找到答案

除了一些經典作品,比如我覺得很好的一本[高性能javascript],真的市面上很多所謂的教程書都是騙錢的


看大佬調試,你會學到很多。

看的時候不懂就問,但是別逼逼其他的。


估計是他喵的上級給的許可權名單有漏洞,總有不知道存在的人有許可權

上個離職的狒狒藏了個定時刪根要不就是別名刪根忘查了,坑的一比


最笨的方法最快!

所以不要想太多,想明白就夠了。


開發過程中遇到不會的技術,先看文檔!先看文檔!先看文檔!!!

很多人剛接觸一門語言或者框架的時候,都喜歡找別人問,加了數不清的QQ群,結果存了數不清的表情包。

殊不知,你要問的問題官方文檔上面基本都有!

當你去問別人問題的時候,別人叫你去百度,你就去百度上找(當然其中也不乏一些高質量的教程),的確可以解決問題。但是這些知識始終是零碎的,你需要花很多精力去篩選和整理,然而這些工作開發者已經幫你做好了。

面對未知技術的時候,新手求助別人被動學習,老司機輕車熟路主動出擊,省下大把時間精力。

不知這本應很基礎的技能,能否算作容易被忽視的大殺技?


我也很想知道啊


推薦閱讀:

西門子Step7編寫程序中 複位和置位優先型起保停電路有什麼不同 意義在哪?
怎麼理解coroutine ?
php創建的文件夾名里含有「黒」字時,「黒」字較大概率會重複出現,請問是何原因?
為什麼國內入門書籍嚴重缺失?
RapidJSON中itoa的實現是現在已知最快的么?

TAG:程序員 | 編程 | 軟體架構師 |