初来美国的人常会惊讶于一个习惯:美国人爱用“你是做什么的”开启对话。对这个问题,我向来给不出利落的回答。不过最近总算找到了解法——再被问起时,直接盯着对方眼睛说:“我正在设计一种新的Lisp方言。”
我从不觉得自己在做编程语言研究。就像设计一栋楼、一把椅子或者一套字体,我只是想造出一种好用、能让人舒服地写程序的语言。这个出发点,让很多事变得简单了。
![]()
在我看来,设计与研究的分野,其实就是“好”与“新”的区别。设计不必追求新,但必须好;研究不必追求好,但必须新。当然,走到高处这两条路会交汇——最好的设计用新想法超越前作,最好的研究解决的也是既新颖又真正值得解决的问题。所以我们最终想去的是同一个地方,只是从不同方向走进门。
今天想聊的,就是从设计这一侧看向目标时,会得到什么不一样的视角。当你把编程语言当作设计问题而非研究课题来对待,最大的不同是:你会更加关注用户。
设计的起点永远是先问:这东西为谁做?他们到底需要什么?一位好的建筑师,绝不可能自顾自做完方案再强塞给住户,而是先花力气研究未来的居住者,弄清楚他们真正缺什么。
注意,我说的是“需要什么”,不是“想要什么”。这不等于设计师就该像个跑堂伙计,客户点什么就给什么。无论哪个创意领域,顶级的作品从来不是照单炒菜的人做出来的。
“用户总是对的”这句话,只在衡量设计好坏的标准上成立:如果一本小说谁看了都犯困,一把椅子坐了哪儿都疼,那这设计没有辩解的余地。即便你说出再多前沿的理论原则,东西不好用,就是做得差。
可是另一方面,做出对用户好用的东西,也不等于完全照着用户的要求来。用户并不知道所有可能的选择,对自己真正需要的,也常常判断不准。
解决这个悖论的办法,在我看来很简单:你得为用户设计,但你必须设计出用户真正需要的东西,而不是仅仅交付他嘴上说的“想要”。
把这点用到编程语言上也是一样的。编程语言的设计者如果不研究程序员究竟需要什么,只按着他们随手列的需求清单做,结果常常是给出一个看似功能齐全、实际没人爱用的东西。反过来,真正去理解程序员的思维习惯、表达困境和长期被忽视的表达需求,才是让一门语言变得“好”的关键。
说到底,无论是盖房子还是写语言,出色的设计都不是猜谜,也不是当传声筒。它是观察、推导,是对用户处境的反复揣摩。研究可以只答“什么是新的”,设计却必须回答“什么是值得做的”。我觉得,后者才是更难的题,也更有意思。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.