1. 程式人生 > >(不斷更新)每個程式設計師都應該知道的那些事兒

(不斷更新)每個程式設計師都應該知道的那些事兒

http://projectmona.com/bits-of-brilliance-session-five/
裡面內容很雜但很豐富,是UIUC教授Jeff Erickson在程式設計方面的個人收集(其他收集可以參見:http://projectmona.com/bits-of-brilliance/ 包括費曼、尼采和特斯拉等等)。

其中比較有價值的有:
演算法筆記:http://compgeom.cs.uiuc.edu/~jeffe/teaching/algorithms/
每個程式設計師應該知道的100個Vim命令:http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know

Addy Osmani的JavaScript設計模式(電子書):http://addyosmani.com/resources/essentialjsdesignpatterns/book/
Practicing Ruby(每月訂閱的程式設計課程):https://practicingruby.com/
每個程式設計師都應該瞭解的Unicode與字符集常識:http://www.joelonsoftware.com/articles/Unicode.html (另外可以參見阮一峰的部落格:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
型別理論與函數語言程式設計(PDF電子書):
http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ttfp.pdf


類似標題的文章見過不少,雖然都有些標題黨,但其中總也能給出一些有價值的資料彙編。
Hacker News上的討論(https://news.ycombinator.com/item?id=5962933 )裡大家正好把類似的文章、資源和經驗都彙集了一下。比較精彩的包括:
【StackOverflow】
你最喜歡的程式設計相關學術論文 http://stackoverflow.com/questions/358033/what-are-your-favorite-programming-related-academic-papers

每個程式設計師都應該讀一讀的書 http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read
最有價值的演算法有哪些 http://cstheory.stackexchange.com/questions/189/algorithms-from-the-book

@___Dev___ 自己總結的:1) 掌握現代Web技術;2) 掌握一種面向物件程式語言;3) 掌握一門函式式語言;4) 熟悉一種動態語言;5) 記住到哪裡去查理論知識比如演算法 (@gambogi 認為對基本資料結構及其原理需要了解)

【每個程式設計師都應該讀上兩遍的技術論文】
Michael Fogus大牛的版本:http://blog.fogus.me/2011/09/08/10-technical-papers-every-programmer-should-read-at-least-twice/
Michael Feathers的版本:http://blog.csdn.net/turingbook/article/details/3946421 (英文版連結好像找不到了)
【每個架構師都應該讀上兩遍的論文】
Rotem-Gal-Oz:http://www.rgoarchitects.com/nblog/2009/02/27/10PapersEverySoftwareArchitectShouldReadAtLeastTwice.aspx

@nraynaud 提及:IEEE 754浮點運算標準是每個程式設計師必須瞭解的:http://grouper.ieee.org/groups/754/http://zh.wikipedia.org/wiki/IEEE_754 (你知道0.1 + 0.2不等於0.3嗎?)
噢,稍後我找到Oracle網站上介紹浮點的好文:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

@inopinatus 關於人名你需要知道的那些事兒:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/

@gruseom推薦的:
Pierce收集的程式語言領域偉大著作(這個我以前在極客頭條推過) http://www.cis.upenn.edu/~bcpierce/courses/670Fall04/GreatWorksInPL.shtml
Lambda經典論文:http://library.readscheme.org/page1.html

最後,有同學為了證明這真的是一個月經貼,乾脆給出了一個搜尋結果:https://www.hnsearch.com/search#request/all&q=papers+every+programmer+should+read

這啟發了我,這樣搜尋一下應該有更多結果吧:https://www.hnsearch.com/search#request/all&q=every+programmer+should&start=0
嗯,結果太多了,再細一點:https://www.hnsearch.com/search#request/all&q=%22every+programmer+should%22&start=0

下面是我對搜尋結果的人肉整理:
1. 每個程式設計師都應該知道的97件事兒 http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book
2. 每個程式設計師都應該知道的延遲數值 http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html (這個我也在微博裡推過)
3. 關於時間每個程式設計師都應該知道的事兒
4. 記憶體 http://lwn.net/Articles/250967/ (這個太經典了)
5. SEO http://katemats.com/what-every-programmer-should-know-about-seo/
6. 程式設計師應該知道的哲學家:Susanne K. Langer http://www.daddymodern.com/susanne-langer-theory/ (自備梯子)
7. 程式設計正規化:http://lambda-the-ultimate.org/node/3465
8. 非技術能力:http://www.singhrahul.com/2012/10/non-programming-skills-every-programmer.html
9. 程式設計師禪道十律:http://www.javacodegeeks.com/2012/11/the-10-rules-of-a-zen-programmer.html
10. 程式設計師這輩子必須找時間讀一下abort()的程式碼:http://www.reddit.com/r/raldi/comments/iu0f7/every_programmer_should_read_the_source_code_t/ (HN討論也很有料:https://news.ycombinator.com/item?id=2782182
11. 正則表示式:http://immike.net/blog/2007/04/06/the-absolute-bare-minimum-every-programmer-should-know-about-regular-expressions/ (自備梯子)
12. 簡單的貝葉斯估算程式:http://jgeer.com/better-estimation-when-perfection-is-unlikely/
13. 記憶體分頻器:http://gee.cs.oswego.edu/dl/html/malloc.html
14. 多媒體:http://multimedia.cx/eggs/what-every-programmer-should-know/ (這篇文章裡面有前面很多連結的彙集)

當然,別忘了這篇挺經典的討論貼“我是個草包程式設計師,幫幫我吧”:https://news.ycombinator.com/item?id=2262527