對於現在的開發者來說,數據結構和演算法是否依然重要?

大多數時候開發一個網站或者移動應用並不需要太多複雜的演算法,而且很多演算法以及數據結構語言自身已經提供。因此,數據結構和演算法重要性是否不如從前?


謝邀。

以我個人而言,我覺得計算機學科越是基礎的東西越重要。

工具類的知識只要你肯花時間,總是能夠學會的,而思想你卻不一定能學得會。

偏偏越底層越基礎的東西,才是最有價值的。

上層的東西總是會死的,無論他現在多麼牛逼。


瀉藥。我支持題主的說法,重要性確實不如從前,特別是對使用傳統的c語言的數組和指針來實現的數據結構來說,其細節就更不重要了,了解即可。
完全忽略當然是不大可能的,我也不贊同,但是看題主的口氣,本來也沒有這個意思。
相對來說,程序員應該花更多精力在業務邏輯、用戶交互、自動測試等等以前常被忽略的方面。


現在編程已經成熟很多了!私以為能夠靈活的運用各種API快速完成工作也是十分了不起的。

演算法與數據結構的話,這個得分行業,每個行業的程序員又不一樣,沒必要一概而論。

web後台看不起前端,,PHP程序員看不起WordPress工程師,這樣是沒有必要的,目的不同自然方向不同。

不過隨著計算機硬體的發展和編程軟體的成熟,演算法和數據結構確實對比之前被稀釋了不少,沒有以前那麼要命了。


對大多數做業務的來說,了解很重要,熟悉精通不重要。 做開發重要的東西多了去了, 比數據結構和演算法重要的東西多了去了。


對於c來講很重要。
如果是嵌入式設備,那簡直就是命根子。
數據結構做的好,軟體硬體能剝離開,產品可維護,做不好,寫出來的恐怕就是坨屎了。
演算法很要命,特別是在運算資源緊張的情況下。
比如,除法很慢,如果演算法好,轉換成乘法,效率就不是一般的高了。
在通信行業里,有些射頻通訊協議要求反應速度在微秒級,這時候好的程序員和爛程序員就立即能看出差別了


數據結構與演算法無疑是軟體開發的基礎之一,重要性也不可置疑。不過,現在開發一個網站應用的門檻越來越低也是事實,數據結構與演算法的知識的必要性在很大程度上被各類強大的第三方庫下減弱了。但是實際的業務問題的複雜性是不可預測的,數據結構和演算法的知識會大大的增強你解決實際業務問題的能力。所以永遠都不要忽視這方面的不斷學習和提高。


其實這個問題等價於,搬磚需不需要學物理。

如果只干搬磚砌牆的活,熟練掌握工具那也就夠了。但是要想設計建築的話,還是要學很多東西的。


這是基礎!別找理由偷懶了,會寫代碼不代表寫得出好代碼。即使人家提供了各種基礎容器和演算法又怎樣,在不知道它是什麼結構的情況下你知道怎麼才能用好它么?
比如要知道了鏈表和普通數組的不同,才知道一個不能用來隨機訪問元素,一個不能隨便地插入元素。
另外,有些演算法或者數據結構要稍微改變一下來適應業務邏輯,使它效率更高,占更少空間等等……這些也需要有數據結構的基礎。


計算機的逼格已經降得不能再降了。

必須強調數據結構和演算法啊!!


我屬於業務人員,不是技術人員,但我在而立之年下決心學編程,按理說這個年齡正是程序員尋求脫離碼農崗位的時期,但我有一種很強的預感是,未來的業務專家一定要懂如何編程序實現的,所以我開始學編程。目前正在學python,一般認為像python這樣擁有強大第三方庫的腳本語言對數據結構和演算法是沒什麼要求的,但我感覺數據結構和演算法能很好地鍛煉你解決問題的能力,讓你更有思路,這種由演算法選擇鍛鍊出來的解決問題的思維方式和思維能力特別重要,因此,我非常重視數據結構和演算法。


你問這個問題說明你接觸的東西還是不夠核心,不夠複雜,這個問題最好的答案在於你自己的頓悟,等你發現你在做複雜系統力不從心,在解決問題不能通過想當然解決的時候,就會知道它們重不重要了


非常重要啊


你聽了一個笑話,如果你知道這個梗,你就會笑,不知道就不會笑。


對開發者重要。不要給自己偷懶找借口了。基礎的重要性從未動搖過。不重要只對商人不重要,他們已經可以不擔心招到的人因為寫不出快排而影響幹活了。


開什麼玩笑。。。數據結構和演算法是最基礎的東西,是培養計算機素養必備的,是每一個學計算機的人必須了解並且熟練掌握的。


現在我們說的軟體開發,程序開發其實準確的應該叫軟體設計,程序設計。而程序設計的本質就是數據結構設計。

就算你是現在所謂的代碼搬運工,你都得至少考慮數據類型和程序語句執行順序等吧。這些不都是數據結構的基礎么?


現在有一個誤區,很多人都在說現在軟體編程的門檻降低了,其實不是。隨著計算機技術日新月異的發展,越來越多的技術湧現,其實軟體編程的複雜度反而提升了很多。但是核心的數據結構知識一點都沒有變。這也就能很很好的解釋題主的問題,為什麼現在很多人感覺數據結構等基礎知識不重要了。因為,大家都花了大量精力和時間去追新技術新熱點,暫時沒有時間精力來重視數據結構等基礎了。


個人以為,演算法和數據結構的重要性是毋容置疑的,只不過它們更多的體現在各個系統、平台、框架、組件的內部,而不是表面,就像四則運算加減乘除一樣,我們天天花錢、存錢時時用到但並不是天天掛在嘴上,意識不到、看不起、摸不著的東西往往是最重要的,比如空氣,我們置身其中就忽視其生命價值,這樣若妄自菲薄就不對了
當然,光說上面這些就太裝逼了,在實際應用中了解各種底層技術的原理很重要,比如演算法、數據結構、通信協議、文件系統、驅動等,雖然自己不寫那些東西,但是了解其原理對於排錯、優化自己的代碼有很大幫助,就好比雖然你不設計製造汽車,但如果你了解發動機、變速器、安全氣囊等幾項原理,對於你駕車如何省油、延長使用壽命、保證自身安全有很大好處
學而不思則罔、思而不學則殆,開發人員就是個隨波而進的行業,無論何時何地,保持學習的深度和廣度對於自身發展是很重要的,誰都不想60歲退休了還停留在增刪查改的層面


現在編程的層次越來越大了,特別是做業務系統和做底層的。
做業務系統的,編程語言內置的那些演算法完全夠用了(前提是你的業務系統不夠大的話),更重要的是做一個業務專家。
當然完全不懂還是不行,至少你得知道什麼時候用List,什麼時候用HashSet吧。


不重要。現在的程序員主要是用已有的lib搭建具有結構質量的產品,面向消費者問題的解決,著重點是結構質量,而不是材料。

這是軟體產業分工發展的必然,不是一談「軟體」全從基礎學術的層次上展開工作了,這就像汽車行業用不著去自己搞材料科學,餐飲服務用不著關心豆油加工,

一個演算法絕對不是廉價的,今天隨便練習謄寫的「俄羅斯方塊」,發明/創作出來的時候都是價值巨大,甚至養活一個公司,形成一個產業,享受版權幾十年的收益,類似可口可樂的配方,谷歌的核心演算法技術。

這也意味一個演算法的成本其實是非常高的,這種高是寬容的氛圍,是需要慢慢滋養的,且不是養雞場式一定超出的,絕對不是說今天隨隨便便琢磨一個,明天隨隨便便琢磨一個這般,

弄得演算法很廉價,好像人人都要有,程序員好像不弄出個演算法就達不到及格線了——這都是些小屁孩才以為是的

了解已有的演算法,會照葫蘆畫瓢就相當不錯了,就已經是professional,還人人去發明演算法??可以這麼說,你要是想出一個有價值的演算法方案你就可以吃專利金銀富貴了。

一是資本,二是這些小屁孩,把「演算法」看的太廉價,急功近利,浮浮躁躁,折騰半天浪費時間成本做無用功,弄得一個需要潛下心的行當沒法正經做事。

——————————————————————

總說基礎重要,重要是重要,你覺得配去科研基礎領域么???全世界的資料庫就用oracle這麼一兩家產品,你覺得你能研發更優的方案么?你就是有這個信心你有多大資本配去做這個事情??

理論物理學高端「高大上」,全世界60億人去研究理論物理學??

要搞清楚自己的位置,領域無貴賤,到了一些「理工崇拜工業黨」就非要分出個三六九等,幼教的就不如高等教育的了,孩子一出生就上大學?應用產業里就非得搞高精尖??


對於代碼工人,只需要了解某類語言的基本特性,能夠按照設計實現,bug盡量少就好了,這些是技術發展的福利,前些年汽車產業也是這麼出來的生產線。

稍微往上,計算機科學基礎就會成為向上突破的天花板。

不光上不去,而且看不到。

欲窮千里目,多看幾本書。


推薦閱讀:

有哪些優秀的演算法題?
ACMer 或者 OIer 怎麼轉型開發呢?
VLOOKUP 到底有多重要?
脫單有沒有類似數學公式或者編程之類的東西?
完全用彙編寫成的最複雜的商用軟體是什麼?

TAG:編程 | iOS開發 | Java編程 | ASPNET開發 |