在軟體開發的職業領域裡,在什麼樣的情況下才會遇到 : 計算機編程藝術《The Art of Computer Programming》以及 演算法導論《Introduction to Algorithms》 中的知識呢?


這就是一個程序員好壞的差據。

好程序員經常會靈光一現的說道:「哎呀,這個地方如果用這個演算法效率會更高。」或者「我記得TAOCP裡面曾經遇到過這個問題,應該這麼寫會更好……」

壞程序員則感嘆:「在什麼樣的情況下才會遇到 : 計算機編程藝術《The Art of Computer Programming》以及 演算法導論《Introduction to Algorithms》 中的知識呢?」


1)你的提問很明顯是針對一個演算法來問的。

2)你能遇到的是思考問題的方法,不一定就是那個演算法。

3)不要相信記住一個方法可以解決一個所有問題,那還是應試教育帶給你的遺產而已。

4)這個問題顯示出你的學習方法是功利性很強,所以你對計算機書籍的要求是無法滿足的。

5)同一個問題,為什麼大師就會筆記解決得更好?那是需要一段較長時間的思維方法的積累的。

甚至有一部分是難以用語言和書籍表達的。大量的前期閱讀,不是為了功利性的輸出,而是能讓你當你沉浸在一個領域,按照那個相關的領域的思考問題的方式,去處理問題。

-----------

改天再更新


據我所知,太多了……我個人極其反對那些演算法無用論的觀點。

比如,題主可以想一想,大型的互聯網公司如何統計每日、每月的獨立訪客數?知乎如何在新建提問時列出重複的提問建議?瘋狂的小鳥如何模擬一次撞擊?背後都是複雜的數據結構和演算法。


等到被內力深厚的人拍死,才發現之前所學全是花拳繡腿,那就晚了.

不要問內功修來做什麼,哪個階段能用到,修鍊就對了.

@王亞暉 @羅淇文 基本上理的很清楚了,

優秀演算法的思想,會提高你解決問題的 「靈機一動(ah!insight! )」率.

人的大腦經過其他牛人的思維方式洗禮後,會對問題解決產生感覺

學過的人應該都會有這種奇妙的體驗,

你一看到某個問題,就能隱隱感覺到,絕對有lg(n)或更快的解。

然後取出對應的數學工具,把問題解個通透,最後編出親和硬體的代碼,

done,move on!


90%的人是俗人,90%的程序員是俗猿。所以不要按照「地球人都知道」的路線發展,去學習自己感興趣和實際需要的東西,否則你也將變成那90%。

單純了解數據結構與演算法沒有很大用處,只有你的相關知識量足夠了的時候這些東西才會有發揮的餘地。


在處理實際業務的時候。

所以說大多數情況下,在學習編程順手做做小demo的時候,會有這種疑問。


只看過演算法導論, 我來舉兩個例子.

-遊戲排行榜: 快速排序演算法

-遊戲中的尋路: A*演算法

如果你知道更好的解決方案在哪裡還有得救, 如果只滿足於學校那種冒泡排序的話... ...


說個笑話:」演算法這東西除了在筆面試的時候有用,其他的時候用不著「


推薦閱讀:

函數調用過程中棧到底是怎麼壓入和彈出的?
進入計算機領域學習的學生已經太多了嗎?
軟體工程在工作中到底起多大作用?
Computer Science(計算機科學)對數學要求有多高?
美國在超級計算機領域落後了嗎?

TAG:軟體開發 | 編程語言 | 編程 | 計算機 | 計算機科學 |