一、学习方法
人们常说:“学语言并不是学语法。”
当然,这里的“语言”指的是形形色色的编程语言,而不是平时说的“语言”。但正如学英语不是背单词,学中文不是记汉字一样。编程语言归根结底也只是一种对算法的描述。同样的算法可以用不同的编程语言来实现。因此,弄懂代码背后的思想远比记住各种语法要重要得多。
对于 Python 浩如烟海的库函数或是 Windows 不计其数的 API ...... 妄想背下所有的函数更是不切实际。图灵奖获奖者 N.Wirth 曾说过:“算法 + 数据结构 = 程序”。在实际的程序设计过程中,需求分析、算法设计等过程往往是举足轻重的。至于代码的实现,反而是程序设计中较为容易的一步。
我们在学习一门编程语言时,重要的正是培养这种语言的“语感”,体会其独特的优势。在学习理论知识的同时更要注意实践。对于同一个程序,甚至可以用不同的语言分别实现一遍。在学习过程中多参考大佬的代码。这样,程序设计能力的提高就是水到渠成的事了。
二、学习经验
我最大的学习经验,莫过于逐渐意识到了代码风格和注释的重要性。
对于编译型语言,编译器在编译程序的时候会完全忽略注释,不对注释内容进行语法检查。虽然有无注释对程序没有任何影响,但适当的注释可以对程序功能起到提示和说明的作用,增加代码的可读性。
在我初学程序设计时,总是不写注释。当几个月后我再次打开以前的源代码时,已经很难回忆起这个程序当初是干什么用的了。为代码写适当的注释,不仅可以避免自己“健忘”;在与别进行交流时,还可以让别人快速理解你的代码。对于注释,应当解释“为什么使用这样的代码”,而不是简单地鹦鹉学舌,解释代码的作用。
至于代码风格,虽然对程序运行也没有影响。但稳定规范的代码风格能大大增加程序的可读性。像谷歌、阿里这样的大公司,都有严格的代码风格规定:小到变量命名规则、大到实现类的条件。不符合规范的代码根本无法通过代码评审,更别提进入代码库了。这样的规范并非空穴来风。对于一个团队来说,统一的代码风格利于所有人的交流。这样,每个人在拿到别人的代码时,就能很快看懂。降低了团队成员之间的交流成本。
三、学习教训
我在学习过程中最大的教训,就是懂得了“先思考,后动手”。
我在初学程序设计时,总是野心勃勃。一拿到题就直接动手,生怕比别人慢。但程序设计中最关键的一步是“需求分析”;正如没能准确理解题意时,无论题答的再漂亮,也都会因为“偏题”被判 0 分。
我时常看到人们这样的调侃:“算法工程师说产品经理不懂技术,产品经理说算法工程师不说人话。”这其实恰恰反应了需求分析与代码实现之间的矛盾与重要联系。我曾有这样的经历:在没认真分析题目便匆匆下手后,往往会经历多次返工,有时返工的规模甚至达到了创伤级别。最终虽然也能写出正确运行的程序,但消耗的额外精力实在太多。后来,我拿到题后不急着写,在草稿纸上写完流程图、设计好接口后再进行代码实现。果然,“磨刀不误砍柴工”,这用这样的方式开发程序,效率要高出不少。在完成程序后还可以不断迭代优化,自信心也会慢慢上涨。
参考文献
[1] 苏小红,陈玲玲,等. C 语言程序设计. 4 版. [M] 北京:高等教育出版社,2019.
[2] 张铮,孙宝山,周天立. Windows 程序设计 . 3 版. [M] 北京: 人民邮电出版社.