看板 Soft_Job 關於我們 聯絡資訊
最近常看到越來越多人說 "資料結構不重要" 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