1. 程式人生 > >資料結構與演算法究竟重要嗎?

資料結構與演算法究竟重要嗎?

   原文地址:http://www.lihuai.net/itlife/feeling/367.html

   資料結構與演算法究竟重要嗎!?貌似很多剛入門的程式設計師都喜歡問這樣的問題,尤其是對於那些非計算機科班出身的程式設計師來說更為困惑。ITLee本身也是非計算機專業出身的,今天突然想寫這樣的一篇博文,是因為前幾天的工作經歷,似乎讓我找到了答案,而且可以說是對我這一年的程式設計經歷的全盤否定。一年了,我竟然還沒有邁入程式設計的大門。
      幾天前,因為專案需求,需要用ExtJS技術配合PHP實現一個樹形結構。有經驗的程式設計師都知道,要實現樹形結構,PHP返回的Json資料需要用一個簡單的遞迴去處理。問題就出在這個遞迴演算法上,因為自己非計算機科班出身的先天不足,對資料結構和演算法基本可以說是0概念,當遇到這個問題的時候,完全不知道怎麼處理,整整一天的時間,自己一直嘗試用迴圈去處理(後來知道其實用迴圈也可以實現,只是因為自己能力不足,慚愧),根本就沒有想到用遞迴這種最基礎的演算法去實現,一整天的時間就白白浪費在這裡了。後來問了一個程式設計大牛,說是需要用遞迴處理,迅速百度了一些遞迴的資料,最後終於解決。
      毫不誇張的說,這個問題的出現對我自己是震撼性的。我是大學即將畢業的時候才決定今後從事IT行業,因為自己學的並不是計算機專業,大四最後的幾個月裡,自己瘋狂的自學著PHP。畢業後,可能是自己的努力得到回報,更可能是自己有那麼一點點的運氣成分吧,找了一份不錯的工作,由於畢業到找工作的過程當中並沒有遇到過較大的挫折,心裡開始慢慢的浮躁起來,淺薄的以為程式設計也不過如此。錯了,我完全錯了,直到遇到這個貌似簡單的問題,學了一年了(自學半年,工作也將近半年),我的腦袋中根本就沒有任何的程式設計思想,我以前所做的只不過是拿著別人的程式碼做一個簡單的堆砌,毫無客氣的說,一年了,我根本不知道什麼是程式設計。
      在將近一年的程式設計世界裡,我的意識中並不是不知道資料結構與演算法的重要性,但是由於自學程式設計的侷限性和工作後基本沒怎麼用到稍微深一層次的程式設計技術(可能是由於自己剛畢業,領導有意識的沒給自己安排),導致自己漸漸的脫離了正確的提高軌道。在平時的工作中,當需要實現什麼功能的時候,自己的第一意識往往是利用搜索引擎,找到相似的程式碼,稍加修改就是自己的程式了。真正的程式設計是這樣的嗎?答案必然是否定的。想到這些,真是為自己這一年的經歷汗顏啊,想到這些自己都為自己慚愧,這種水平怎麼好意思說自己是一個程式設計師。
      看著別人的程式碼來寫自己的程式碼,當遇到一些不是特別基礎,網上資料不太多的情況就會手足無措,不知道怎麼辦時,這樣的程式設計師不是一個真正的程式設計師。或許可以在公司混口飯吃,或許也可以混的不錯,但是我相信這樣的人,永遠不會體會到程式設計的樂趣,永遠不會進入真正的程式設計世界。這樣一個小小的經歷帶給我的巨大震撼,讓我清楚的認識到現在的自己究竟是一個怎樣的水平,認識到自己要學習的還是太多太多了。
      對於一個真正的程式設計師,一門語言的語法格式並不是起決定作用的關鍵點。真正決定我們技術高度的是程式設計思想、資料結構與演算法。只要掌握了程式設計思想、資料結構與演算法,使用不同的語言去實現是很容易的。相信在所謂的程式設計師行業中,有很多跟我一樣的偽程式設計師,不注重思想與演算法,只講究功能實現了就完全ok。這樣的程式設計師想要提高自己恐怕真的很難,好在我自己發現還是比較及時的,彌補還來得及!也希望能看到這篇文章的所有程式設計者,以後都能寫出自己的程式碼,而不是去複製和堆砌別人的程式碼。