學演算法要注重 How 還是注重 Why?

時間 2021-05-10 05:53:22

1樓:

用學習數學來模擬一下。

現在的大部分的數學教材,大多數先是擺出問題,然後從零開始證明,最後給出結論。這種教法會發生什麼情況呢?

這個方法有乙個明顯的缺陷。在中學時期,因為數學證明基本不超一頁紙,所以沒有明顯表現,但大學就不同。數學證明的嚴格性比中學時期高出太多,一兩頁紙是常有的事,這就會導致一些學生看著看著就不知所云,造成思維的斷層,或者在一些需要證明技巧的地方,給人一種好像是為了秀技巧而這麼證的做法。

因為編寫人員是站在高一層的角度來寫教材的,但這些東西(尤其是一些數學意義上優美的東西)在初學者眼裡會造成嚴重的困擾。

但當你期末複習的時候,你又會發現再看這些證明感覺已經不一樣了,因為這時你已經知道結論了,再看證明就不難推出每乙個步驟是為了什麼而服務了。其實歸納起來,原因就在於你是否開啟了上帝視角去看這些證明過程。

說這個例子,就是想表明,隨著我們需要學的知識日益複雜,我們已經沒法從頭溯源,一步步是全部理解了,更何況遮蔽本來就是電腦科學的一種重要思想。所以在學習的時候,題主不妨先對演算法建立乙個感性的認識(怎麼使用),隨後按照需求去了解why

當然了解why還是很重要的,對於任何領域想深入發展都是。

舉個例子,像大學一二年級的基本演算法,著重點其實是時空複雜度和之間的轉換,這時如果深入了解,就不會深刻的領會這兩個東西,演算法裡的一些思想和技巧其實都大有用處,並非一定要涉及「圖」和「樹」之類才能叫應用了資料結構和演算法。

在工作中可能不需要你反轉一棵二叉樹,但乙個好的程式設計師腦子裡絕對不能沒有時空複雜度這個概念。

如果是某個領域的具體演算法,比如機器學習,影象處理等等,這些也需要了解why,(雖然說你知道why也不一定能實現,實現了也不一定敢用於生產環境),以機器學習為例,你了解了演算法的原理,那麼的做特徵工程和調參的時候,心裡也比那些完成把函式當黑箱來看的程式設計師心裡要有底得多。

總而言之,除非題主數學天賦過人,否則不建議學習演算法的時候直接從why入門,但也別走了另乙個極端,看見什麼都有第三方或標準庫提供,就把學習的重點從演算法原理變成了API名字,這對你長遠發展不利。

2樓:

演算法本來就是how,沒有多少人研究透了why,乙個人一生發明一兩個有用的演算法就不錯了,跟你說要知道why的純屬想提高逼格

3樓:

只有知道why了才能做到真正的靈活,很多瀑布式學習的東西只會讓你的思路受限制。只知道how,會覺得很多技術很神奇,但是知道了why,或者技術發展的歷程,才會覺得這個技術只是在一定的環境一定的需求下的產物,這樣才能看清技術的本質,才能靈活的運用技術,改進技術。

4樓:浪成電火花

說點有用的

how:當做手段

why:當做目標,到最後即使用得很熟了,也在繼續關注下why;

所有的問題都是一類一類的。。。。。

學習數學時注重定理證明還是要更注重於發現問題解決問題的思路和方法?

司萌豚 當然是注重定義啊,定義是天啊。你問的這倆 你知道思路和方法,你不一定能做對。你知道定理和證明,你不知道其思想。所謂 知行合一 在你這個問題上來講就是都要學,都重要,且不限於這兩個。無論哪個,最好做到 知其然知其所以然 dhchen Yuhang Liu 問為什麼有人把這兩個對立起來,那是因為...

軟體工程專業的大一學生應該更注重演算法還是語言呢?

王嘯 作為快十年前的軟工,給一點個人思路吧 1.不要上手就學C 先學好C 2.資料結構比任何語言都重要 3.計算機組成原理比任何框架都重要 4.演算法很難學好,學好了可能大部分時候都用不上 但你一定要保證需要的時候能夠學起來。在關鍵的機會中,這才是軟體行業的殺手鐗。5.軟體工程本質是技術 管理,和電...

請教各位爺,為啥學佛要注重動機和發心啊?

護法居士 爾時會中有一大菩薩摩訶薩。名曰喜王。即從座起。偏袒右肩右膝著地。合掌仰白如來。而作是言。菩薩云何知恩報恩。佛告喜王菩薩。善男子。諦聽諦聽。菩薩摩訶薩知恩者。當發阿耨多羅三藐三菩提心。報恩者。亦當教一切眾生令發阿耨多羅三藐三菩提心。若發菩提心雲何而發。菩薩因何事故。所以能發。善男子。菩薩摩訶...