[閒聊] 資料結構不重要 ?

看板Soft_Job (軟體人)作者 (楊宗緯)時間13年前 (2012/06/12 21:41), 編輯推噓9(9029)
留言38則, 19人參與, 最新討論串1/4 (看更多)
最近常看到越來越多人說 "資料結構不重要" 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

06/12 21:46, , 1F
有些人可能根本沒聽過,或者是連中文書都看不完,當然不重要,
06/12 21:46, 1F

06/12 21:47, , 2F
因為假如說它重要的話,他們工作就累了,還要學新東西...
06/12 21:47, 2F

06/12 21:47, , 3F
管DB跟寫程式的是同部門嗎?有時這不是技術問題是政治問題
06/12 21:47, 3F

06/12 21:48, , 4F
DBA跟寫程式的不同公司不是所在多有嗎.....
06/12 21:48, 4F

06/12 21:49, , 5F
管DB的,不懂Tree,保證遇到大系統就掛掉。
06/12 21:49, 5F

06/12 21:50, , 6F
寫程式更不用說了,一堆資料還是要用Tree去拆才有效率。
06/12 21:50, 6F

06/12 21:50, , 7F
SA夠罩都幫你規畫好了 程式寫起來就跟資料結構無關了
06/12 21:50, 7F

06/12 21:50, , 8F
然後就會踢皮球,有時候是因為想踢皮球所以不懂 XD
06/12 21:50, 8F

06/12 21:51, , 9F
因為太多非本科系的來從事軟體業 我看他們根本是不懂XD
06/12 21:51, 9F

06/12 21:51, , 10F
SA也要懂資料結構更不用懷疑,否則程式設計師就慘了。
06/12 21:51, 10F

06/12 21:51, , 11F
但不知道為何很多人都覺得不需要懂資料結構?
06/12 21:51, 11F

06/12 21:52, , 12F
我主管跟老鳥就跟你描述的失敗例子一樣...會動就好
06/12 21:52, 12F

06/12 21:52, , 13F
他們還很驕傲的說這樣他們才有存在的價值...= =a
06/12 21:52, 13F

06/12 21:53, , 14F
好吧!就反例來說你把系統設計得很完美使用者只會覺得應該的
06/12 21:53, 14F

06/12 21:54, , 15F
一定要讓他們體會不方便 跑數據慢得要死 才能體會好程式的好
06/12 21:54, 15F

06/12 22:03, , 16F
如果本科系很認真的跟你說 資料結構不重要 那也代表他就這樣
06/12 22:03, 16F

06/12 22:04, , 17F
如果非本科跟你說不重要.那就是他經驗上沒用到而已
06/12 22:04, 17F

06/12 22:24, , 18F
沒用到當然不重要,不懂這些的薪水三四萬已經是極限了,
06/12 22:24, 18F

06/12 22:25, , 19F
學了這些薪水才有辦法往上加才有辦法升SDSA
06/12 22:25, 19F

06/12 22:33, , 20F
最好不重要啦...當你要自己刻一個架構的時候...
06/12 22:33, 20F

06/12 22:34, , 21F
你就知道有多重要了...就算有現成的lib可用
06/12 22:34, 21F

06/13 00:32, , 22F
還好我這些都不懂還是有超過樓樓上的極限(擦汗)
06/13 00:32, 22F

06/13 00:34, , 23F
非5C本科系根部想學是兩回事...
06/13 00:34, 23F

06/13 00:35, , 24F
我還教過本科系的碩士畢業生怎樣用 linked list ...
06/13 00:35, 24F

06/13 03:40, , 25F
推bndan中肯...我遇過很多看不出是本科系人..
06/13 03:40, 25F

06/13 11:29, , 26F
如果薪水差很多,那就會變認為很重要吧
06/13 11:29, 26F

06/13 11:53, , 27F
linked list連我都會耶,雖然有時候會畫蛇添足...
06/13 11:53, 27F

06/13 13:12, , 28F
為什麼 有人做好了 == 不重要?
06/13 13:12, 28F

06/13 18:42, , 29F
在抽象層資料結構的確是不重要 那是實作層的事...
06/13 18:42, 29F

06/13 20:04, , 30F
跟主管有關吧?跟是不是本科系沒有很大的關係~主管都不把關
06/13 20:04, 30F

06/13 20:05, , 31F
了~底下的人當然各自為政~如果主管很重視這種事情~那自然
06/13 20:05, 31F

06/13 20:06, , 32F
不會找不重視的人進來~就算找進來也要刁他~誰管你是哪一系
06/13 20:06, 32F

06/13 20:08, , 33F
我也看過本科系在效能還OK的情況下~不會注重這個~只針對太
06/13 20:08, 33F

06/13 20:10, , 34F
誇張的部份去調~有時候不是不重要~而是看有沒有需要...
06/13 20:10, 34F

06/13 21:03, , 35F
當你碰到這樣的問題時 就代表妳該換個環境了
06/13 21:03, 35F

06/13 21:07, , 36F
不懂得尊重專業 就是不懂得分工分層合作的地方 不是好地方
06/13 21:07, 36F

06/14 08:09, , 37F
代溝啊~現代人會很強調農工技能是生活必備技能嗎?
06/14 08:09, 37F

06/14 10:53, , 38F
可是米別人種好的 飯吃別人煮好的 會說食物不重要嗎? XD
06/14 10:53, 38F
文章代碼(AID): #1FrqSJO8 (Soft_Job)
文章代碼(AID): #1FrqSJO8 (Soft_Job)