初学编程,到底有多难?这取决于我们对”初学者“的定义。一个正常资质,但是对计算机缺乏了解,甚至有计算机使用经验,只是没有接触过程序基本概念的人,当他第一次上手的时候,都会遇到巨大的困难。
这个困难有多大呢?多年以来,我在 Python 中文社区见过很多提问,包括但不限于:
通常,我们心目中的新手问题,起码应该是这样的:
虽然,我要承认即使是这些问题,通常在公共社区,也会收到很不友好的回答。这也难怪,如果一个技术社区充斥这种问题,会很难产出高水平的讨论。但是对于初学者,也的确需要一个环境帮助他解决这些问题。
为什么我们会有这样的认知差距呢?或许我们已经忘了最初开始学习计算机时,漫长而盲目的过程?或许你恰恰是哪个天才(这并不奇怪)?
很多事,从零到一的一步,非常之艰难,超过我们的想象。这或许是因为,它需要基于前提,在这些前提准备好之前,我们无法着手行动。而这些前提的准备,往往不是枯燥无趣,就是细碎繁琐。而且,这些事务积累到一定条件之前,无法开展下一步的行动,或者,至少无法有效的行动。就像建立起一个公理体系之前,无法做有效的数学演绎一样。
例如,在学习编程之前,我们应该知道:
写下这几条以后,我突然觉得当年学校讲计算机基础还是挺有意义的呀,但是那时候为啥我在睡觉呢?
当然我们那个时候的课程设计还是有些问题的,例如一些纯理论的东西跟操作基础混在一起,组织混乱,课程内容过时,等等,我相信读到这篇文章的很多朋友都有类似的经历,这是另外的问题了,不展开了。
这里感慨一下,这么多年来,我读到的编程书籍,只有蔡学镛老师的《编程ING》详细的解答了各种启动问题,所以即使书中使用了一门比较冷门的语言,我仍然推荐新人读一下这本书。即使以后再也不会用 REBOL 写程序,书中的知识可以帮读者顺利的度过这个启动阶段,以后再学习其它编程语言,都不会再被这些问题困扰。
在编程语言之外,其实一样存在类似的启动阶段。只是在我的生活和工作中,这是一个比较典型,而且会不断遇到的问题,所以才以此为例。在后面的日子里,也许我还会讨论其它领域中的启动问题。
在这篇文章里,我并没有真正的整理和解答那些编程学习中启动问题。首先,我认为前面我提到的《编程ING》中,对这些问题已经做了比较好的阐述,我推荐大家买来阅读一下(真不是收了蔡老师的钱做软广告)。其次,其实完全说清楚这些问题,还是要用掉比较多的篇章,也许后面我会针对各个问题,单独做一些讨论。
或是邮件反馈可也:
askdama[AT]googlegroups.com
订阅 substack 体验古早写作:
关注公众号, 持续获得相关各种嗯哼: