最近常看到越來越多人說 “資料結構不重要”

最近常看到越來越多人說 “資料結構不重要”

最近常看到越來越多人說 “資料結構不重要”


資料來源: https://www.ptt.cc/bbs/Soft_Job/M.1339508499.A.608.html

作者YunJonWei (楊宗緯)
看板Soft_Job
標題[閒聊] 資料結構不重要 ? 
時間Tue Jun 12 21:41:36 2012

     最近常看到越來越多人說 “資料結構不重要”

     Queue、List、Heap、Hash Table  .NET JAVA早就做好了,你根本不用懂資料結構。
     排序、搜尋 Library 早就幫你做好了,你根本不用懂演算法。
     至於其他更複雜的資料結構與演算法,更不用學,
     太難,你也用不到。 太冷門,需要時再去找 Sample codes 就好。

     演算法複雜度?
     根本不用考慮阿,現在硬體那麼快,演算法差個 0.1秒 ,會扣錢嗎?

     結論 => 不懂資料結構也可寫很好的程式。
     我想很多人應該都是這種觀念的。

     不知道大家對於 “資料結構與演算法” 不重要的想法是如何?

     分享一些我看到的一些狀況好了:

     ————————————-

     我的工作環境,常常需要在有幾億筆資料的Table內查資訊。
     理論上這種環境根本就不要懂演算法與資料結構,
     反正搜尋演算法、排序一定叫SQL Server做就好。

     但有趣的事情就在這,當資料量大成這樣時,很多人就開始抱怨了,

     “為何搜尋速度那麼慢? “
     “這一定不是我的錯,是微軟的錯”
     “這是硬碟的存取的極限,我也沒辦法”

     最後效能差到,沒辦法使用資料庫了,只好開始砍資料庫內的資料了。
     把資料備份,然後砍掉九成的資料,讓資料變少,存取速度增快。
     (然後固定每段時間做這種事情)
     然後有需要舊資料再去請助理把資料還原,撈部分資料出來匯入。

     但是,如果有學過演算法或資料結構的,
     頭腦應該都不會這樣想吧@@
     資料長度 N 太大, 就刪長度 ?

     明明就可以把 Table Schema 搞成樹狀結構,定期(或定量)增加節點Table。
     明明就可以把 Table 拆成多個, 用程式做索引,加快存取。
     明明資料進來時,就可以做一些計算,統計,快取等方式,讓未來不用查大量資料

     (其實還有很多種作法,而且資料結構課本都有教)

     ————————–

     但是我不知道為什麼,
     感覺越來越多人對於存取效率一點都不重視,
     系統架構、程式演算法設計一點都不重視,
     總是用連大學生都不如的方式去設計與管理系統,
     寫程式與設計系統總是用非常沒效率的方式在做。

     而剛好我看到的這些人,都是非本科系出來的。

     資料結構與演算法真的不重要嗎?
     我始終是存在反對的意見。

     即使你不用自己去設計一些有效率或特殊用途的資料結構,
     即使你不用自己去設計各種常用的演算法,

     但是,有學過這些基礎理論,
     會讓你未來在設計系統時,總是知道怎麼做比較有效率,
     光是設計資料庫架構就需要一堆傳統資料結構概念了,
     寫程式、Protocol 要有效率,也要一堆以前學資料結構的觀念,

      “不懂資料結構,根本就沒差”?

      差多了。


※ 發信站: 批踢踢實業坊(ptt.cc) 
◆ From: 221.169.119.107
→ yauhh:有些人可能根本沒聽過,或者是連中文書都看不完,當然不重要, 06/12 21:46
→ yauhh:因為假如說它重要的話,他們工作就累了,還要學新東西… 06/12 21:47
推 Hiigara:管DB跟寫程式的是同部門嗎?有時這不是技術問題是政治問題 06/12 21:47
推 KYOFIGHTER:DBA跟寫程式的不同公司不是所在多有嗎….. 06/12 21:48
→ YunJonWei:管DB的,不懂Tree,保證遇到大系統就掛掉。 06/12 21:49
→ YunJonWei:寫程式更不用說了,一堆資料還是要用Tree去拆才有效率。 06/12 21:50
→ leiyan:SA夠罩都幫你規畫好了 程式寫起來就跟資料結構無關了 06/12 21:50
推 Hiigara:然後就會踢皮球,有時候是因為想踢皮球所以不懂 XD 06/12 21:50
推 hanbz:因為太多非本科系的來從事軟體業 我看他們根本是不懂XD 06/12 21:51
→ YunJonWei:SA也要懂資料結構更不用懷疑,否則程式設計師就慘了。 06/12 21:51
→ YunJonWei:但不知道為何很多人都覺得不需要懂資料結構? 06/12 21:51
→ hanbz:我主管跟老鳥就跟你描述的失敗例子一樣…會動就好 06/12 21:52
→ hanbz:他們還很驕傲的說這樣他們才有存在的價值…= =a 06/12 21:52
→ hanbz:好吧!就反例來說你把系統設計得很完美使用者只會覺得應該的 06/12 21:53
→ hanbz:一定要讓他們體會不方便 跑數據慢得要死 才能體會好程式的好 06/12 21:54
→ bndan:如果本科系很認真的跟你說 資料結構不重要 那也代表他就這樣 06/12 22:03
→ bndan:如果非本科跟你說不重要.那就是他經驗上沒用到而已 06/12 22:04
推 Curapikt:沒用到當然不重要,不懂這些的薪水三四萬已經是極限了, 06/12 22:24
→ Curapikt:學了這些薪水才有辦法往上加才有辦法升SDSA 06/12 22:25
→ zekewang:最好不重要啦…當你要自己刻一個架構的時候… 06/12 22:33
→ zekewang:你就知道有多重要了…就算有現成的lib可用 06/12 22:34
→ superpai:還好我這些都不懂還是有超過樓樓上的極限(擦汗) 06/13 00:32
推 popoblue:非5C本科系根部想學是兩回事… 06/13 00:34
→ popoblue:我還教過本科系的碩士畢業生怎樣用 linked list … 06/13 00:35
→ xxxzzz:推bndan中肯…我遇過很多看不出是本科系人.. 06/13 03:40
→ littlebau:如果薪水差很多,那就會變認為很重要吧 06/13 11:29
推 codemonkey:linked list連我都會耶,雖然有時候會畫蛇添足… 06/13 11:53
→ lovdkkkk:為什麼 有人做好了 == 不重要? 06/13 13:12
→ ihon822:在抽象層資料結構的確是不重要 那是實作層的事… 06/13 18:42
→ andymai:跟主管有關吧?跟是不是本科系沒有很大的關係~主管都不把關 06/13 20:04
→ andymai:了~底下的人當然各自為政~如果主管很重視這種事情~那自然 06/13 20:05
→ andymai:不會找不重視的人進來~就算找進來也要刁他~誰管你是哪一系 06/13 20:06
→ andymai:我也看過本科系在效能還OK的情況下~不會注重這個~只針對太 06/13 20:08
→ andymai:誇張的部份去調~有時候不是不重要~而是看有沒有需要… 06/13 20:10
→ rodion:當你碰到這樣的問題時 就代表妳該換個環境了 06/13 21:03
→ rodion:不懂得尊重專業 就是不懂得分工分層合作的地方 不是好地方 06/13 21:07
推 bobju:代溝啊~現代人會很強調農工技能是生活必備技能嗎? 06/14 08:09
推 lovdkkkk:可是米別人種好的 飯吃別人煮好的 會說食物不重要嗎? XD 06/14 10:53

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *