谈新技术学习方法-如何学习一门新技术新编程语言

学习一门编程语言或者编程技术的方式基本上是这样一个流程:html


1,对学习这门语言或者技术的必要性进行评估。好比你是工做须要,或者兴趣所至,甚至是为了把妹。这个必要性关系到你要学多深刻,须要学习多长时间。java


好比我想学Lua,是想学它如何在万把行代码里面实现了一个如此精巧的编程语言,想学习它的GC机制,学习它如何设计VM,如何用纯C语言设计项目等等。git


2,寻找相关资源。比较好的起始点是这门技术的官方网站以及维基百科。程序员


好比Lua语言的官方网站是http://www.lua.org,维基百科地址为http://en.wikipedia.org/wiki/Lua_%28programming_language%29github


通常在google.com里面敲入"lua wiki"之类就能直接搜索到相关维基条目。使用维基百科的好处是可以对编程语言有个归纳了解,基本上看了之后,你均可以跟别人扯上几句一点问题也没有。另外维基百科在编程语言相关条目中有一个颇有意思的特点就是:influenced by以及influenced列表。好比Lua条目中注明被Scheme、SNOBOL、Modula、CLU、C++所影响,影响了IO、GameMonkey、Squirrel、Falcon、Dao、MiniD这些语言,经过它能够了解到这门语言的祖先以及后代,至关的有意思。正则表达式


而在官方网站,会有最新鲜的新闻、下载、文档帮助、论坛等相关内容。算法



3 找到官网之后,就要花上一段时间在官方网站好好浏览探寻一番。好比Lua官方网站的about栏目介绍了Lua是什么,为何选择Lua,谁编写了Lua代码等等。在News栏目有关于Lua的最新新闻。Download栏目中有软件下载,学习一门语言,重要的是在练习中学习,大多数人都用Windows,就能够遵守下载栏目的推荐下载Lua for windows。
编程


4 下载了软件(Lua for windows),安装成功之后,就能够看看文档document了。在Lua的文档网页中有在线参考手册(reference manual),大多数编程语言也都会在下载安装包中自带一份手册文档(就我所知Ruby Python都是如此)。windows


如何系统的学习一门语言?经过手册不是什么好办法,手册内容相对教条枯燥,读起来不容易。并且在线学习注意力不容易集中,很容易点着点着就跑偏了。最好的办法仍是要买一本实体的参考书。网络


买实体书就要用到amazon或者douban了,你能够根据amazon以及douban上的打分来肯定这本书的好坏,另外在Lua的document页面也有几本书推荐,像是Lua这种略微偏门的语言,其实选书很简单,由于就那么两三本,我我的推荐Programming in lua,国内有翻译版本,另外也能够下载到5.0的中文版。



那么对于java、dotnet这类参考书乌央乌央的技术来讲,该如何选书?这时候我会参考如下几个因素:一个是语言创始人写的可选择,一个是奥莱里oreilly出版的能够买,另外能够参考豆瓣或者amazon的书单功能,看看其余人都推荐什么。最不济的办法能够看销量,销量高的书未必就好,可是选了也不至于错的离谱。


买到书之后,最好花上几天时间通读一下,对于不理解的部分先标记略过,力争先对语言技术的总体有个了解,对于一些基本操做、命令有一些印象。


5 通读之后就要细读了,通常来说,每一个编程语言都力争相对完整,因此必然有一些你未必感兴趣的内容或者用不到的内容,这些均可以放在一边须要时候再捡起来。细读的过程最好准备个小本子,另外建议在github上注册一个帐号,github有个gist.github.com页面能够保存代码片断,在作代码练习的时候颇有用。


细读的过程力争彻底理解,书上的示例代码也都尽可能本身敲进去运行一次,另外能够对示例代码作必定的扩展,好比在第五章的代码中加入第四章的代码,让它们组合起来看看如何。


6 用一两个月时间细读之后就是熟练提升阶段。当你细读了感兴趣的章节,最好在一段时间内尽可能用新语言完成本身的编程需求,好比写个网络爬虫,或者删除某个目录下的特定文件,或者作作文本处理,必定要常常用才不会忘记。这段使用过程可能须要两三个月的时间,力争达到常见的代码函数不怎么查手册就能够熟练写下来。另外能够有意的对本身已经完成的算法或者应用进行语言上的翻译,用新语言实现一下快速排序,实现一下正则表达式。编程其实就是个熟练过程,越练越顺手。


这个时候能够试着购买一些advanced级别的书籍,了解一些更深刻的内容,书籍的好坏依然是到amazon或者douban上搜索。


提升的过程当中能够订阅一些相关的博客内容,能够到blogsearch.google.com查找博客文章,或者到csdn、javaeye、cnblogs这样的技术相关博客站点搜索。看到好的文章,可使用delicious.com这个书签网站保存起来之后慢慢阅读。


7 在这段期间包括之后的使用过程,若是出现问题怎么办?能够遵守如下顺序查找帮助:


a)书籍或者手册,在线文档,在线帮助等等


b)在官网的wiki或者stackoverflow.com上搜索相关的关键字。


c)使用google搜索相关关键字。


d)到stackoverflow或者官方邮件列表、官方论坛中提问。


通常来讲最好订阅这门语言的邮件列表,好比Lua的邮件列表就是http://www.lua.org/lua-l.html 即便不提问,看看别人的问题也是颇有意思的。


我不建议你们加入什么QQ群学习,QQ或者msn的即时通信特性决定了它不是一个很好的学习方式,基本上只适合打屁聊天。


8 到了四五个月之后,按照前面步骤学下来的朋友应该已经算是中级水平了,不太可能问出什么“跪求、裸求”之类的弱智问题。这时候就能够往更深刻的层次发展,好比试着读读源代码,试着写写相关编程库编程插件,在官方论坛、maillist、stackoverflow里面多帮人解答解答问题,试着多写写本身对于这门语言的使用经验,分享一些相关问题等等,就此走向“破碎虚空”的高手之路。


好了,就这样吧!


来自:宝贝孙秀楠﹣大连程序员

原文连接:http://sunxiunan.com/?p=1597

相关文章
相关标签/搜索