[請益] 請問程式架構和資料結構的差異

作者: serenitynice (cregryrm)   2022-06-30 12:31:21
各位大神前輩好,新手發問
想請教一下程式架構和資料結構的主要差異,及重要性?
是這樣的,我在爬文時看到這篇文章,詢問資料結構的重要性
#1Tigizmt (Tech_Job)
裡面有一段討論是這樣的:
※ 引述 《a23395080 (路過看看)》 之銘言:
: 噓 ll1117: 我的程式結構比現在任何資結都強兩倍,不用管書上說什麼 10/25 17:33
: 噓 pig2014: ll117少誤人子弟,程式結構是SOLID跟design pattern,干 10/25 17:49
: → pig2014: DS屌事 10/25 17:49
想問所謂SOLID和design pattern應該是和物件導向那塊有關吧?
這個和資料結構有什麼關聯嗎?
我自己的認知是
程式的整個架構和好不好維護、能不能擴充有關;
資料結構是可以減少程式的複雜度,讓速度變快,或是為了某些演算法而生的?
本人目前剛修完大一的程設,什麼design pattern和資料結構還不太熟悉
物件導向剛學會封裝、繼承、多型;
資料結構只有寫過linked list,tree那些還沒自己刻過
想問這兩個有什麼關聯嗎? 還是不同領域的
有重要性之分嗎?還是跟著學就好了
謝謝各位指教
作者: holebro (穴弟弟)   2022-06-30 12:34:00
不同領域 都很重要
作者: chrischen (一個人的長假)   2022-06-30 12:39:00
就 程式 跟 資料 的差別 先理解這兩個名詞
作者: ko27tye (好滋好滋)   2022-06-30 12:42:00
資結現在是大一的課了?
作者: Hsins (翔)   2022-06-30 13:02:00
你的認知大致上是對的
作者: ChungLi5566 (中壢56哥)   2022-06-30 13:03:00
資結大二就會上了別急
作者: hidog (.....)   2022-06-30 13:11:00
基本的搜尋排序,就會跟資料結構扯上關係了
作者: hobnob (hobnob)   2022-06-30 13:15:00
你的想法大致對,那種人的高談闊論看看就好
作者: longlongint (華哥爾)   2022-06-30 13:18:00
Design pattern 讓你方便維護跟擴充功能資結演算法 主要是改進程式的效能 但也方便維護
作者: lazarus1121 (...)   2022-06-30 13:20:00
資料結構偏演算法,程式架構偏設計
作者: longlongint (華哥爾)   2022-06-30 13:21:00
目標不一樣 但這兩科有一些共用的知識
作者: poison5566 (已中毒)   2022-06-30 13:45:00
架構底下可能還會實作資料結構 兩者不能混為一談 大二會教資結但我的學校沒什麼教程式架構ㄏ
作者: luke72 (ccc)   2022-06-30 13:58:00
好的資料結構可以讓程式架構變的紮實,有效率,高彈性這是相輔相成的。會說不相干的只能說他沒弄懂
作者: jj0321 (JJ與你倒數唷)   2022-06-30 14:02:00
身體胖瘦高矮 = 資料結構, 穿搭好看與否 = 設計
作者: chatnoir (對不起)   2022-06-30 14:04:00
資料結構就是你的材料, 程式設計就是你炒出來的菜~你要怎麼炒得色香味俱全, 首先你的材料要準備得夠充分
作者: s06yji3 (阿南)   2022-06-30 14:07:00
程式架構跟資料結構掛鉤的話,換個實作方式架構不就要整個重寫?
作者: chatnoir (對不起)   2022-06-30 14:07:00
演算法跟設計就比較像是你炒菜的功夫了
作者: s06yji3 (阿南)   2022-06-30 14:10:00
這樣好像不太合理
作者: alan3100 (BOSS)   2022-06-30 14:26:00
如果你是講效能的話通常資料結構是硬限制上不去就得大改如果你在小公司資料只有幾百萬筆那會不會資料結構沒啥差程式結構強對應快速需求變化也許比資料結構重要但如果你在大公司不考慮資料結構大概就是完全跑不動=0分
作者: luke72 (ccc)   2022-06-30 15:54:00
換個資料結構就要整個架構重做,代表架構太弱好的設計應該是只影響到該改動的部分阿高內聚低耦合有沒有聽過
作者: s06yji3 (阿南)   2022-06-30 16:31:00
那不就表示程式架構和資料結構互相不影響嗎?
作者: ssccg (23)   2022-06-30 16:46:00
沒到互不影響,有時候要達成某種程式架構,一定要有某功能的資料結構
作者: wsad50232 (阿豐)   2022-06-30 16:55:00
OOP是垃圾
作者: wulouise (在線上!=在電腦前)   2022-06-30 16:56:00
algorithm + data structure + design = programming
作者: brucetu (sec)   2022-06-30 17:47:00
先去刷題刷個十題 再學一種後端開發框架做個留言板 你就懂程式架構跟資結是指什麼了你可以完全不碰前端 用postman打api 用你覺得方便的語言做幾支api實現留言板的功能推薦python flask的網路教學隨便找幾篇照著做 幾個小時就懂了
作者: NTUTM04 (TM終號機)   2022-06-30 18:53:00
通常會說OOO最好XXX最糟糕的 這種評論可以直接跳過
作者: luke72 (ccc)   2022-06-30 18:56:00
很多人以為資料結構=演算法,卻忘了為什麼它叫資料結構與架構關係很小的是演算法啊
作者: s06yji3 (阿南)   2022-06-30 19:07:00
這樣有點矛盾,演算法跟數據結構關係很大。
作者: superpandal   2022-06-30 19:23:00
以前寫java的時候也是通通搞混 因為oop就是那樣 只是後來意識到就會用資料結構去形容
作者: OnlyRD (里巷人)   2022-06-30 19:37:00
資料結構和程式結構也有關啊,通常封裝的原則就是越靠近操作就應該擁有相關的資料,依據這個原則設計程式基本上都不錯。但資料結構又會牽扯到算法與記憶體大小、對齊、cache、拷貝、搬移、heap、stack、資源競爭等等,怎麼可能完全跟程式設計無關?很多人認為解耦和越高的程式設計就是好設計,實在是想得太簡單太理論,實務上真的有用的是慣用手法+重複使用某些基礎元件和結構,更小範圍的使用idioms,有興趣去看一下absl和folly,他們並不是一個傳統的框架,卻集成了許多常用通用的概念元件,並且散佈在不同的大型軟體之中。如果不清楚應用,設計出天霸王型的軟體架構,企圖解決所有問題,包括不知道的需求,專案很容易失敗。類似的概念還有程式產生器這種東西,最後都淘汰在歷史洪流之中,沒有什麼都通吃的設計,只有最適合的設計。
作者: bill0205 (善良的小孩沒人愛)   2022-06-30 20:14:00
資料結構和程式架構是兩回事..完全不同領域的東西
作者: jl40 (jl)   2022-06-30 22:05:00
大一最重要的課程 是社交 談戀愛 別荒廢了
作者: lovdkkkk (dk)   2022-06-30 23:04:00
板上搜尋 "後端工程師要如何更優秀" 有些不錯的介紹
作者: viper9709 (阿達)   2022-07-01 00:18:00
推二樓
作者: lturtsamuel (港都都教授)   2022-07-01 01:38:00
大一不要想這些有的沒的 去辦營隊認識女生比較要緊==
作者: poison5566 (已中毒)   2022-07-01 03:47:00
推樓上 女朋友和書卷我選女朋友
作者: wahaha279 (哇哈哈:3)   2022-07-01 11:36:00
程式架構是為了應付需求變化,資料結構是為了運算效率,但資料結構會影響到程式架構。
作者: luke72 (ccc)   2022-07-01 13:59:00
爛的資料結構會讓你必須加一堆workaround才能應付需求
作者: OriginStar   2022-07-01 14:40:00
其實就是2件事混在一起談。以訂票系統舉例,餵1000元退一堆50元銅板造成困擾,是程式架構的問題重複訂票造成困擾是資料結構的問題,但一般人就認為系統爛有問題
作者: NCUking (中大王)   2022-07-01 15:23:00
你認知是對的 反串推文少看 不要浪費生命
作者: strlen (strlen)   2022-07-01 16:01:00
要說完全無關也不是 有一些程式架構 就是從資料結構來的
作者: ChungLi5566 (中壢56哥)   2022-07-01 16:24:00
大二上DS就會懂了 這門課會告訴你電腦怎麼有效率的處理資料存取、排序等等 跟程式架構要探討的主題完全不同
作者: s06yji3 (阿南)   2022-07-01 16:57:00
重複訂票是數據不整合。跟數據結構沒關係。確實是系統爛。0.0
作者: Romulus (Säubern Mode)   2022-07-01 18:12:00
通常推文不認識的ID嗆最大聲不要誤人子弟的就是最誤人子弟的那個
作者: superpandal   2022-07-01 19:46:00
資料結構有關聯 但搞成物件導向多半都很難維護 畢竟各大專案都寫自己的 然後你湊起來又會因為語言本身特性導致你綁手綁腳還要夠了解才維護的好 成本超乎想像如上面有人講的 好維護過生活不是更好?尤其註解流 資訊零散的太恐怖了 只有對原來開發者友好
作者: kurtsgm   2022-07-02 16:13:00
程式架構跟資料結構無關 是兩碼事
作者: ChampionYe (A Sunny Boy!! haha)   2022-07-03 01:09:00
實務開發上好像不會硬是區分是哪一種欸,端看需求跟問題點來決定去設計跟改善什麼
作者: qrtt1 (有些事,有時候。。。)   2022-07-03 11:21:00
https://bit.ly/3OHMT3N 推薦這個 Clojure 相關的影片 :D
作者: frrr (franky1)   2022-07-04 12:33:00
學過設計模式後 才會到達新世界的起點
作者: acgotaku (otaku)   2022-07-04 13:12:00
重開治百病啦,還有病就加機器。現在微服務的架構,服務都能重啟 記憶體優化重要性比程式能不能維護擴展相比。我會著重在後者
作者: andy831020 (Liszt1020)   2022-07-09 02:58:00
痾... 物件導向只是其中一個面向你在沒有物件導向的語言一樣要SOLID 跟考慮design pattern

Links booklink

Contact Us: admin [ a t ] ucptt.com