對於計算機學科的學習,你所理解的什麼是「內功」?作為初學者在平時如何去修鍊這種「內功」?

上MOOC聽哈工大一個老師講導論,其中反覆提到一個詞語「思維」,就是計算思維,他把這種思維比作一個人的內功,只有經過我們平時不斷的鍛煉,才能使各個穴位間的脈絡打通,形成真正的思維。

老師說的很好很精鍊,但做為一個初學者,畢竟很難站到他那樣的高度來高屋建瓴的看待問題,希望各位前輩能說說自己成長道路上的一些經驗與感悟,你所理解的「內功」?


其實我是不喜歡編程的「內功」這個稱呼的。編程的核心說白了還是寫代碼,說的再天花亂墜,到最後還是要落實到代碼上。所以,真要說修鍊內功的話,別無它法,就是多寫

想學習數據結構和演算法?自己去實現一遍;

想學習計算機網路?自己去寫個簡單的HTTP Server;

想學習Python/PHP/Javascript/Ruby/C/C++/C#這些語言?有個五六千行代碼量的時候,自然就學的差不多了。

什麼計算思維,編程思維,設計思想,編的多了,自然就能體會到了。

PS:我是哈工大軟院的學生,不知道別的學校怎麼樣,反正本院大部分學生的代碼量可以說是慘不忍睹,大學前三年能有二三千行代碼算是不錯了。這個跟學院的課程設計有一定關係,當然最重要的還是學生自己的主觀能動性不夠。所以,加油吧少年,稍微多些點代碼,你就能超過很多軟體專業的畢業生了。


就像所謂的氣是中醫臆想的存在,內功這種以氣為想像基礎的想像仍然只是一種臆想。真正能把東西學深的是人。遇到不懂的問題刨根究底的問是個人的素質,能夠理解他人或者前人更好的解釋或解決方法是個人的能力。這些素質和能力具備的話你可以從任何一個切入點來不斷提升抽象思維層級來獲取更高層次的知識和思考方式。比如說同樣寫遊戲,宮本茂從藝術表現上著手,讓32個像素能夠傳神的表達馬里奧,而卡神創新性的實現3D引擎。他們都獲得了巨大的成功,然而思考的方向和方法都很不一樣,到底藝術是內功還是數學是內功?其實是兩個人想著別人未走過的不同方向走了一步罷了。

我們大部分人,走別人走過的路都嫌累,還經常迷路。其實選個自己喜歡的方向往下走就是了,你如果不成功,不是路選錯了,而是你沒有把路走到頭的素質。


對函數的理解 除此之外 別無其他

可能很多人都會說代碼量什麼的,但其實 這都是很容易積累起來的。而對函數的理解是需要反覆的揣摩,而且有些是需要意會而無法言傳的。


不是有人說了么,把編程比作武俠小說是最傻逼的事情,私底下拿來當個談資朋友吹水是沒問題的

不是又有人說了么,一個知識你不能把它給初學者講明白,只能說明你完全不懂教學或者你理解得不透徹,總之就是能力不足,而不是什麼勞什子高屋建瓴

反正我曾經給一個基本不懂編程的人講數據結構他是明白了4大基礎結構的想法和原理,而且還是打字講的


搬磚之餘來拋個磚:

所謂的內功大概是指演算法、數據結構、操作系統、編程思想、設計模式等等你平時可能不怎麼用,但是對於你學會外功,充分發揮外功或者自創功夫特別有用的東西。

而外功就是常用的把式,例如java,php,html,js等等,招式是固定的,你照葫蘆畫瓢就行。

須知令狐沖在沒學會吸星大法吸取人內力時,單憑獨孤劍招也就能欺負下田伯光之流,面對修鍊葵花寶典的東方不敗,內力一震就能把他震個內傷,就連任我行都可以把他虐成狗,而他煉成吸星大法後,內力得到提升,就可以和東方菇涼在床上大戰三百回合。。。

而反觀張無忌,自小練得九陽神功,內力雄厚,能夠獨擋六大門派輪流攻擊而不倒,但也僅僅是防守,面對少林高僧時,被迫防禦,無力招架,但他可以很快的學會龍爪手的招式進而照貓畫虎,擊敗對手,以及他很快的學會張三丰臨時教的太極劍,太極拳都是因為他內功紮實的緣故。

再看蕭峰蕭大俠,內功不俗,把降龍十八掌發揮的淋漓盡致,就連整天泡在圖書館修鍊內功的掃地僧都能被他打傷,可見內外兼修的高手是如何的霸氣側漏。

葵花寶典之所以厲害就因為它是一本內外兼修的典籍,進而才讓無數個好男兒前赴後繼奮不顧身的走上了不同於普通男女性別的人類終極道路。可惜我欲自宮,卻無神功。。。咳咳,扯遠了。

以上言論純屬扯淡,小孩子切莫當真模仿,切記切記!


戰德臣的課。。。哈哈哈哈哈。。。

我的感悟就是要聽公開課就聽點正經學校的,為什麼要聽這種課。


@李開復老師的《演算法的力量》

演算法是計算機科學領域最重要的基石之一,但卻受到了國內一些程序員的冷落。許多學生看到一些公司在招聘時要求的編程語言五花八門就產生了一種誤解,認為學計算機就是學各種編程語言,或者認為,學習最新的語言、技術、標準就是最好的鋪路方法。其實大家都被這些公司誤導了。編程語言雖然該學,但是學習計算機演算法和理論更重要,因為計算機演算法和理論更重要,因為計算機語言和開發平台日新月異,但萬變不離其宗的是那些演算法和理論,例如數據結構、演算法、編譯原理、計算機體系結構、關係型資料庫原理等等。在「開復學生網」上,有位同學生動地把這些基礎課程比擬為「內功」,把新的語言、技術、標準比擬為「外功」。整天趕時髦的人最後只懂得招式,沒有功力,是不可能成為高手的。


作為初學者,沒必要修鍊內功。個人認為,所謂內功,就是真正搞清楚原理,而一開始學習的時候,顯然沒拿到這種高度,如果設立太遠的目標,反倒影響學習的興趣。計算機學科,入門門檻很低,先學會一些基礎的,能實踐,能做出一點東西了,興趣一旦上升,自然會去深入去學習「內功」,搞清楚為什麼……個人經歷,很多東西硬學沒學會,但在實踐過程中自然而然知道怎麼回事了。所以,先多學點基礎,能夠馬上拿來用的,提升信心吧~~


回答此問題的人,百分之九十沒有認真聽過戰德臣的課,張嘴就自以為是的吹牛逼。


戰德臣就一臭傻逼


總是見到有人拿武術和編程類比,而其對"內功""經絡"的理解來自武俠小說,根本無聊之極。

我就來普及一下真正的武術,通常練內功指的是樁功也就是站樁,比如太極拳之渾圓樁,形意拳之三體式,梅花拳五式,外家功夫的四平馬步也算。這些樁法也大都有一些共同點:練法簡易,而長期站樁就會練出所謂的"內功",一般學過武術的人都知道,師傅也是每天站樁的。而一般初學者也往往疑問,站樁這東西感覺實戰沒啥關係,練也沒感覺,但練久了就會發現這是開化身體的最好方式。

現在回到編程,啥是內功,確實跟武術有點像,武術要開化身體,編程要開化思維。往往有人說數據結構演算法什麼的是內功,那些只能跟站樁類比,就好比初學者無法理解站樁一樣,大學裡初學數據結構演算法體系結構操作系統你一樣很難真正理解學這個有什麼意義。

當然我說了這麼多,也未必能把我的感覺講清楚。其實我想說的另一點是武俠小說那些東西太虛,沒練過武術最好別亂比。如果你真的想體會一下,可以嘗試學習武術,編程的世界中確實很多道理難以理解,從另一件事上感受一些道理是可能的也很值得。


愚以為編程的「內功」即「知其然亦知其所以然」。給你一個問題,你能知道該用什麼語言、什麼數據結構、什麼演算法解決最合適,而且知道為什麼最合適


老師水平如何不了解,不去評論,但是「內功」是真的存在的,只是在各個階段理解不同。

比如大一大二的時候,我覺得代碼實現能力是內功。那個時候覺得自己最牛的地方是自己不明白很多數學公式的含義,但是看完公式可以比較快的轉化成代碼,並且可以優化掉重複的計算。當時覺得領域知識對程序員是「招式」,代碼轉化能力是「內功」。

現在Master搞計算機基礎理論,每天只考慮模型、問題的可行性,不關心具體實現。編程能力、演算法能力變成了工具,他們只能給我直觀的感覺,對我真正解決問題沒有任何有效幫助。真正的內功是形式化思考方法。


編譯和解釋的原理。


話說我也看了那個~~~ 他一扯易經什麼的 我就直接跳過~~

我覺得計算機的基礎是數學,把問題抽象為數學問題,用什麼語言反而不太重要

然後是軟體工程 怎樣構建一個軟體 兼顧亂七八糟的各種特性


內功主要還是演算法,沒有任何一個程序是離得開演算法的。

然後再上去就是就是軟體工程,設計模式。

最後,內功,還是得靠無數的編程積累起來的~


推薦閱讀:

學習 C++ 需要什麼基礎?
假期里用電腦可以做什麼有意義的事?
pc雙屏有什麼玩法?
如果沒有微軟公司,現在的世界會是怎樣?
有沒有其他公司比微軟更了解Windows系統(或其某一方面)?

TAG:思維 | 編程 | 計算機 | 信息技術IT | IT行業 |