# 【知识精讲】如何学习编程
## Part1
很多同学在学习编程的过程中,都会遇到各式各样的困难——这一方面是因为国内大部分学校的教材和教学方法都落后于时代,而另一方面,则是因为很多同学学习编程的方法,从根本上就是错的。
很多同学像是学其他的某些课程一样,上课听讲,课后带着课本和习题手册去图书馆或者自习室,一边看书一边在纸上做一些题——看似十分努力,但是这样的努力换来的却只是通过考试(而且一般情况下还是放了水的考试)的能力,真的要写程序的话,恐怕连最简单的 Hello World 都写不出来。
## Part2
大家必须要明白一点——**计算机科学是知识,而编程则是一种技能**。我们从小到大,在学校里的“学习”,都是学习知识——这个流程大家已经很熟悉了:课前看书预习,上课听讲,下课做作业,然后复习考试。
然而学习技能,并不是这么学的——举个简单的例子,有的同学可能学过游泳,那么学游泳的时候,需要正襟危坐地坐在教室里,课前预习上课听讲吗?显然不是,不管是游泳培训班,还是大学体育课的游泳选修课,上课地点都是在游泳池里而不是教室,学习的方法都是通过模仿来进行大量的实际练习;再比如弹琴,学钢琴一定要有钢琴,一定要大量的练习,并且练习的时间远远大于学习乐理知识的时间——有些理想远大的琴童,从小到大的练琴时间,甚至可以用“惨无人道”来形容。
## Part3
现在大家有点明白了吧?还是那句话,大家一定不要把编程看作知识,**计算机科学是知识,但是编程是技能**。既然是技能,就要用学技能的思路去学习。
学习技能的正确思路,应该是以动手练习为主,看书学习为辅——事实上最初学习的时候我们压根就不需要教材的。而练习的过程也一定要循序渐进,每次都只向前迈一步,小步快跑着前进。举个简单的例子——对于这门课程,我们先从最基本的 Hello World 入手,培养最初的编程习惯,然后再进一步地学习变量、输入输出、选择结构和循环结构等语法要素,接下来熟悉面向对象编程思想、数组与指针等高级特性,以及一些基本的数据结构与算法知识……
## Part4
在此基础上,你需要循序渐进地做大量的编程练习——**就算是一句一句地抄,也一定要亲自动手写代码**。当同学们在系统的引导下写完一个完整的程序的时候,不光会产生强烈的成就感和自信心,写代码的熟练程度也会有相当程度的提升。
不过,只有伴随课同样也是不够的——你需要做大量的练习。这门课程中包括了大量的编程作业,你必须要完成这些作业,拿到足以通过的分数才能完成这门课的学习。考虑到同学们完成这门课程时所拥有的编程基础,大家可以先做带有“简单题”标签的题目,等到学习了更多的数据结构与算法知识之后,再去做难度更高的题。
## Part5
除此之外,同学们还一定要注意——**虽然自学能力很重要,但是自学并不能解决一切问题。** 所以有条件的话,大家最好能在现实中找一个“老司机”带路——这样可以节省大量时间,少走很多弯路。当然,现实中大家很可能并不具有这样的条件——所以退而求其次,**一定要学会通过搜索引擎查找答案** ,并且最好能让自己具备接入 Google 的网络条件。
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》