给自学编程的初学者的小建议

文/
@iGuo

首先插播一个广告~

今天收到了另外一个导师的邮件:

Hi Guo,

Will you be on campus during July 12-16?

WISE is organizing a summer camp. There will be 100+ undergraduate students who will attend our summer camp. You have been doing a lot of interesting data work.Could you come and give a presentation? You are also welcome to bring your teammates and do the presentation together.

Kent Zhao

另外一封回复说到:

A great project!

Thanks so much for your availability. Here is the information of our summer camp:
http://wise.xmu.edu.cn/xly/

It will be great if you can talk about your project and provide students some interesting findings.

还有一封邮件说:

It will be great if you can also introduce some basic 爬虫技术 to our students.

我欣然答应了老师的邀请。所以!所以,今年小学期,我即将给参加我厦经院和亚南院的保研夏令营( http://wise.xmu.edu.cn/xly/)的小伙伴们详细介绍一下我们的项目相关研究和相关技术~希望你们能喜欢~

本文会持续更新~

注:非商业转载注明作者即可,商业转载请联系作者授权并支付稿费。本人已授权“维权骑士”网站(http://rightknights.com)对我在知乎发布文章的版权侵权行为进行追究与维权。

————————萌萌哒的分割线————————

这篇文章总结自己在初学编程的一些经验。

Step 1 明确学习编程的目的

不同的人学习编程的目的是不同的,有的是为了进入CS相关的行业,有的是为了进入编程需求比较高的其他行业,有的只是为了学习一些编程思想。因此,作为一个初学者的你,首先就要明确你是哪一种人。不同的人对于编程语言、对于计算机理论、对于软件开发知识的需求是有非常大的差距的。比如,如果你像我们一样用编程来获取数据、储存数据、处理数据、分析数据,那么就应该把重点放在数据相关的编程知识上面,在不必要的时候就暂时不去扩展其他知识。

Step 2 选择一条路径

注意,这里强调“一条”这个数字。初学者很容易陷入学什么语言、学Python2还是3、用什么教材、看什么视频或者教程的问题,或者看了很多大牛的建议而不知道怎么选择。最简单的方法是,看哪个顺眼就看哪个的建议。(其实随机选也差不多……)为什么呢?对于初学者,最难的事情就是克服“编程很难”的恐惧心理,而至于学的多深入多全面并不是重点。与其纠结哪扇门最接近终点,不如直接先踹开一扇门,然后再去找更好的路。当然,也许你还会疑惑,没关系,先进入下面的环节。

Step 3 学习基本语法

这个大家都懂。但是强调一点,学习一个语言的数据结构和控制语句等知识的时候,首先不要纠结于处理某一个数据结构(比如字符串)的方法或者函数,而是要先去了解都有哪些数据结构和循环语句,为什么要抽象出来这样的数据结构和循环语句。

Step 4 学习编程思想

无论是五行、五十行、五百行、还是五千行、五万行的程序,程序设计思想都是贯穿任何程序的诞生的始终的。所以,程序设计思想是学习编程的核心。从组织一个函数(function),到组织一个类(class),到组织一个模块(module),到组织一个工程(project),自顶层向下设计、模块化编程、三种编程范式(面向对象、面向过程、函数式)、可维护、可拓展性等等组织代码的思想,都是相通的,这也是一个全面提高人的设计思维、解决问题的能力的过程。

Step 5 实战

编程是为了解决需求的,那么最好的学习其实还是learning by doing。有了一定的基础以后,就去找一个可能解决的问题,然后在解决问题的过程中寻找问题,解决问题,优化方法。

这句话说的很简单,但是在真正做的时候,非常需要耐心和机智,更需要坚持。这个过程是最艰难的一步。

那具体要怎么做呢?

用好搜索引擎。把报错信息放在不同的搜索引擎里面反复搜索、反复尝试。

举个例子,我一边写专栏一边跑程序(Python2.7.9)的时候遇到这么一个问题:

Traceback (most recent call last):
  File "E:\Programs\Eclipse\concurrency\multiprocessing.py", line 8, in <module>
    from multiprocessing.dummy import Pool
  File "E:\Programs\Eclipse\concurrency\multiprocessing.py", line 8, in <module>
    from multiprocessing.dummy import Pool
ImportError: No module named dummy

前面主要是告诉你错误在哪一行。最后一行非常重要,这告诉了你错误类型和错误原因。然后把这个复制到搜索引擎里面去找解决方案。有时候可能不止一个方法,不知道用哪个,一个一个试验就好。实在不行就把所有配置卸载了全部重来。(嗯我第一个月学Python的时候每隔几天重新下载一遍Python)

PS:这个错误是Eclipse下出现的错误,有部分库(系统模块或者第三方模块都有)导入的时候会错误,但是直接在Python解释器下导入是没问题的。截止专栏发表,我还没有解决。

PS的PS:发表之后的一个小时,我根据这个step里面的套路,找到并解决了问题。

Step 6 深入系统学习

在解决了一系列问题以后,你对于你需要解决的问题已经有了一个比较清晰的认识了,那么再回头去系统的深入学习、寻找更好的方案就变的自然而水到渠成了。

总结

看起来是一个会走很多弯路的过程。然而,对于所有的学习,特别是自学都是一样的:与其去纠结哪条路最直,不如走下去。因为,那样的直路本来就不存在。一条断断续续的“直路”远远比不上一条蜿蜒曲折但是却一直延续的“弯路”更有价值。自己走出来的路,才是最适合自己的路。

更重要的是,去克服一个自己本来觉得解决不了的困难,那种喜悦和增加的自信心,会伴随今后的学习,学习能力的积累也会让后面的学习越来越容易。这才是来自自学的真正财富吧。

相信我,可以的。我也是在几乎没有人指导的情况下一点一点学出来的。Github主页为证: https://github.com/Guo-Zhang

加油,每一个想学编程的小伙伴。

————————萌萌哒的分割线————————

更多项目介绍,请关注我们的项目专栏:China’s Prices Project – 知乎专栏

项目联系方式:

    原文作者:iGuo
    原文地址: https://zhuanlan.zhihu.com/p/21373956?refer=xmucpp
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞