編程的思想性——議編程與「武功」的一致性

目錄

  1. 緣起
  2. 緣生
  3. 原因
  4. 緣中

1、緣起

       最近作了一件事情,將寫好的scala程序中稍顯混亂和不雅的代碼進行了重構(系列博客見http://www.cnblogs.com/shoufengwei/p/5619419.html),固然重構的過程其實不只是對代碼的整理,也是對本身已掌握知識的整理的過程,也可讓咱們明白之前未掌握的或者比較模糊的知識。html

       好比關於擴展方法的使用。以前採用的是Helper類的方法,重構時改用了擴展方法。建立Helper類基本上沒有使用scala中牛逼的類型系統(實際是由於不懂),泛型也只是偶爾用了一下。在重構的過程當中,考慮可否儘可能多的使用泛型使得代碼儘可能複用。過程當中雖然也碰到了一些問題,最終也基本經過各類途徑達到了目標。在總結這次重構的過程當中,我發現本身對scala中的泛型以及類型知之甚少,因而開始在網上搜索相關資料,搜索到了王宏江的博客,咋一見,就像得到了九陽真經同樣,沉溺其中沒法自拔,就引發了本篇故事。java

2、緣生

       其幾十篇博客詳細講解了scala語言以及函數式編程。用了一週多時間將其概略讀完,顛覆了我對scala以及函數式編程乃至編程的認識。正像其在博客中說的,大部分人都是在像使用java那樣使用scala,而我以前主要在使用C#,也學習過java,因此我是不折不扣的在像使用C#那樣使用scala,固然如今來看C#的「用」也是最低級的「用」,從Helper類的使用也可見一斑。程序員

       學習了王宏江的博客以後更加明白了本身的無知,感到本身才在編程的海洋中朝着彼岸遊了幾米,確實有一種醍醐灌頂、頓悟的感受,之前看待編程語言就是一個個的特性加一個個功能函數,因此真的是在「用」語言編程,進行的是功能語句的堆積,頂多再加一些技巧,只要實現功能就好。而如今可以開始經過一個個的特性以及功能函數看到其背後蘊藏的思惟邏輯以及數學知識等(這一點還遠遠不夠),感受本身才真正的開始邁向編程的大門。苦苦思索很多天,我感受其實編程就跟武俠小說中的「武功」是同樣同樣的。編程

3、原因

       非科班出身的我,一開始徹底是出於興趣和無所事事以及工做須要開始編程(詳情請見個人奮鬥——從印刷工人到地理信息大數據系統程序員)。剛開始的編程就是去記那些語言中的方法、特性等,反覆寫、反覆用。有點像是郭靖吧,雖然資質平平,可是勤能補拙,最後也取得了必定效果,基本掌握了各類語言的Hello World。框架

       直到看完王宏江的博客才頓悟,編程真的不只僅是一個個函數,而應該是最後的心法即融會貫通,看透一招一式背後蘊藏的內涵,就像楊過同樣,在學會了各門派武功的招式以後,最後因爲姑姑的離去獨自思索,悟出了黯然銷魂掌,成爲一代大俠。固然還有近代的李小龍,李小龍對武術的貢獻也絕非其滿身肌肉以及漂亮的招式,其與同時代武術大師的不一樣就在於將哲學融入到武術當中,創立了截拳道,使得詠春拳不只僅是那簡簡單單的招式,有了背後的哲學邏輯。再好比太極,只要稍加練習都可以揮那麼一兩下,而真正的背後哲理又有幾人明白呢?編程語言

       固然我以爲學習編程的過程依然應該是從招法開始,只有熟悉並掌握了足夠多的招法你才能去理解背後的那些東西,所謂的量變到質變。李小龍若是沒有以前對傳統詠春拳的練習也不可能會悟出這些背後的哲理。在練習招法到必定程度的時候就要開始去嘗試學習理論,研究背後的哲理,哪怕本身當時不明白,經過必定時間的積累必定會有頓悟的一天。古代私塾先生教書也是一個很好的例子。而我徹底是自學,沒有人指導,徹底靠着本身的摸索,因此以前缺少了理論和背後邏輯的學習,此次經過學習王宏江的博客感受慢慢的入了門了。函數式編程

       再好比之前老聽到大牛這個詞,當時以爲大牛就是那些能把語言的全部方法都記住全部特性都清楚以及精通各類框架等等的這類人,如今想來徹底不是,所謂大牛應該是那些具備思想性的人,不侷限於一招一式一個函數,而是可以將這些一招一式融會貫通,看到背後的思想。就好比段譽,雖然只會六脈神劍,可是誰能說最後的段譽不是一個大俠呢?函數

4、緣中

       所謂緣中,非終也,而是想表達路漫漫其修遠兮,這條艱辛的道路才走了一點點。更況且本文開始寫的時候就比較猶豫,醞釀了好幾天,由於只是一個感悟,還徹底沒有達到這種境界,難免給人一種冒充大牛的感受。不過這應該是我編程生涯的一個轉折點,從一招一式到心法的轉折,將其記錄下來也好。本文說的不必定正確,僅爲我的感悟,歡迎各位大牛批評指正!學習

相關文章
相關標籤/搜索