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