作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 。
学编程,到底是在学什么?
一是语法。
二是思想。
语法这个好理解,每一门语言都有自己的一套语法。
很多语言的语法其实并不是很难。
比如python的语法就是很简单的。
但是很多人还是会觉得学编程很难。
那么难在哪里,难的是思想。
什么是思想?
什么是思想?
思想是一个无比广博的概念。
无所不包,无边无涯,无法用言语去描述它完整的样子。
但是,在具体的场景中,在具体的问题中,
针对这一场景或问题的思想,是可以被我们详细感知到,观察到的。
即只有结合具体的问题,才能具体的去描述出来。
1 学习精神
比如把思想狭义的理解为:学习编程需要的精神
那么此时我认为编程的思想就是要不断地摸索,尝试,观察与思考。
事实上,我不仅用这一思想去学习编程,我也用这一思想去规划我的人生。
2 解决问题的逻辑
如果把思想狭义的理解为:解决问题的逻辑
那么此时思想可以近似理解为广义的算法。
为什么我这里描述其为广义的算法,
因为理论上讲,任何一串能在有限的时间及空间内运行完的代码,
都可以认为表达了一种算法。
而很多时候,一些编程问题,并没有用到什么经典的算法思想,
只是根据问题的业务需要组织的代码。
当业务简单时,代码很简洁,业务繁琐时,代码很繁琐。
编写这样的代码往往并不是很难,只是需要跟着业务去一步一步地编写代码。
从大众的习惯上来讲,把这里面的逻辑称为业务逻辑可能更合适。
而狭义的算法逻辑则是以CLRS(算法导论)为代表的经典算法及其衍生。
比如很多学生刷算法题往往就是刷的后者。
很多开发的工作,处理的往往则是前者,比如根据各种需求去实现数据库的增删查改。
所以广义的算法可以分为:
- 业务逻辑
- (狭义的)算法逻辑
根据这个分法,这里可以简单的说一个题外话:
对于编程新手,掌握一个语言的基础语法后,
可能会面临两个选择:
- 做开发项目,比如实现一个小游戏,编写一个爬虫,开发一个网站。
- 刷算法题,比如去leetcode刷题。
我个人当时的选择是1,同时我个人也更倾向于推荐新人先选1。
当然这只是一家之言,每个人的情况不同,照搬未必合适。
比如要是准备校招的学生,可能选择2更好。
3 组织代码的方法
如果把思想狭义的理解为:组织代码的思维
个人把此时的思想描述为编程思维:
应该怎么去组织我们的代码,
或者说,在什么时候应该用什么语法。
这往往需要我们能够去理解,语法本身所承载的思想。
这里简单尝试下,不结合具体的代码去思考。
未来也会专门出一篇文章,尝试结合具体的代码去分析(以具体的代码为例子,去展示我个人对编程思维的理解)。
-
循环
比如当我们需要重复做某件事时,那么往往需要使用循环。
两种循环分别对应两种重复方式:
1 - 重复固定次数: for
2 - 按条件重复: while, 满足某种条件就一直重复,不满足则退出
记录零散无关联的信息(数据),我们可以用单个变量去分别记录。
而若要记录有关联的多个信息,我们则往往需要容器。
-
容器
什么是容器呢,
简单的理解,能存放多个变量的。
以python为例,容器有 - 元组 tuple,
- 列表 list,
- 字典 dict
不同的数据关系,则要选择不同的容器。
比如这些数据都是同一类数据,比如一堆人的名字,那么此时适合选择列表作为容器。
比如这些数据是两三个一组固定的,那么往往选择元组作为一个组的容器。
比如这些数据存在一一对应关系,那么此时适合选择字典作为容器。
-
函数
如果有一连串代码,在多个地方都要用到。
那么最好把这串代码放到一个函数里面。
在需要用到的地方去调用。
这样可以降低代码重复,且方便统一修改。
不仅如此,函数还可以用于去组织代码,将代码按功能分类,使代码有结构层次感,也方便理解和思考。