最近作了一件事情,将写好的scala程序中稍显混乱和不雅的代码进行了重构(系列博客见http://www.cnblogs.com/shoufengwei/p/5619419.html),固然重构的过程其实不只是对代码的整理,也是对本身已掌握知识的整理的过程,也可让咱们明白之前未掌握的或者比较模糊的知识。html
好比关于扩展方法的使用。以前采用的是Helper类的方法,重构时改用了扩展方法。建立Helper类基本上没有使用scala中牛逼的类型系统(实际是由于不懂),泛型也只是偶尔用了一下。在重构的过程当中,考虑可否尽可能多的使用泛型使得代码尽可能复用。过程当中虽然也碰到了一些问题,最终也基本经过各类途径达到了目标。在总结这次重构的过程当中,我发现本身对scala中的泛型以及类型知之甚少,因而开始在网上搜索相关资料,搜索到了王宏江的博客,咋一见,就像得到了九阳真经同样,沉溺其中没法自拔,就引发了本篇故事。java
其几十篇博客详细讲解了scala语言以及函数式编程。用了一周多时间将其概略读完,颠覆了我对scala以及函数式编程乃至编程的认识。正像其在博客中说的,大部分人都是在像使用java那样使用scala,而我以前主要在使用C#,也学习过java,因此我是不折不扣的在像使用C#那样使用scala,固然如今来看C#的“用”也是最低级的“用”,从Helper类的使用也可见一斑。程序员
学习了王宏江的博客以后更加明白了本身的无知,感到本身才在编程的海洋中朝着彼岸游了几米,确实有一种醍醐灌顶、顿悟的感受,之前看待编程语言就是一个个的特性加一个个功能函数,因此真的是在“用”语言编程,进行的是功能语句的堆积,顶多再加一些技巧,只要实现功能就好。而如今可以开始经过一个个的特性以及功能函数看到其背后蕴藏的思惟逻辑以及数学知识等(这一点还远远不够),感受本身才真正的开始迈向编程的大门。苦苦思索很多天,我感受其实编程就跟武侠小说中的“武功”是同样同样的。编程
非科班出身的我,一开始彻底是出于兴趣和无所事事以及工做须要开始编程(详情请见个人奋斗——从印刷工人到地理信息大数据系统程序员)。刚开始的编程就是去记那些语言中的方法、特性等,反复写、反复用。有点像是郭靖吧,虽然资质平平,可是勤能补拙,最后也取得了必定效果,基本掌握了各类语言的Hello World。框架
直到看完王宏江的博客才顿悟,编程真的不只仅是一个个函数,而应该是最后的心法即融会贯通,看透一招一式背后蕴藏的内涵,就像杨过同样,在学会了各门派武功的招式以后,最后因为姑姑的离去独自思索,悟出了黯然销魂掌,成为一代大侠。固然还有近代的李小龙,李小龙对武术的贡献也绝非其满身肌肉以及漂亮的招式,其与同时代武术大师的不一样就在于将哲学融入到武术当中,创立了截拳道,使得咏春拳不只仅是那简简单单的招式,有了背后的哲学逻辑。再好比太极,只要稍加练习都可以挥那么一两下,而真正的背后哲理又有几人明白呢?编程语言
固然我以为学习编程的过程依然应该是从招法开始,只有熟悉并掌握了足够多的招法你才能去理解背后的那些东西,所谓的量变到质变。李小龙若是没有以前对传统咏春拳的练习也不可能会悟出这些背后的哲理。在练习招法到必定程度的时候就要开始去尝试学习理论,研究背后的哲理,哪怕本身当时不明白,经过必定时间的积累必定会有顿悟的一天。古代私塾先生教书也是一个很好的例子。而我彻底是自学,没有人指导,彻底靠着本身的摸索,因此以前缺少了理论和背后逻辑的学习,此次经过学习王宏江的博客感受慢慢的入了门了。函数式编程
再好比之前老听到大牛这个词,当时以为大牛就是那些能把语言的全部方法都记住全部特性都清楚以及精通各类框架等等的这类人,如今想来彻底不是,所谓大牛应该是那些具备思想性的人,不局限于一招一式一个函数,而是可以将这些一招一式融会贯通,看到背后的思想。就好比段誉,虽然只会六脉神剑,可是谁能说最后的段誉不是一个大侠呢?函数
所谓缘中,非终也,而是想表达路漫漫其修远兮,这条艰辛的道路才走了一点点。更况且本文开始写的时候就比较犹豫,酝酿了好几天,由于只是一个感悟,还彻底没有达到这种境界,难免给人一种冒充大牛的感受。不过这应该是我编程生涯的一个转折点,从一招一式到心法的转折,将其记录下来也好。本文说的不必定正确,仅为我的感悟,欢迎各位大牛批评指正!学习