编程语言里那些不可再拆的基本语法,照得见人心。——我遛狗时想到的一个词。
本系列第 1/6 篇:程序员眼中的人心。
我写了二十多年程序。前两天遛托比的时候,脑子里蹦出一个词:原语。越想越觉得,这个词不只是编程的事,它照得见人心。
先说什么是原语
原语,就是一门语言里最基本、不可再拆的那些语法。C 语言里:赋值是一个等号,判断是 if、else,多路分支是 case,退出是 exit,逻辑运算是 and、or。高级语言再花哨,类、继承、封装,拆到底都是这些原语的组合。
编程语言从英语里长出来,所以当程序员的第一道门槛,是知道 if else then exit 各自管什么。这是普通人和程序员之间目前还剩的一点差别,后面我会讲 AI 怎么把它抹平。
盒子、箱子、房子
面向对象编程听着玄,其实是最朴素的认知。最底层的类叫基类,比如"盒子":它底层的特征就是长宽高,顶多再加一个材质。
箱子呢,继承盒子的长宽高,加上拉杆。房子也是从盒子延伸出来的,它比箱子多了房间属性,去掉了拉杆。一层层往下拆,世界上的东西几乎都能放进这套"类"的体系。程序员管这叫面向对象,其实人类认识世界,本来就是这干的。
class 盒子 { 长宽高; 材质 }
class 箱子 extends 盒子 { +拉杆 }
class 房子 extends 盒子 { +房间 }
编程的真相:自动化因果
那编程到底在干嘛?我的答案是:把真实世界里那些有先后关系的因果,用原语组织起来,交给机器自动运转。自动输入,自动输出,自动维持系统内部的逻辑。
"自动化"这三个字,分量很重。很多混乱的事,一旦写成有先后顺序的流程,机器就能替你日夜不停地跑。
写代码之外,我还有个爱好:写字。写着写着越来越确认一个判断:写字和编程,本质上是一回事,《黑客与画家》早就说过。AI 时代,这道判断正在变成现实,会用自然语言描述因果的人,现在就能"编程"。
但别急。编程语言和自然语言之间,藏着一个巨大的差别。这个差别,照出了人心里的一个 bug。下一篇见。
本系列第 1 篇 · 下一篇:《代码只活在当下这一行》
评论0