经常听到高手这样建议,
每年应该学习一门新的编程语言。
一直以来,我都不以为然。
但是,最终还是照做了。
我觉得,
尝试不能理解的事情,
才能有所改变。
现在想想学过的这些语言,
Basic,C,VB,Assembly,C++,
JavaScript,C#,SQL,
Scheme,Prolog,Fortran,Matlab,
Java,Haskell,Common Lisp,Racket,
Erlang,Python,Clojure,Go,
Swift,R,ML,Rust,Ruby
不求精通到什么程度,
只求能读懂程序所表达的含义,
我觉得收获很大。
我有了机会和使用这些语言的专家交流,
理解它们的思想,
跟随它们的脚步。
直到现在,
我仍然认为这是一件极好的事情。
何时开始
一路走来,
其实并没有花费多少工作时间,
这一切都是业余时间完成的,
回想起来也觉得不可思议。
因此,像我一样乐于品味代码的人,
如果希望学习更多的语言,
不妨就从现在开始吧。
茶余饭后,地铁上,
回家的路上,晚上睡不着的时候,
等人的时候。
这些都是绝佳的时机。
我并不认为这是浪费时间,
因为一个好的想法,
远比多个愚蠢的想法更有用。
我们应该努力产生好想法,
而不是权宜之计。
当没有技术专家从旁指点的时候,
我们只能学习别人的思想,
而思想只能通过语言来表达。
不错,语言未必是声音,
也可能是代码。
如果此时,
你看不懂别人的代码,
这是多么可悲的事情。
从哪里开始
每个人似乎都有自己的一条语言学习之路,
各不相同。
所以,重要的不是路线本身,
而是路线上的收获。
人们只是倾向于让自己收获更多。
然而,这些语言就好比武林秘籍一样,
是按阶段分的,
直接学习必杀技可能会走火入魔,
应该循序渐进。
再者,根本就没有必杀技,
只有适用的招数。
可能,学了一门语言以后,
几年后,还要回过头来再详细梳理一遍,
重新体会。
这也是很正常的,
所以,也不必一开始就想着掌握它,
而且,一开始也根本无法掌握它。
因此,就从当务之急的一门语言学起吧,
挑一个自己感兴趣的,
可能是为了工作,也可能是为了看懂代码,
无所谓,只要开始学就行了。
学不下去的时候,
不要放弃,
换一个语言玩玩。
过了几年,
大不了重新挑战。
我熟悉的语言
有些语言很神秘,
例如Scheme和Haskell,
没有比它们更吸引眼球的了。
至于为什么呢,
也可能是因为它们难学,
可以更快区分一些不真正喜欢编程的人。
但是,我现在有了不同的认识,
Scheme和Lambda演算有关,
Haskell和类型系统有关。
它们有很强的理论性,
学习它们能坚实自己的理论基础。
非常多的学习资料,
都是用Scheme和Haskell来表述的。
代码作为活生生的例子,
佐证了编程思想。
随着学习的深入,
越来越离不开理论指导,
而例子对于理论来说事半功倍。
不过,综合各个语言来看,
是学习的需要,而不是虚荣心的需要,
迫使我们去掌握一门语言。
一开始我们可以尝试一些Scheme和Haskell,
等迫切需要的时候,再认真的学习。
结语
学习语言是一件有趣的事情。
排斥它的人有之,
操之过急的人亦有之。
然而,敢于暂且放下,
以后重新挑战的人,
却很少。
这真是,
醉卧沙场君莫笑,
古来征战几人回。