1. 程式人生 > >老程式設計師來說演算法重要不重要

老程式設計師來說演算法重要不重要

我,一個老程式設計師,也是一個學生,把玩過甚多語言,大多不精。我既非名牌學校,也不是高學歷,僅代表一部分比較蛋疼的人。
接觸PHP也是很早了,從04年的OFSTAR開始的,到現在六年了,期間也接觸過不少的語言。從指令碼JS到底層的C語言。
坦誠的說,我不是個高手,但是我相信自己比大多數人接觸的知識面要寬廣,深刻些吧。
同時我也是一名學生,從東南大學到西電,對計算機的愛好一波三折。
我這裡想說幾個問題:
1.語言,語法重要嗎?
不重要。重要的程式設計的基本思想。語言是不相通的,相通的是思想。PHP作為一門WEB語言,很多童鞋太過於關注其語法,總是天天翻函式,看語法,是的,他們的PHP
能力提升了,可如果叫他們轉行做PY或者C,甚至是NET,那就是要了他們的命。為什麼呢?就是因為他們單純地接觸PHP,而PHP只是一門指令碼語言,
抹殺了許多演算法和資料結構的東西,而重點強調的是函式。結果讓大部分童鞋專注於語法層面,而程式設計思想得不到提高,很難轉行。
這就是JAVA轉PHP很容易,而PHP轉JAVA很難的原因。這也是有四五年經驗的PHPER仍然感覺自己水平提升不咋地的原因。
他們精通PHP,但除此之外,啥都不懂。這夠了嗎?不夠。
我發現論壇裡不少人總喜歡鑽研函式,發現一個函式好用就沾沾自喜好久,而不知道自己已經落後高階程式設計師很大一截了。
斐波那契數列,如果用遞迴解答,100分的話,我給0分。
這說明這個人沒有任何程式設計思想,不會理清思路,不會推理,不適合搞計算機。
就和約瑟夫環一樣,一旦邏輯稍微複雜,有人就頭暈了。
至少,高中數學不及格。
我測試新人,必然用約瑟夫環考察潛力和邏輯,一旦做不出來,直接全卷0分,對不起。

2.演算法和資料結構在WEB開發中重要嗎?
很重要。很多人總是說WEB中演算法不重要,而不肯鑽研這一塊。才會出現一個樹形結構難倒80%的PHPER,在他們眼裡,一個無限分類就是演算法的最高境界。一個遞迴難倒一半PHP新手,一個很簡單的斐波那契數列難倒80%的PHPER(他們不知道迴圈解法才是最有效的辦法,而這在任何語言裡面都是經典例子,而絕大部分PHPER不知道,稍微聰明點的會用遞迴),不知道其他語言的程式設計師,特別是JAVAER會怎麼想的。演算法無論在什麼中都是重要的。現在論壇裡很多人對演算法都是一竅不通,還是看看吧,絕對錯不了。
3。學歷重不重要?
重要。學歷就是你娘,有個好孃家,不愁嫁,至少也輕鬆些。我發現有許多人,抱著“越窮越光榮”的心態,喜歡嘲笑高學歷的人才(研究僧,菸酒生。。),正如論壇裡那篇北大博士生會不會PHP的那篇文章一樣的心態。讓我想起來,沒有文化真可怕這句話。
人家博士的知識深度和學習能力,是你無法匹及的,你只能仰望的。人家玩的是編譯器。
所以,虛心點,你有你的工作經驗,人家有人家的專案經驗,不會比你差。出名的那些人有幾個不是高學歷。李開復,美國博士,聯想總裁,軍校。
尊重知識。
4.教材重不重要?
看什麼教材了。有的人喜歡笑話學生看死書。我想告訴你,寫教科書的人都是博士,教授,能看懂書的人,很牛叉。當然了,現在某些吹牛大王出的
什麼XX開發王啦,XXX開發寶典的就無法相提並論了,純粹是賺版費的,和正規的教材不是一個檔次。
5.山寨很可恥嗎?
不可恥。PHP被看做最草根的語言,沒什麼可恥的。PY不也是草根嗎?但是為什麼PY能得到IT界的認可,而PHP不能呢?
很多綜合性的IT網站,PHP只是很小的一個版塊,甚至沒有。
出身不好不可怕,怕的就是不爭氣。
6。我有必要學習其他語言嗎?
有!PHP是一門優點和缺點特別突出的語言,所以他並不適合作為一門入門型的語言來學習,它也不是一門綜合性極好的語言。這就是為什麼現在大學的教材選擇C語言,FORTRAN,JAVA而絕對不會選擇PHP作為教材的原因。學習了其他語言,開闊了自己的視野,你才會發現自己是多麼渺小,才會學會謙虛。
7。我有必要進培訓機構嗎?
沒必要。培訓機構的實力不敢恭維,快餐教育只會培養出一個程式碼工人,而不是程式設計師。綜合我上面的觀點,你應該知道咋做了。
建議:
1.不要停止學習。
2.不要停止思考。
3.不要停止進步。
4.不要浮躁狂妄(很多搞技術的人容易陷入其中)
5.踏實。我老看到很多人對C語言一竅不通就開始討論或詢問PHP的變數機制。我不瞭解這個對你有啥用,就算你一知半解了,除了顯耀外,還能怎樣。
我們必須知道學習是一個過程。快餐吃了會營養不良的。

同是窮二代,這就是為什麼有人覺得生活很美好,有人天天罵娘;
有人感謝教育,有人天天痛罵學校的原因。
為什麼名牌大學的學生感謝新學校給了他一分工作,而下流大學的對學校痛罵不已;
因為有人靠知識改變了命運,有人沒有。
什麼演算法資料結構和語言一點關係也沒有,說明作者也就半桶水出來氣氣這幫phper壯大一下.net的聲勢 …
經驗!=技術

你認為沒關係,那是你內功和層次不夠。功夫的修煉有一個層次的。
簡單的,比如說對於一個數組排序,只有1000個元素的陣列排序和10億個元素的陣列的排序一樣嗎?
求10000以內的素數和100億以內的素數一樣嗎?
你不要跟我說他們的演算法是一樣的,也不要跟我說排序麼不就是SORT函式麼。更不要說後面的情況你遇不到。(你網站規模一大,必須考慮這個東西。底層操作無非就是數字運算)
你更不要跟我說我一個MEMCACHE就就解決了。
這就是大公司比如百度和小公司的面試題為什麼很大區別,為什麼大公司願意招沒有經驗的應屆生也不肯招有經驗沒技術的人,更願意招科班出身的人,也是為什麼一個應屆生的薪水能超過幾年工作經驗的人。原因不是學歷,而是他們有一個系統的學習,從演算法到編譯原理,從資料結構到C語言,從軟體工程到離散數學,從應籌學到微積分。這個系統的學習體制保證了他們的快速上手和深入理解能力。你有三年工作經驗,但對於同一個陌生的東西,你坑能要半年,而他只要兩個月。故,我強調一個系統的學習,做programmer而不是coder。
也是你進不了大公司,做不了核心的原因。
你說演算法和WEB無關,
那你是不是認為斐波那契數列就僅僅是玩遊戲的,求老兔子生小兔子的?
你是否知道餘弦定理在搜尋中的應用很廣,而不是高中生拿來算算三角形夾角那樣的簡單?