05-学编程,到底学的是什么?

曾经有个初中毕业就参加工作的学生问我,之前断断续续的了解过编程(现在看那时候只是算是知道有编程这个东西),觉得以后可能也要朝这方面发展,不如早点起步,然后参加了一个社会上的培训。他数学和英语很一般,开心的是这几年一直从事前端行业,迷茫的是所有与javascript有关的工作统一用插件,工作相当熟练却感觉自己做的工作没什么意义。尝试写原生js又写不出来,去接触到算法和其他一类东西以后就感觉更迷糊,不清楚编程到底学的是什么。用他的话说,老师我感觉我连码农都算不上,顶多是一个不合格的码畜。

很多跨行业或者没有经历过系统学习的开发人员都会有类似的感受,他们一直迷茫一个问题:

学编程,到底学的是什么?

也许有人说学编程学的是一种思维。好吧,我觉得这样虚头巴脑的解答,除了回答疑问自身炫耀以外,并不能给迷茫着一个清晰的认识,一个安心的答案。我们就深入的剖析,解决下这个问题。

为什么会有这样的疑问?

我有两个原因,

1.计算机开发技术发展是在太迅猛,新技术让用户应接不暇,不要说新手,甚至一些熟手也存在着类似的技术栈选择问题,也存在着自己迷茫该学什么的问题。开发行业不是可以选择的路太少了,而是可以选择的路太多了,以至于不知道如何选择,如何学。套一句流行语,没有方向,哪个方向都是逆风。

2.很多人学习编程的方向错了。

很多人认为学习编程就是学习一种编程语言,c语言、java、Python等,或者学习如何用其中语言实现都一个具体的功能。

这就是一个很大的误区,也是容易造成人们迷茫的地方,如果沿着这个方向,必然是死胡同。

这里我类比一下:

我们学习汉语学的是什么?在退一步,我们学习语言的目的是干什么?是学习早上好,晚安,你吃了吗?这语法吗?是学习主谓宾语法吗?

学习一门语言其实学习的是如何将你的思维外化为语言,达成表达观点,沟通交流的目的。学习的是这个。

表达谢意,我们可以说谢谢,也可以说thank you,甚至还可以鞠躬点头。

语言是你的思维通过声音、文字等形式形成的外部呈现。你让一个三岁的小孩,学三年语法,他也没法写出充满哲理的诗。因为他的思维层次达不到。

同理类比,

编程是你的思维通过计算机能懂的语言形成的外部呈现。而所谓的各种编程语言,也只不过是相当于各国语言而已,你关心的某个技术实现也不过是类似于 thank you的语法而已。你没办法让你让一个三岁的小孩,学三年语法写出充满哲理的诗,那你为什么要求才接触两三年编程的自己实现复杂的程序逻辑呢?

当然我们还是有些优势的,我们不是三岁小孩的思维,而是发展了几十年的思维,但是你确实按照计算机的处理事情方式思考才开始三年而已,所以你要做的是强化自己的思维,然后才是学习各种语言。

听着有点虚,我们举个具体的例子。

那对于一个想要学习编程的人,尤其是一个初学者,怎么样在这浩如烟海的计算机知识中选择需要学习的内容学习?又怎么样建立起自我学习的能力,在下一次技术革新的时候,能够有自己的判断力知道自己要怎么学习,或者自己不要学什么呢?

以上这些问题就是逻辑思维的训练。

还有一个很经典的例子,训练的是我们拆解问题的思维:

把大象放进冰箱需要三步:

1、把冰箱门打开

2、把大象放进去

3、把冰箱门关上

这个看似笑话,却确实是程序思维。

1.把冰箱门打开

1.1先有个冰箱

1.2有一个门

1.3有个按钮,一按开门

1.4……

2.把大象放进去

2.1先有个大象

1.2把大象切块

1.3首先得有一个刀

1.4 按照上面规则切块

这就是面向过程变成的思维,面向对象编程思维就更简单了。

1.有一个冰箱,有两个功能是开门关门

2.有一只大象,它要有各个大象器官才叫大象不然就叫猪了,还能喊别把我塞冰箱里

3.有一个切块机,他有个功能是把扔进去的东西全部给切成块

这就是面向对象思维。当你拥有面向过程编程和面向对象编程思维以后,你就有两种把大象装进冰箱这件事拆解问题的能力。有了这两种能力,你就可以用对应的语言去实现。

说了这么多,那么关键的问题核心找到了,问题就变为了,我如何让自己拥有编程思维?

ok,我们具体说下怎么做。

首先,逻辑思维能力需要的是训练,而且是大量的重复训练。思维这个东西和肌肉一样是可以训练的。这个道理很简单,下棋你反复的下肯定会越下越好。这里有两个具体方法,一是看别人解决问题的思路,不断的照猫画虎。二是,有一定的必要知识积淀以后,自己不断的尝试解决问题,实现业务。

其次,带着计算机思维学习经典语言。不要把计算机当成冰冷的机器。换一个角度,把计算机当成一个刻板的只会文言文但是很靠谱的老头。只要按照它的想法做事儿,让它明白你想让它干啥,那么它一定能把事儿干的妥妥当当的。不管是c语言,还是javascript,它终归还是一种语言,既然是语言,就是用来交流的,只不过是跟计算机交流的。努力的提高交流水平才是我们该关心的,而不是研究怎么说话的语法。

再次,关注行业大牛的微博、博客等。很多人说研读经典的书,这个我认为经典的书每一个领域只看一本就够了,更多的精力应该去关注业界大牛关注的一些东西,保持和大牛思维同频。

你要想成为一个大牛,你至少要考虑如何跟大牛一样思考,说个极端的例子,如果你是比尔盖茨的私人秘书,耳濡墨染,相信也不会是一个很优秀的人。当然了,我的意思不是让你去关注那些花边新闻,或者大牛发一个微博,然后你去不断的粉他。那没什么用,而是审视和观察行业的动向,技术的更新等。

最后,不断的练习。

不管是思维的提升,还是语言的熟悉,还是功能逻辑的实现,都需要大量的练习,很多学习者容易陷入的误区就是一听就懂,一写就蒙。注意,你不是判卷老师,你是答题者。你要做的不是去评判和看着挺爽。而是实际的去coding,不断的解决出现的bug。这就和锻炼身体一样,你看着训练计划多科学,看人家示范的多规范,对你的身体改变没有一点用处。

通过本文相信大家已经了解到了前端人员问出到底学什么这类问题的症结所在,我们也清楚了学习编程确实学习的就是程序思维通过程序语言外化这件事,最后我们说了具体怎么做。相信通过本文,大家能够清晰的解决了了学编程到底学什么以及怎么做的问题。

发表评论

电子邮件地址不会被公开。 必填项已用*标注