作為一名優秀的高級程序員,懂數據結構和算法是非常重要的,并且軟件工程方面經驗知識的重要性絲毫不亞于此,特別是有志于更高追求的程序員。
了,但是一些簡單的數理統計要會吧,最小二乘法能不能看懂要看你從事的具體領域了;英語,學好了自然好,但是現在基本的書籍都是有中文的,一點兒都不辛苦,如果不求了解最新的前沿的知識也不求StackOverflow上刷分,英文能力還能要求多高呢?想向往高級程序員發展,很有必要要學習數據結構和算法,就像BAT這樣的企業是很注重這個能力的。
Consistent Hashing原理示意圖
PHP程序員對數據與算法有什么要求,需要了解些什么?
對于初級php程序員而言,算法、數據結構、語文數學英語基礎都非常非常重要,同時軟件工程類課程也一定要學好。
第一:數據結構具體指同一類數據元素中,各元素之間的相互關系。
數據結構包括三個組成成分,數據的邏輯結構,數據的存儲結構和數據運算結構。數據結構作網絡性能優化時很有用,比如HASH算法和B+算法都得知道下原理才能知道他效果如何。
第二:php程序員會算法能力其實對網頁游戲有很大用處
算法能力對網頁游戲的開發業很有幫助,一套強大的算法可以讓你游戲時,數據處理得無懈可擊,php還是有些大用處的,不過想拿高工資英語也學好點,php開發快且高效安全。
其次:使用php實現的基本的數據結構和算法,什么二叉樹、二叉搜索樹、、B樹、鏈表和常見排序、搜索算法等等,而且全部是使用來實現的,PHP老程序員說的有理,“PHP主要還是快速開發,各種現成的函數和類足夠你用的了,對于這些相對底層的東西不是必須掌握”
P.S:數據結構是基礎,鏈表、二叉樹、哈希、排序算法等,你可能在寫PHP代碼的時候,不一定能夠用上,但是,掌握它們能讓你對程序的運作原理有更深的理解。舉個簡單的例子說下數據結構對php的用處:我們經常使用PHP數組,PHP數組不僅可以foreach的方式遍歷,又能通過key-value的方式訪問,我們都覺得很便利,那么問題來了,為神馬會這樣?
答:原因是PHP5的數組是個HashTable(哈希表,支持key-value直接映射),并且元素之間又用雙向鏈表連接起來(支持遍歷)。如果,同學們不學習數據結構,連鏈表和hash都不知道,就更談不上理解內部的運作原理。其實這個只是數據結構應用的冰山一角,想對技術有深一些的理解,學好數據結構很有必要。而更好地掌握原理層,又可以促進我們對程序的優化和思考,采用更節省系統資源的方式完成我們的業務需求。
P.S:對于程序員來說數據結構這個還是學的,還可以按照“HTML →CSS →Java →數據庫”的順序來學,可以多看看php的書籍,比如:PHP 和MYSQL web開發,這是php的圣經。
如果要成為一個軟件工程師,是不是必須學會算法和數據結構?
簡單的數據結構是一定要會的,棧和隊列不能不會吧。希望一直在這行業一直做下去并希望有所突破,就必須得深入學習,循序漸進不用著急。
關于算法和數據結構要學習的:
首先算法要學的有::圖搜索、排序、Prim / Kruskal (最小生成樹)、Dijkstra (最短路徑算法)、正則表達式和字符串匹配、
其實數據結構要學習的有:圖、樹、堆、隊列。
php程序員如果想做游戲的話可以學一下A*算法,四八叉樹場景管理等。
曾經,有個公式,算法+數據結構=程序,所以嘛,想當好的程序員,算法和數據結構是基本功,不得不學好。其次,程序不夠了,變軟件了,多次的返工重構造就了軟件工程,想脫離軟件藍領的人,必須要懂軟件工程。再后來,軟件也不夠了,變系統了,這個麻煩哪!最頭疼的莫過于用戶一看你交付的,說人家想要的根本不是這個,真正牛逼的人,都在需求工程上有過人之處。問題很好,路自己選。
語數英不好的人學算法和數據結構會不會很辛苦??如果說英語不好就不能學,數學不好就不能學。大家是不是就不學了?如果說數據結構不重要,算法不重要。大家是不是就不學了?
P.S:“今朝有酒今朝醉,莫使金樽空對月”,不要活在別的眼里,這邊沒有那么多要求,還是跟著工作走,如果你的工作用到了,就學習。到那時候,你的基礎已經蠻扎實了,就像武俠里的,當你內功足了,就會接觸更高層次。先搞定工作,業余時間有針對的學習。