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