在看到 MOOC 上北理工的 Python 课程 1.1 程序设计基本方法 时,提到了这么一个问题:“为什么要学习计算机编程?”

image.png
这正是我当下,可以说是每一天都在做的一件事儿了,想着把此刻的一些感想给记录一下。在北理工的 Python 教程中,嵩天教授提到以下几点原因:

  1. 编程能够训练思维
  2. 编程能够增进认识
  3. 编程能够带来乐趣
  4. 编程能够提高效率
  5. 编程带来就业机会

训练思维

潜移默化
训练思维,这在我看来其实是一个潜移默化的事情,无非多撸点儿代码罢了。

二义性
对于编程思维,实在不好评价,它应该是个好东西才对,不过也很容易走歪。在编程领域,有个词儿叫“二义性”。我们通常在提到这个词时,表示的是一段程序,对于计算机而言,它的意图是明确的,唯一的。而我们日常沟通、交流中,往往不是这样。

木讷
如果你也是每天除了必要的日常活动(吃喝拉撒睡,还有追番)之外,都在和代码打交道,那可能确实会变得和我一样很木讷,变得很呆,很没有情趣,非黑即白,非 0 即 1……

弊端
编程思维对于我而言,如果说从弊端来谈的话,那么影响最大的应该是和好友之间的沟通中了。总想着明确地表明自己的意图,不想要被对方误解,可是人终归是和计算机不一样的,我们丢出去的和对方接收到的,很可能是不一样的。总是担心对方会误解,不过想起这么一句话“被误解是表达者的宿命”,可是又想到计算机中的“二义性”,此时就会很矛盾,总想着去解释,因此变得啰嗦、变得矛盾。

上面说的这些场景,往往发生在和好友之间的沟通中,但是和同事、陌生人、亦或者其它群体,貌似并没有任何影响,毕竟对于那些群体而言,并不需要过多地去表露啥感情,有啥说啥,把意图表明清楚即可。在这种情况下,编程思维貌似又蛮有用的。

矛盾
哈哈,蛮矛盾的,写来写去,说了跟啥也没说似得。不过这貌似确实是我当下的处境,也许我不应该将其归结为编程思维的锅,在学习编程的同时,多读读沟通类的书籍,在沟通中少一些评价,多学着去表达自己的情感,也许这样的问题也就自然而然地解决了。

增进认识

计算机的能力
增进认知,对于“认识”这个大词,我有个肤浅的理解,在我看来“认识”就是指:我们需要知道计算机具备什么能力,到底能够帮我们解决什么问题。

我们学习计算机编程,其实也就是在学习如何与计算机对话,不同的编程语言,无非就是说话的方式有些许不同,本质都是在和计算机沟通,调用计算机的能力,在知道它能够解决什么问题后,通过编程的方式让它去帮我们做一些事儿。

计算
计算机到底能够做什么事儿?
嗯?这还用问?计算机计算机,就是用来计算的机器啊?

宿主环境
其实叭,说计算机是用来计算的机器,一丢丢错也木有。这里提到的“认识”,更多是从接触的业务中认知的
与其说“认识”是指:计算机的能力;
不如说“认识”是指:我们正在使用的编程语言所依附的宿主环境给我们提供的能力;

谈谈 JS
就拿前端的 JS 来说叭,初学阶段,我们很可能是基于 Web 环境来学习它的,Web 浏览器是系统级别的应用程序,它可以调用系统级别的 API,几乎可以使用操作系统的所有能力。
可是 Web 环境下,我们所使用的 JS 能力是受限于 Web 浏览器的,浏览器给我们暴露电脑的哪些能力,我们就能用哪些能力,至于没有暴露的,那么就没法直接使用。
可是,当我们学习过 nodejs 之后,就会发现都是 JS 诶,在 nodejs 环境下能够做的事儿显然就更多了。

之所以说这么一点,其实就是有了这么一点儿感触,其实我们所学习的编程语言,它能够做的事情其实是很多的,但我们如果仅在一个环境下去使用它,那么它的能力往往都是受限的,相当于是阉割版。

如果可以,请不要死在一门语言上
随着不断地学习新语言,不断地在不同的场景下使用已掌握的计算机语言和计算机进行对话,我们会对语言有更深刻的认识。不要局限在一门语言上,一种环境下,虽然死磕确实能啃下一些常人所不知的内容,不过这在我的认知中,弊大于利,不如新开一扇门,新学一门语言,接触一个新的环境,了解更多的 feature 来得实在。如若实际工作中确实需要用到一些冷门的知识点,ChatGPT 走起便是。

带来乐趣

至于其中提及的第 3 点 —— 带来乐趣,其实也有所体会

乐趣焦虑
回想自己从大学时接触编程到现在,编程给我带来的乐趣确实算不上多。我想这应该和我的个人能力息息相关,自己会的东西实在太少,很多想做的事儿没法去做,虽然有了 idea,可是却无法去实践。
不过为此焦虑是大可不必的,结合自己当下的处境,慢慢学习便是。虽然自己入门编程的领域是前端,不过对后端、底层 C/C++、AI 领域…… 都很感兴趣,总觉得有学不完的东西,有时间、精力就滚去学习。

乐趣的来源成就感创作
来谈谈自己学习编程的乐趣来源吧,虽然现在乐趣来源的渠道并不多。
本文标题“为什么要学习计算机编程”中提及的每一点,其实都是学习编程的动力之一,但却谈不上乐趣。
如果要谈起乐趣的话,大多源自于“被认可感”,疑惑这说是“成就感”

  1. 当学习开源软件时,了解到一些好用的工具,然后分享给有需要的朋友时
  2. 当自己写的工具能够帮助到其它人解决一些特定问题时
  3. 当自己有能力去写工具优化日常的一些机械性行为时
  4. ……

总之就是通过编程,解决一些问题时,无论是自己用开始分享给大家一起用,都会感觉到一丝丝创作的乐趣。

提高效率

自动化
上述提及的这些点中,目前体会最深的是第 4 点
其实我们在日常使用 PC 完成一些工作时,有很多行为是无意义地重复且机械性的无脑活动,并且这些行为有很多都是可以通过简单的几行或者几十行代码帮我们自动化地去解决。

就业机会

入行需谨慎实话:大多程序员在 23 年貌似都不好混,人太多了
至于第 5 点,就业机会,这就不好说了,现在程序员大军的人数貌似不少了,近期在网上总是能够看到不少反馈现在码农就业环境恶劣的一些内容。
如果想要以此吃饭,还是得做好长期学习的心里准备的,很可能对大部分人而言,明明学了很久(比如 1 年)却还是找不到工作…… 总之呢,入行需谨慎啦!
不要给教育机构忽悠了,仅仅是因听人说薪资高而选择入行,但是自己却厌恶撸代码的话,应该蛮难的,无论是日常的工作还是接下来的长期发展。

建议
建议是,随便找台电脑(入门编程,3-4k 价位的就完全足够用了),网上随便找一些开源的教程(B 站就有不少免费的教程可以跟着学),跟着学一段时间,对编程有个初步认知之后,再做决定。