学习编程的五条捷径

这篇文章来自www.cprogramming.com,顺便推荐一下该网站,立志于学习C/C++的童鞋可以经常看看。

原文链接:

第一次翻译,基本直译,不好勿喷。以下是正文:

作者:Alex Allain

学习编程不是一个下午就可以搞定的事情,但也不是说非要为之奋斗终身。学习之际,你可以做很多事情来让这个过程变得轻而易举。你应该已经看过了《The 5 Most Common Problems New Programmers Face--And How You Can Solve Them》(注:该文有机会再翻译咯),现在,来看看如何学习最有效。

众多技巧中有一些共同点:

  • 欲速则不达,三思而后行

我在教授C语言的时候,总有少数学生是有一些基础的。往往这些学生会在开始时表现突出,但随着课程的进展却逐渐落后。这是为何呢?因为他们仗着知道一些课程的介绍而步履匆匆,自鸣得意,以为自己已经掌握了,其实却正好相反。他们了解一些较重要的知识,却没能打下坚实的基础。

(注:这正是我大学时犯下的毛病,当时在学习C语言课程之前,我接触了一点ACM的知识,当时以为自己掌握了C,听课时便对自己放松了要求,以至于没有打下坚实的基础。至今后悔不已。)

与此同时,也不是说你可以停下前进的步伐——过犹不及,也应避免太慢。切记不要眉毛胡子一把抓,失去主线。不断挑战自己的思维,有助于夯实基础。

(下面是这五条捷径)

一、示例代码

正如读书不可不识字,编程也不可不看代码。初学编程,你应该竭尽所能的去理解所有接触到的代码。我本人初学编程时,便会经常在看解释之前自行分析代码,指出它们的功能。这并不总是顺利,但却迫使我更加仔细的看示例代码,有助于我了解一些语法细节。

introductory programming tutorial上就有很多我所谓的示例代码,这个教程花了大量的时间讲述示例代码,以保证你可以准确理解代码的含义。

二、不动笔墨不读书

当你读以上教程(或者是书)的时候,很容易就会看完便说“知道了,知道了,很有道理…”。当然可能你真的学会了,也可能你根本没学会,你将很难判断。只有一种方法可以检验:用这些代码做点什么吧。

如果你仍没有开始动手,请从compiler like Code::Blocks开始吧。(注:这是我发现最好的C/C++编译器)

试着在编译器里敲一些代码,请不要复制粘贴,而是动手敲进去,这将会迫使你去思考代码的方方面面,并让你更加关注一些语法细节,如每行代码最后的分号。

然后编译、运行,验证一下输出结果是否和你想的一样。

最后,请修改它(注:我觉得这是一种基本的重构)。软件常常会在不同的平台上出现与机器相关的差异,你可以简单的体验一下,尝试一些新鲜玩意,看看会发生什么。这些改变会立即发生,它们并不会照成多么严重的破坏。学习一门新语言最快的方法,就是敲代码,运行,然后修改。

三、写自己的代码

当你理解了关于语言的一些东西,甚至这些东西在你头脑中仍未成形,开始动手尝试着编写一些代码,并运用它来解决相关问题吧。有时会很难下手,没关系,没有谁在一开始就想明白所有事情。

你可以在本站点找到一些programming challenges

你也可以将教程或书中的例子重新实现,试着不要去看教程或者代码。这看起来不那么简单,但如果你试着调整调整示例代码,则会有意想不到的效果。

如果你对写一些小程序不以为然,想去实现一个大的工程,如一款游戏。不妨先开始组建一些小的程序块,以供日后使用。无论之后是否用及,这都是同样宝贵的经历。

四、学会调试

我已经在《The 5 Most Common Problems New Programmers Face--And How You Can Solve Them》一文中强调了调试的重要性。但这值得重复强调,因为如果你越快的学会调试,你就离这门语言越近一步。

首先你应该学会的是使用一个叫做调试器(debugger)的工具,它可以帮助你一步步执行代码。并将在语句执行至代码内部时,显示变量的值。它能够很好的帮助你迅速理解代码的功能。

int main()
{
        int x;
        int y;
        if( x > 4 )  // <-- what is the value of x here?
        {
                y = 5;   // <-- did this line of code execute?
        }
}

关于调试器的最后一句话:第一次了解调试器时,它会耗费你更多的时间去解决问题。经历了十次左右的bug之后,你才会真正了解它的价值。相信我,在你的编程生涯中绝不会只经历十次bug的。

我经常看见学生不愿意去使用调试器。这些学生完全是自己找罪受,宁愿花大量时间去找很简单的bug。记住,越快的掌握调试器,它会给你越多的惊喜。

五、学会寻找更多的资源

如果你不理解某些东西,那仅仅是因为你没有点击进入,看到那些针对它的绝妙解释。

首先,去找备选的说明。互联网上到处都是关于编程的信息,不同的人都能找到自己能够理解的说明。例如你可能需要某一张图,但其他人可能不需要。也有很多书籍(books)提供了更细致的解释说明。

但是如果仍旧不能搞定,最简单的方法就是,把你不明白的地方列一张表,去询问其他人。不要说的太宽泛,“我不太懂,麻烦解释一下。”可能你得到的将会是一个链接,链接到一大段你依旧不懂的文字。你应该试图将你的理解表述出来,你的问题越接近你的当前的想法,高手们越容易准确回答。程序员常常因回答问题时表现出的暴躁而臭名远扬,但我认为这主要的原因,在于他们希望改善交流的效率,而这恰恰需要问答双方共同的努力。如果你问的很聪明,准确地通过问题表达出了自己的想法,那么通常会得到一个最佳的答案。

有很多你可以提问的途径,你可以选择给我发邮件(email me),或是提交到消息板块上(message board),亦或是问一些专家(ask an expert)。

在接下来的几天里,我会写更多关于如何有效地学习编程的相关文章。可以通过定义RSS feed,注意查收email notifications,或是在推特上关注@alexallain,来持续收听。

全文完。

 

后记:其实名曰捷径,实际上都是一些很基本的方法。有那么一句话:“捷径,是世界上最远的路。”其实无论做什么都不是投机取巧就可以一蹴而就的。踏踏实实,讲求实际,也许才是最有效的方案。

posted @ 2011-10-27 00:16  pezy  阅读(508)  评论(0编辑  收藏  举报