对我而言,不同的语言,学习的方法似乎也不太一样。
最早的时候都是在学校里学的,比如Fortran、C、C++、Java、OCaml等。通过正式的课程去学习一门语言,方式会比较固定和统一,都是上课、做作业、以及编程作业。这种方式通常可以比较系统地了解语言各方面的特性,而实际实践还是要看各人的机遇和选择。所以有一些语言,上完课之后,却是很少再用了。
离开学校后,很多工作中再接触到的语言就属于自学了。总的说来有三点感触。
一是不要为了学习一门语言而学习。至少你知道自己在不远的将来有很大可能性会用再去学。因为学了一门语言而不去实践,除了对语言特性能有些了解,其实不会有什么用。因为很多东西肯定会忘掉。这有的时候和一门说话的语言一样。大学的时候觉得好玩学了日语和德语,然而从来没有真正的应用场景,所以都忘的差不多了。都不好意思跟别人说我学过。不过以后需要用的时候可能学起来还是比从头开始快些吧。
二是不同语言别人口中的学习的难度和你自己学起来觉得的难度会很不一样。原因就在于你已经熟悉掌握的语言其实是你的底子。比如一个已经熟悉OO编程的人,再学另一门OO语言就会相对轻松;一个已经熟悉函数式编程的人,再学习另一门函数式语言也会比从没接触过的人容易的多。
但这仅限于相对轻松。每门语言都还是有很多区别于同类语言的特性。还有很多语言,是综合了多个类型语言的特性,再做了不同的权衡。即使是看似语法很相近的语言,可能实际使用起来却又有很大的区别。一个众而周知的例子就是C++和Java。二者都是典型的OO语言,然而使用起来很多思维方式却是有着极大的差异。因此,学习一门语言很忌讳肤浅的觉得“这个和我知道的X语言差不多”,然后想当然的在使用中套用一些X语言的思维。
三是因为工作时候学习语言通常都是边用边学。一方面,这比在学校时候能够学的更快,因为你有使用的场景,可以不断练习。而且周围很多高手可以讨论,还有别人的代码可以参考,更容易积累实战经验。而另一方面,直接上手没有系统学习很容易想当然,很容易以偏概全。这又必须在工作以外自己主动学习理论知识来弥补。
说几个我工作中学习语言的例子。
首先说Scala。需要用Scala的时候,是一个别组的项目有特别紧的Deadline,我因为一向比较“手快”且对业务逻辑比较熟,所以被借调过去帮忙。那时候我并没有学过Scala,但是因为时间关系,必须立马上手。好在面向对象语言和函数式设计语言我都有比较好的底子。所以在已有代码库的基础上写一些新的函数,而不需要我去写架构代码,总的来说还是比较轻松的。
【如何学习一门程序语言】相关文章:
如何学习一门编程语言10-17
如何掌握一门技能07-29
有一门“学问”,是很多家长都需要学习的09-04
宝宝如何学习爬行?10-11
宝宝如何学习走路08-19
如何督促孩子学习08-04
如何更好的学习说话08-01
如何提高学习效率06-08
如何引发学习欲望08-24