大哉问04 - 为什么要学编程?

工欲善其事,必先鼓其志,然后利其器。 —— 00

很多次失败的学习经历告诉我,最终能不能学会一样东西,跟聪不聪明没太大关系,而是看这件事到底有多生死攸关,或者有多意义重大。

学编程,对大龄、非专业的我来说,更是如此。动机因人而异,不管黑猫白猫,能加满油箱的就是好动机。

我找出了 5 个比喻,来说服自己为什么要学编程:

  1. 数字化生存的工具
  2. 人机交互的语言
  3. 复杂系统的训练营
  4. 创作的可供性源头
  5. 心流的容器

1.数字化生存的工具

距离尼葛洛庞帝写出「Being Digital」已经过去 22 年了。我们真的已经生活在数字化的世界中。

世界很复杂。

人们通过「降维」,抽取并控制最基本的单元要素,把事物抽象成数理形式、逻辑,再进一步抽象成 0 和 1,从而获得了重构/再造世界的能力——这是强大的杠杆,使得效率暴涨、网络成型。

为什么能够做到?得益于我们抽象事物、提取共性、找到基本单元的能力。付出的是理解、灵活性和转化成本。

数字化生存的三个阶段

概念和形式的数字化。那些以虚拟概念、形式逻辑为核心的领域,比如金融,比如文字,比如音乐,早已经完成数字化。

实体的数字化。O2O、自动化生产、智能家居、物联网,它们不仅仅是网红概念和风口,也是数字化卷积横扫物理世界的汹涌进程。物理世界被慢慢驯服的同时,构建虚拟化世界的技术 VR/AR/MR 们也快速发展——毕竟人们渴求对世界的完全「控制」,即便这种控制只停留在视觉层面。

人的数字化。先是 ID 化,完成人与人的互联。碳基质的人类迟早(已经)意识到肉身的局限,就会开始去修改自己的出厂设置。基因技术,纳米计算,脑机接口……机器不会毁灭人类,因为人类会率先变成人机融合的可编程智能体。

人能够摆脱自然的桎梏,成为衣食无忧、没有天敌的物种,靠建造工具去改造环境,以适应自身的需求。要在越来越数字化的世界中生存,掌握改造周边环境的能力,或者说手握一本操纵现实和驱动生产的「指南」,确实很有必要。

何况,它还能让你找到一份工作。因为越来越多的工作内容,都转变成了建造和管理数字世界。

那么应该何时完成进化?

比你所在的行业/领域早一步完成。如果它正处在数字化进程的早期,那就赶紧开始吧。

总之

学编程,是为了提高数字世界的生存效率。

2.人机交互的语言

人机交互是我过去多年的工作内容,希望未来也是。

在人工智能的前夜,需要很多类似交互设计师、体验设计师这样的 AI 清道夫,帮助机器完成它们还比较笨拙的「沟通」工作。黑暗的前夜什么结束,我们不知道,可以肯定的是,只会越来越快。

当算法越来越智能,人与机器的交互大概会沿着两个方向发展:

  • 在机器更擅长的领域,推动自动化。很多原本需要人干预的、相对机械的事情,都会逐渐自行运转——比如数字化生产、自动驾驶等等。
  • 在人更擅长的领域,推动人机合作。比如综合智能、文艺创作、理解和共情他人、面对面服务这些领域,机器如何帮助人完成工作,人和机器之间的「伙伴式」互动,是我更感兴趣的人机交互领域。

「人机交互创作」,应该会成为一个有意思的领域,而且它会让编程语言改头换面——又或者是增加其他的方式,比如编程手势,编程舞蹈,编程表情?

总之

学编程,是为了让人和机器更好地沟通。

3.复杂系统的训练营

如何构造复杂的系统?运用编程的思想,并且在沙盒里实践。

再复杂的系统,都可以始于 「Hello world」。然后增加一条运算,增加一个循环,增加一个函数, 增加一个对象,增加一个 API,增加一个库,增加一个逻辑层,增加一个编译器,增加一个物理模组……处理好的部分就封装起来,眼不见心不烦,可以专注搭建下一个模块。如果随着现实需求的增加,发现造出来的「轮子」不好用,还可以拆了轮子重造。

罗马不是一天建成的,Minecraft 也不是。并非每个人都能承受物理世界推翻重建的高昂成本,但是每个人都能开 Sandbox,调通程序以后再 Git Push。

你看吸金无数的在线游戏,在虚拟世界的沙盒里,硬生生地再造了无数个传奇。

你看横空出世的比特币,在虚拟世界的沙盒里,硬生生地再造了一个金融系统。

学编程,是为了训练构造复杂系统的能力。

4.创作的可供性源头

音乐家以音符为符号,用乐器演奏。画家以画笔为工具,在实体材料上作画。

当我们把思想降维成文字,便拥有了生成新想法的可能;把建筑降维成骨架和砖块,我们拥有了建造形态万千的建筑的可能;把音乐降维为旋律、节奏、音色、和声,我们拥有了创造新作品的可能。

当然,这都只是「可能」,想要创造出鲜活而有深度的新事物,只有一个途径:在实践中改进,永不停息

我想强调的是,一旦把事物拆解到原子/比特层级,就可以完全重组——一生二,二生三,三生万物,这释放了多少可供性!

代码本身是语言,是驱动系统为你创作的语言。音符和乐器合一,纸和笔合一,建筑场所和构件合一——这是多么不可思议的创造环境,表达、构造、呈现的载体合一了!

总之

学编程,是为了能操控素材,创造属于自己的时间晶体。

5.心流的容器

再怎么数字化生存,再怎么提高效率,也不能被轻易地被物化,这是人要守住的界限。人之为人,还是应该多以自身的福祉为出发点。

幸福是什么?对我而言,幸福就是「忘我但趋于有序」的状态,或者说,就是在创作中的心流状态。

写作是低成本的心流获取方式,而且自带生产属性。同样是用语言表达,编程也容易产生心流,而且改造现实的能力更强。写文字和写代码,都是心流体验的容器。

但是在获得心流之前,需要大量的练习。

via Flow (psychology) - Wikiwand)

Csikszentmihalyi 这张心流的图示,大家可能都很熟悉了。只有当技能水平和任务难度都高的时候,心流才容易产生。编程就是一种需要专注、难度可控、反馈及时的活动。在心流中构建作品,还有什么事情比这个更值得投入吗

总之

学编程,是为了拥有进行创作的心流容器。

最后

在门口徘徊挣扎了 4、5 年,总算是磕磕碰碰上路了。

00 的编程学习笔记和项目都会记录在 ArtxCode 公众号上面,欢迎围观和一起学习。

先学为敬。

HackYourself 大哉问系列

kidult00 wechat
扫码关注 00 的公众号
如果文章帮您节省时间或者解答疑问,不妨打个赏 :)