【IT168 资讯】我花费了一年多的时间,不断地学习新的编程语言和框架,鬼知道为什么有这么多新东西可以学习。对于每一种新的语言或框架,我自认为获得的价值有可能超过迄今为止学到的任何语言和框架。不过,事实似乎正好相反。
我从一个新的语言或框架得到的价值可能根本不值得花时间来学习它。随着每一门新语言的学习,我都会问自己:学习这门新语言是否值得花费这么多时间呢?
事实证明,这个问题是普遍存在的——程序员和编程语言之间的关系就如同赌徒与老虎机之间的关系。
老虎机是一种用零钱赌博的机器,因筹码上有老虎图案而得名。老虎机曾风靡一时,尤其是淘金热浪下的各大娱乐场所。其上有三个玻璃框显示图案,投币之后拉下拉杆。如果三个玻璃框中的图案相同,则赌徒赢钱,否则不赢。
程序员面对着众多编程语言就好像赌徒坐在一排老虎机前面,赌徒的目标是在这些老虎机上获得尽可能多的价值。没有其他顾客会告诉赌徒哪些老虎机是好的,哪些是坏的,哪些中奖概率高,哪些投入高。为了找到最好的机器,赌徒必须尝试不同的老虎机,并对结果进行比较。
赌徒可以选择继续使用目前测试出来最好的机器,或者选择一个新的拉杆。拉一个新的拉杆有可能获得有关另一台机器的信息,但有一定的机会成本。并且,结果是未知的。如果结果不太好,那么很可能牺牲了最好的一个机器,而为新机器付出了代价。反之,这台新机器可能比任何机器都要好,但在拉杆被拉出之前,赌徒并不知道这一点。
解决方案:探索/利用
赌徒可以向顾客询问一些建议并尝试一些机器。最终,当尝试新机器的成本足够高的时候,赌徒自然可以找到最好的机器。
这如何适用于学习新的编程语言呢?
关于是否应该学习某一门编程语言一直是程序员求之而不得解的问题。在选择一门编程语言之前,初学者可能会告诉你一些关于学习曲线的答案,而老司机可能对此有不同的看法,老司机可能会考虑市场需求、薪资待遇等等情况。而新的编程语言和框架会一直不停的出现,每出现一个,你都有可能抵不住诱惑去尝试。
旧的编程语言还可能会升级,从1.0到2.0再到.....,程序员总会认为升级后的版本比升级前更有吸引力。或许更好,但不等同于程序员可以从中获得价值,并且大于付出成本。
程序员到底应该如何做呢?在学习Python或F#等新语言之后的一段时间内,程序员可以尝试使用这种新语言,这是很重要的,而不是马上跑去学习Clojure。并不是说Clojure永远不值得花时间学习,但是熟练掌握现有编程语言是很重要的。
其次,很多编程语言都是相通的,如果你掌握了Java,为什么不试试Kotlin?这些相似性可以大大缩短学习曲线,同时不建议从简单的编程语言入手,这对以后的学习是不利的。总之,每学习一个新的编程语言,就探索该编程语言的实践,停下脚步,不要马上去追逐下一个。追求老虎机是没有止境的,而游戏币很快就会用完。