学习编程有很多种方式,比如在线教程、网络课程或是高强度的编程训练营。教程是不错,不过它能教给你的只有基本知识。不管是线上还是线下的课程,都非常昂贵,还会限制你的时间安排。虽然你也可以通过多种渠道去向你的同事求助,但是你如果想要理解他们给出的答案,你还需要具有足够的知识量。
这就是为什么大多数想学编程—或只是重拾一门技术的人—最终还是会求助于书籍的原因。如果你肯付出努力,书本确实可以帮助你学到任何你需要的东西,并且将来还可以用作非常好的参考资源。
1.通读全书
不彻底地读完解释性的材料是一个常见的误区。跳过代码运行原理的解释而直接去看代码示例会将你领向失败。之所以你要买一本计算机书籍,就是为了获取代码示例,以及它附带的解释。
计算机书通常包含了你应该边读边标记的一些额外的信息,例如一些需要花大量时间去研究的参考资料。你可以使用这些参考资料帮助你去寻找不同的代码实现方式或不同的测试代码示例的输入方式。
当然了,单单一本书并不能教会你在当今复杂的编程环境下的所有东西。因此,许多计算机书籍还细心地引用了组织好的在线资源,里面也许包含了许多你所查找的内容的准确信息。
2.集中精力
确保你在读书时能保持注意力。当你发现你突然在想一次钓鱼之行或是电视上的球赛,就是你该放下书的时候。随性地阅读是不够的,你需要专心致志或有一个练习的目标。如果你需要回顾之前在你神游到钓鱼之行时所阅读的内容确保你真正理解了,也别太在意。
3.下载代码
编程书通常附带了可下载的源代码。下载源代码,载入编译器中编译它,然后看它实现了什么,这个过程非常重要。这些可以运行的代码对于我们理解编程技术至关重要。它们确保你可以看到一个没有任何问题(例如拼写错误等等)的可工作的示例。
在你开始理解代码的运行后,接下来你或许想要试着自己手写一下,以加强你对其原理的理解。拼写错误是新手程序员最主要的挫败感的来源之一,所以下载示例的源代码作为你的参考吧,这样你可以更快地找到自己的错误并纠正它们。除了手写代码,也要将其用键盘打出来。
4.使用debugger进行单步调试
取决于你想学的语言以及你使用Integrated Development Environment(IDE)的程度,你可能对于当你跑一个应用时确切发生了什么没有一个清晰的概念。很多现代编程语言的目标是任务自动化。当你了解程序是如何运行后,这一特性还是很好的,但它同样可能会成为你学习路上的一道坎。
在例程中单步调试帮助你理解细节。随着你一步一步向前运行,你可以观察变量的值,考察它们如何变化,以及确定它们为何以那种方式变化。使用debugger的功能去改变变量的值,你可以看到这些变化是怎样影响应用的。再看看应用内存,去了解它是怎么保存信息的,然后查看调用栈去准确地了解一个调用是怎么完成的。总之,要在你单步调试时,探索应用中的所有可能的方面。
这种方法让你可以探索其他的应用开发和设计之路。比如,在适当的环境下,你有时可以进入文件库中观察它们是如何做关于应用的工作的。在一些案例中,你可以探索字节码或是反汇编应用代码去看底层如何运作。
注意:由于有些程序是时间敏感的,用debugger做单步调试可能导致应用不正常运行。此外,你有可能需要在某些节点重启应用,因为环境将会崩溃,你将得不到你所要的结果。单步调试最适合用于短的代码段。
5.把玩并掌握代码
到了这一步,你可能会觉得你已经从这本书所给予的信息中提取出了全部。然而,你还是没有把玩示例代码并试着让它以别的方式运行。试验是学习的关键。将书本中的示例代码试验一下,是提升你技能的好方法。当你做了各种各样的延伸时,你应该开始理解代码的变化如何在整体上影响应用。这类知识无法通过其他方式学习——你需要通过试验去精准地理解一门语言所提供的特性。
最后,你将开始创造出与书中代码不太一样的应用。这时,你走到了一个新的阶段。在这个阶段中,你开始自信地创建自己的应用,并且真正地理解了它们是如何运作的。
七个重要阶段
学会编程意味着你对语言的理解程度足够让你去实现所有的需求,创造出有用的应用。举个例子来说,在录用你做开发工作之前,雇主们需要你去达到这样的技能水平。
获取这些技能的唯一途径就是去练习,练习,接着练习直到你将程序融会贯通。当你学习使用某种语言编程时,程序员们应该努力去达成下面七个成就。
学习语言的基础,如数据存储、关键字、决策判定和循环指令。
看如何用该语言去完成特定任务。
探究该语言如何通过它的库获得提升。
钻研该语言的细节并且理解它底层的运行机制。
利用该语言进行试验,看看关联的改变如何互相影响。
使用学到的技术去开始创建简单的应用。
通过创造越来越复杂的应用和研究其他该语言的资源去不断地提升技能。
这看起来很多,但有很多程序员可以证明在一本技术书的帮助下你确实可以达成这些所有的成就…如果你通过正确的方式阅读的话。