谈程序员的学习(一)

程序员的学习,总是会带着功利性。要考虑某项技术能否为自己带来实际的好处,比如对目前的工作是否有益,掌握新的技术是否利于自己的加薪升职,是不是符合现在的技术潮流。作为一个“理性人”来说,时间当然要花在刀刃上,有这样的想法没毛病。

大概7年前,看到有人这样说:“工作上可能根本不会写Haskell代码,但这不代表它没有价值。Haskell会为你打开一个全新的世界,颠覆你对编程的认知。学过Haskell可以让你对其他语言的使用也更加娴熟,写出完全不一样的程序。具体的好处呢,这个东西我没法跟你描述,就好像没法向色盲描述红色和绿色一样,只有你自己体验才知道”。这样的描述激发了我的好奇心,然后就入坑Haskell,但是到现在也没能掌握,没体验到上面说的这些好处。

Haskell的书籍不算多,入门的最好的一本是Learn You a Haskell For Great Good,讲实战的是Real World Haskell。这么多年了,我连这两本书都没能看完。思考了下,原因是这样的,对Haskell特别感兴趣的时候,书看的特别快。但是看不了多久,便开始思考“理性人”的问题了:这玩意儿学完究竟有啥用?只要一开始考虑这个问题,就离放弃不远了。所以花了7年的时间,我都入不了Haskell的门。

最近偶然看到倚天屠龙记里面的一段情节,对我有很大的启发。

张无忌吃完蟠桃,心想:“太师父当年曾说,若我习得少林、武当、峨嵋三派的九阳神功,或能驱去体内的阴毒。这三派九阳功都脱胎于九阳真经,倘若这部经文当真便是九阳真经,那么照书修习,又远胜于分学三派的神功了。在这谷中左右也无别事,我照书修习便是。便算我猜错了,这部经书其实毫无用处,甚而习之有害,最多也不过一死而已。”他心无挂碍,便将三卷经书放在一处干燥的所在,上面铺以干草,再压上三块大石,生怕猿猴顽皮,玩耍起来你抢我夺,说不定便将经书撕得稀烂。手中只留下第一卷经书,先行诵读几遍,背得熟了,然后参究体会,自第一句习起。他心想,我便算真从经中习得神功,驱去阴毒,但既被囚禁在这四周陡峰环绕的山谷之中,总是不能出去。幽谷中岁月正长,今日练成也好,明日练成也好,都无分别,就算练不成,总也是打发了无聊的日子。他存了这个成固欣然、败亦可喜的念头,居然进展奇速,只短短四个月时光,便已将第一卷经书上所载的功夫尽数参详领悟,依法练成。练完第一卷经书后,屈指算来,胡青牛预计他毒发毕命之期早已过去,可是他身轻体健,但觉全身真气流动,全无病象,连以前时时发作的寒毒侵袭,也要时隔一月以上才偶有所感,而发作时也极轻微。不久便在第二卷的经文中读到一句:“呼翕九阳,抱一含元,此书可名九阳真经。”才知这果然便是太师父所念念不忘的真经宝典,欣喜之余,参习更勤。

张无忌之所以能成功,就是靠着这种“ 成固欣然、败亦可喜 ”的念头。跌下悬崖的时候已经中了寒毒,在山谷里也没别的事情可以做,反正也是等死,还不如静下心来学习一下九阳神功。万一学会了,还能把寒毒治好。学不会也没什么损失,本来也快死了。如果像我等“理性人”一样去思考,“九阳神功到底有没有用啊?一定能治好我的病么?能让我一统江湖吗?”,恐怕倚天屠龙记就到此为止了。

抛开功利心,不去考虑Haskell到底有没有用,而是把它当做玩游戏打怪升级,也是充满乐趣的。即便不能加薪升职,不能走上人生巅峰,也没什么坏处嘛,最起码比把时间浪费在娱乐活动上要好吧。乔布斯都说了,“Stay Hungry, Stay Foolish”,在学习上做个傻子,又何尝不可呢?

希望等到十年的时候能够学会Haskell,然后写一篇文章。题目我都想好了,叫做“How to Learn Haskell in 10 Years”。