程序猿你心甘情愿的做碼農(nóng)么?
要成為優(yōu)秀的程序員,數(shù)據(jù)結(jié)構(gòu)和算法是必修的內(nèi)容。而現(xiàn)在的Web程序員使用傳統(tǒng)算法和數(shù)據(jù)結(jié)構(gòu)都比較少,因為很多算法都是包裝好的,不用我們?nèi)ゲ傩木唧w的實現(xiàn)細節(jié),如PHP的取棧操作array_pop,進棧操作array_push,都有指定的庫函數(shù),導(dǎo)致我們對基礎(chǔ)算法的研究越來越少,最后成為一個工具的傀儡而已。
我想大家都已經(jīng)回憶了不少自己平時用PHP做開發(fā)的經(jīng)歷了吧,是否發(fā)現(xiàn)大家確實都在操作數(shù)據(jù)庫呢。
記得一個技術(shù)主管說過這樣一個事情。他給一個程序員分配了PHP的開發(fā)任務(wù),沒想到那個程序員居然說:“我是學(xué)Java出身的,你讓我去寫 PHP,你這不是在貶低我嗎?”。這件事情給我印象很深、觸動也很大。雖然這不能代表大部分程序員的看法,但是這么認為的人應(yīng)該不少。還有人說,現(xiàn)在如果是大型的政府項目,PHP是肯定不會被列入考慮的范圍之內(nèi)的。
那么為什么PHPer會被認為是草根階層,是因為它很簡單,人人都可以學(xué)會,所以沒什么難度嗎?我以前也是這么認為。PHP入門很快,處理文件,數(shù)據(jù),遠程連接,網(wǎng)絡(luò)編程都非常方便,官方也有這樣的說法:PHP學(xué)習(xí)的成本很低,所以你容易去使用它。這個想法也是普遍的,甚至大部分的PHPer 自己都這樣認為。
說到這里,我想大家就會想到我為什么要寫這些文字。因為一年多的PHP推廣工作讓我了解到許許多多的使用PHP的公司的大概情況。在這些過程中我慢慢體會到其中的根本原因。這里我說是根本原因雖然是個人的看法,但是我覺得事實就是如此。
那么為什么PHPer會被看成下等階層,根本原因是PHPer所作的事情(通過代碼實現(xiàn))的絕大部分都是表現(xiàn)層的東西,這個熟悉PHP的人都知道。當(dāng)然也會有PHP會說他用MVC結(jié)構(gòu)編寫的某某框架具備的如何如何的功能。但是這些還是表現(xiàn)層。所以只會處理表現(xiàn)層的程序員就被看成下等階層了。事實上也是如此,因為這種情況下PHP確實很難構(gòu)造大型的應(yīng)用。
這就找到原因了,不是的。為什么PHPer總是在負責(zé)表現(xiàn)層的東西呢。答案是底層的數(shù)據(jù)處理(Web應(yīng)用就是數(shù)據(jù)存儲和查找)我們一般不去觸及。好,那么說到這里有些人可能已經(jīng)想到了,那不就是數(shù)據(jù)庫嗎?對,就是數(shù)據(jù)庫。讓PHPer一直當(dāng)下等的元兇就是數(shù)據(jù)庫。為什么?
PHPer對MySQL的依賴過大
大部分PHPer僅僅處理表現(xiàn)層的東西,而在MySQL的便捷使用下,PHPer幾乎不用觸及任何數(shù)據(jù)結(jié)構(gòu)與算法的情況下完成大部分開發(fā)任務(wù),所以一個才有上面的,沒有一個PHP程序員能夠回答出那道數(shù)據(jù)結(jié)構(gòu)的問題,換成是C等語言,情況可能就大不相同了。是PHPer下等,才讓PHP顯得下等。