Re: [請益] 資料結構需要先會C語言才能學嗎?

作者: oopFoo (3d)   2018-03-02 18:56:26
※ 引述《ludohsiao (陸星材)》之銘言:
: 菜菜的在下去年開始接觸Javascript開始覺得寫程式很有趣
: 目前在寫web前端
: 因為之後想往後端做
: 想要更精進這方面的能力
: 開始找線上的開放式課程
: 但發現很多大學的計算機概論都會拿C語言來舉例
: 變成說他在舉例的時候我聽得不是很懂
: 是不是資料結構也需要先學C才能聽得懂老師的開放式課程呢?
:
應該先學algorithm. data structure就跟著來。把
big O notation 學會。了解基本在用的data structure就是
hashtable(set, map...)。就很夠用了。
可是
Javascript學好了嗎。es6懂了嗎?arrow function, recursion, closure,
let, const, destructuring assignment...會了嗎?
css有學好?css grid, flexbox, css variable要學會。
把bootstrap, foundation, or semantic-ui。看完,了解作法。
read code. 把jquery, react, angular, 你在用的library, framework
下載下來,好好搞懂。
學sql。基本上,後端搞定。
學會用tools (git, testing, ci...). 學會evaluate Libraries.
這些在工作上都比會寫data structure重要。
作者: ThxThx (洗洗睡)   2018-03-02 19:12:00
只能同意轉換跑道不要太早被資料結構限制完全照原po這樣只會變成追技術的碼農...
作者: pttworld (批踢踢世界)   2018-03-02 19:27:00
升職最重要的是人格特質,只會跟電腦溝通不要怪錢少
作者: cplusplus426 (c++)   2018-03-02 20:21:00
所以會不會資結在程式開發不重要嗎
作者: dreamnook (亞龍)   2018-03-02 20:58:00
然後各種東西都學了 領不到3萬
作者: lNishan (紫小霓)   2018-03-02 21:01:00
C++ 的 set, map 是 red-black treearray != stack != queue 拜託別把這些混在一起還有 linked list 也很常用吧學校課程會要求實作主要是幫助學習 不是重不重要的問題不懂 DS 寫出來的程式可能會是慢一個等級的很可怕
作者: cplusplus426 (c++)   2018-03-02 21:24:00
所以等於是要學到無招勝有招的感覺,自然寫程式就融入ds的技巧?
作者: pttworld (批踢踢世界)   2018-03-02 22:16:00
語言的函式庫都把資結實作好了,效能是演算法的問題
作者: lNishan (紫小霓)   2018-03-02 22:57:00
No. 如果不知道各個操作的時間複雜度 效能還是會寫爛array, dynamic table, balanced bst, hashtable這些全部都能 find, insert, delete 但是複雜度各不同運用了錯誤的資料結構效率可以影響到 2 倍甚至遠遠更高就算是同個 DS 不好的實作影響程度也可以到兩倍以上不要以為 library 或是 STL 內建的實作就有多好libstdc++ 以前 (現在不確定還是不是)unordered_set (hashtable) 可以輸給 set (RB Tree)認為效能只跟演算法有關是很錯誤的觀念演算法、資料結構這兩門科目可以說是相輔相成還有就算是用了對的 DS ,不懂 DS 的用法用錯也會 GG就算到了後面 SQL Query Tuning 也是需要仰賴 DS 的學問因為 DB on-disk storage 的部分背後通常是一棵 B Tree
作者: pttworld (批踢踢世界)   2018-03-02 23:38:00
演算法的影響遠比資結大。演算法影響是指數級還在2倍另外選錯資結是不明白問題本身,不是資結本身
作者: lNishan (紫小霓)   2018-03-02 23:43:00
演算法的影響是指數級 ==> 會到指數級的也是不明白問題吧沒有學好 DS 也會錯用。
作者: elements (Helianthus annuns)   2018-03-03 01:18:00
演算法和資料結構幾乎是同一科了 沒有那些資料結構討論演算法的意義是什麼?沒有演算法怎麼操作資料結構?
作者: steve1012 (steve)   2018-03-03 02:43:00
這兩個根本沒啥好分的 沒啥好戰
作者: lance8537 (小砰砰)   2018-03-03 05:46:00
看起來,某個常回負面推文的觀念也不怎麼樣耶
作者: sorryla (Mr.東)   2018-03-03 06:36:00
樓上,對於無法分辨台灣人才然後說台灣沒有軟體人才的人不用指望太高
作者: sunsamy   2018-03-03 08:46:00
這麼迷信時間複雜度?可能沒寫過平行運算或ASIC,就算同一電腦,不同指令的O(1)時間也不同
作者: pttworld (批踢踢世界)   2018-03-03 10:44:00
目前經歷來說,混討論區社群都不怎麼樣你什麼看副總在批踢踢發文,會混的就是程度一般想藉由別人的意見來加強自己,這種都還不能獨立
作者: lNishan (紫小霓)   2018-03-03 11:38:00
我同意 priority 我是想說明 DS 的重要性沒有人在迷信時間複雜度 只是第一個參考的 benchmark我剛好寫過 如果你還加 compiler 優化、記憶體用量我也可以繼續討論下去 只是那樣就完全偏離主題了吧比如說 caching 還有一群 cache-oblivious 演算法 資結這些都是初學者 一般寫程式的都不太需要知道的
作者: elements (Helianthus annuns)   2018-03-03 12:41:00
原po有問priority嗎?priority只有自己知道。反正要混下去,這兩個都得會,還得會的更多,每次有人問這個就被說跟說喔不對你要先學另一個。迷信複雜度就是不懂複雜度才容易迷信。把一套指標哪裡套在所有地方本來就是不對的,但照這樣說所有指標都是迷信,就連比薪水都會有人說薪水不是唯一的,所以乾脆都不學回去睡覺好了。
作者: lovdkkkk (dk)   2018-03-05 16:16:00
不用兩個, C 只要一個 pointer 就 100% 夠用 :p

Links booklink

Contact Us: admin [ a t ] ucptt.com