怎样才能学习一门新的编程语言?
首先,小编要告诉你的是,这不是一篇教你如何学习的文章,而是一篇小编在探索的道路上,产生的一些思路,今天小编把这些思考的过程分享出来,让大家一起探讨。如果对你有帮助的话,那小编就会非常的高兴。
手册的作用
“去看文档。”这是老程序员们最喜欢对新手程序员说的一句话,确实小编也会经常的去看文档。但是当你打开一门新的编程语言的手册的时候,你会发现,手册里除了教给你语法之外,几乎没有在教你任何的东西了,于是会有很多的小伙伴们陷入一种境地:
“背下来了么?” “背不下来,太难懂了。” “再看一遍,给我背下来。” 。。。 “背下来了么?” “大部分背下来了。” “给我写个程序,实现个XX功能。” “不会。。。” “。。。”
在一个高级开发者眼里,你已经会了语法,理所当然的你就应该会写程序了。但是实际的情况却并非如此。
其实这些语言的创造者,或者这些文档的作者,无疑都是各自领域里面的大神。他们在撰写一个编程语言手册的过程中,只是尽量负责地把这个语言的全貌准确地有组织地展现给你。然而这种全面的展现,对于一个没有任何引导的初学者来说并不是一件好事。简单来说就是,你会在一些次要的事情上浪费太多时间,而一些主要的概念又没有理解透彻。
关于看代码
当文档已经满足不了你的时候,老程序员们又会扔给你们第二招:“看代码”。看什么代码呢?当然是被业界奉为经典的,在GitHub上至少有一万颗星的知名的开源项目 代码啦。
当你怀着崇敬的心情,打开扔给你的网址,看着满屏幕的代码时,你会对自己问出那三个经典的哲学问题。这是什么东西?它是怎么做到的?为什么要这么写?搞不好某些人还会因为惊吓过度,从而失去了学习下去的信心。
那么让我们一起来看看这些代码里有什么鬼东西,会吓得新手信心不足。
大段的注释
说一件事你们不要笑,在我还是个萌新的时候,我曾经对这些穿插在代码中的神秘文字产生了深深的困惑,我还以为它们对代码有某种加成作用,以至于我还试验过把注释去掉会对代码执行产生什么影响。而现实中好的注释会让后面的维护者方便很多,但不好的甚至错误的注释会让人迷惑不已。
语法糖
语法糖是个好东西,它在很大方面简化了我们的编程过程,高手用起语法糖写起代码来简直不要太爽,所以越强大的项目这个东西越多。但是对于初学者来说,语法糖隐藏了一些细节,而且让语法看起来很怪异。有些代码如果你用标准语法来写是很好懂的,但如果用语法糖来写的话很难让人一下子明白。
初学者为了弄懂这些语法往往要花大量时间,但其实这些时间在这个阶段是没必要的浪费。你看不懂它觉得它是一个很重要的东西,其实它只是一个做工精巧的小玩意儿,离开了它这些代码照样能工作。而随着你的经验丰富,也可以随时随地用起来,用的方法可能也不尽相同。
代码里的重点
对于一个开源项目来说,往往 50% 的代码可能都是在适配各种不同的运行环境,将系统的 API 抽象成项目里通用的接口,这部分代码除非你自己要做类似的项目,要不然的话对初学者来说参考意义不大。更何况,为了适配某些系统奇葩的运行环境,开发者往往会大开脑洞,创造出一些非常奇怪的代码。这些旁门左道充满了玄学和不确定性,初学者看多了可能会发生如武侠小说里练功出差错的结果:走火入魔。
剩下的代码里 20% 是项目内部的接口抽象和定义,最后 30% 才是真正值得看的东西,它们往往散落在各个地方,但又为了一个设计核心服务。让初学者识别出这些代码来,未免太强人所难。
野文档
这个就是字面的意思,小编把一些非官方的开发的文档都称为也文档。初学者会在搜索引擎里得到大量的相关文档,他们很多都是学习心得,很多人在写这篇文章时水平可能比你也高不了多少。这就造成了这些文档的水平参差不齐,所面向的重点也不同,也许你花了大把时间弄懂的是一个错误的或者过时的知识。而大部分号称教你入门的文章,可能也就是告诉了你如何搭建一个运行环境,这门语言的精髓和重点作者自己估计也没弄明白。
而如果你碰到一篇被奉为经典的好的入门文章,那你真的要好好感谢作者。因为这意味着作者付出了大量的深入思考,深入浅出这四个字说起来简单,做起来可是需要相当的功底的。
相对较好的做法
在这么多编程语言的学习过程中,小编也总结了一些相对比较好的学习方法。小编认为看代码是非常有必要的,因为光死记语法是无法掌握好这门语言的。但是去看一些大型项目代码的缺点小编在上面也说了,到底该如何是好呢?
小编建议大家可以去看官方给出的,专门供初学者学习的 Step-By-Step 代码,这种代码一般在官方的文档页就可以找到链接入口,它有如下好处:
- 由浅入深,富有层次。这些代码往往是跟随者文档的深入,慢慢把语法细节展开的。不会一下给你展现太多,而让你无法 GET 到重点。每段代码都会有一个重点要表现的特性,这样看起来会一目了然。
- 有质量保证。这些代码的撰写一般是官方人员负责,这可以在很大程度上保证准确性。
- 更新及时。我们知道很多语言的细节是会随着版本的升级有所改变的,而很多网上的第三方文档往往缺乏维护,但官方文档一般都会同步更新。
小编建议大家一边看手册一边看代码,这样印象会更深刻。眼睛看了之后,就要尽快找一些好的例子来练手,不需要一上来就搞比较复杂的大型项目,也是由浅入深。这种练手项目去哪里找呢,很多语言的 tutorial 板块就是干这个的,做的比较完善的甚至还提供在线的教学体验环境,大家应该好好利用。