《算法圖解》觀後感

算法,我該拿你怎麼辦?

寫這篇博客倒不是爲了蹭現在算法的熱度,而主要是爲了下面兩個目的:

  • 推薦一本算法幼兒園級別的入門書籍《算法圖解》
  • 思考算法跟業務開發程序員的關係

如果是像我一樣幹業務型的程序員,對算法估計都沒有什麼很深的感覺,因爲一般的難點都在於如何快速響應產品那邊來的各種需求,還有修復自己親手寫的Bug,算法,好像在我們的生活中真的不常見,但是一旦去刷招聘信息,就會發現別家公司面試時都會考算法,甚至自己公司都會考,但是,既然在工作中不常見,那麼爲什麼要對算法有這麼深的執念呢?展現一個技術人員對於技術的執着?還是想考考他對於技術的積累?這裏我是真的想不通。

而且對於我來說算法最大的問題就是他給人的回報實在太低了,你花一段時間去學習算法,然後到工作中,一段時間沒有用 ,就荒廢了,然後到了必須要撿起來的時候,估計早就只剩一星半點的印象了,所以,那段時間就像被狗啃掉一樣,剩下的都是眼淚了。

再來是現在的環境下,學點東西的時間本來就少,要學的東西更是多如牛毛,所以,算法這種投資回報率這麼低的東西,真的要學嗎?

上面是我遇到的問題,接下來就是我的個人想法了。

算法要學嗎?

當然要學,但是問題的重點不是你是否學了算法,而是時間和目的,以及你個人身份的配合。

我想如果想到算法,主要會有以下這些內容:

  1. 算法如何實現?
  2. 算法能解決什麼問題?
  3. 算法產生的思考邏輯,過程
  4. 這個算法叫什麼名字?
  5. A算法和B算法之間的關係是什麼?

然後很多人學算法估計就死在1,2上了,我們一般怎麼學算法?跟着書本,或者教學視頻等,直接從2開始,接下來是1,延伸一下的話,可能還有3,5,這樣的步驟,讓很多人可能花了一天時間,才能寫出一個算法的具體實現代碼,而這樣搞了一天之後,就沒有更多的時間或者精力來弄剩餘的內容了,於是這樣,學習算法就變成了一件爲了應付面試而去做的事情了。

那麼在上面的流程中,問題出在哪裏呢?我覺得首先就是你對算法的目的上。當我們興致勃勃打開一本算法書時,或者我們抱着對算法的久仰大名的心態來學習算法時,我們有沒有想過我們希望算法能帶給我們什麼呢?是思考問題方式的改變?是對我們現在編寫代碼的效率上的提升?還是爲了我們個人的興趣愛好呢?

當我們沒有想好這個最開始就想好的問題時,一個最簡單但是也是最容易忽略的問題:我們需要掌握算法到什麼程度呢?

如果我們只是爲了解決一個問題而借用某種算法,那麼各種語言的對應代碼早就有人寫過,我們幹嘛要自己作死再寫一次呢?

如果我們是爲了改變我們思考問題的方式,那麼我們需要去編寫真實的代碼嗎?我們不應該更加關注算法中對問題的拆分和遞歸的過程嗎?

如果單純爲了興趣,那麼,你爲什麼會在看這篇博客?這篇博客對你來說簡直就是毒藥啊。

所以,我覺得學習算法不需要走完完整的1-5,看你對算法的需求,只需要完成你需要的部分就可以了,感覺這樣更加適合當下這樣高節奏的生活。

算法什麼時候學?

上面我們說了學算法的目的,下面就是時間了,在我們的職業生涯,或者說職業生涯開始前的準備階段,我們應該在哪個階段學算法呢?比如我現在工作2年多,學算法晚了嗎?不學算法我就很難學一些高深的知識嗎?

我覺得算法什麼時候學都不算晚,難得是學了後如何對你產生實質性的效果。比如我現在問你,如果採用算法安排自己的人生,那麼你應該採用什麼算法?如果你採用貪婪算法,那麼你會有什麼樣的人生?動態規劃呢?還是說這是旅行商問題,無法給出一個最佳答案呢?

打個賭,你現在思考的不是我上面問你問題的答案,而是在想動態規劃是啥來着?旅行商問題是啥問題?

所以,問題的重點不是你什麼階段去學算法,而是學了算法之後對你能產生什麼影響。如果你思考了這個問題的答案,結合上上一個問題的答案,你可能會更加理智的去選擇去學習算法。

菜鳥怎麼學算法?

這裏看起來就是我要開始推銷什麼東西了,那麼你們可以放心,我只是推薦一本書,而且我沒有任何廣告費(替自己默哀),所以你們可以放心看下去。

這本書就是《算法圖解》,其中的內容簡直就是幼兒園級別的,你可以很輕易的理解其中的內容,其中最最重要的就是大O表示法。這個大概是一些人學算法時最容易放棄的地方,就這點來說,這本書倒是解釋的很簡單,起碼真的幫我邁過這道坎了。

再來就是一些小建議了,就是跟着這本書學的時候,最好把例子自己也畫一遍,自己也走一遍流程,這樣的一個過程可以讓你對算法有更加深入的理解,甚至可能帶給你不一樣的思路。

如何甄別市面上的算法資料?

這是個很有意思的問題,市面上的算法資料簡直不要太多,但就網課資源來說,可能偏少,最多的還是國外某高校九幾年的一個,一個光頭大哥講的視頻,但是那個視頻真的不適合小白入門,所以,還是回到上面最開始的問題,如果你跟我一樣,對於算法只需要大概瞭解的,那麼《算法圖解》對你來說真的是一本很好的書,如果你還有更深入的瞭解,那麼也希望看到這篇博客的人能慷慨推薦一些資料給我。

總的來說就是,不要陷入那種很難得,專門爲算法人員設計的學習內容中去,那隻會讓你放棄的更快,同時對你產生的幫助更加少。

以上這些就是所有我想說的了,謝謝觀看了,如果有不同意見,評論區見。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章