总而言之,lisp 是计算机最早的编程语言,历经半个多世纪,依然枝深叶茂,长盛不衰。所凭借的正是这些化繁为简少即是多的抽象机制,数据即过程,过程即数据;表达式即语句;语句即表达式。 即使具有再好的技术的或艺术的抽象思维能力,程序员和艺术家都还是不可能漫无目的的凭空创造出好的作品。假设一个程序员的目标就是要创造最好的程序,假设一个艺术家的目标就是要创造最好的有意味的形式,最终都会一事无成。这就好像一个探险家要寻找宝藏,像任何人一样,他当然知道,在地球的某个角落一定埋有宝藏,但是没有任何线索和地图指向藏宝之地,结果只能是满世界游荡,一无所获。所以,艺术家以特定的主题作为审美情感的皈依,程序员以问题作为创造引擎的原始驱动力。 我想,每个真正的程序员的脑子里面都有一大堆已解决的和要解决的问题,否则,作为程序员的价值岂不就让人怀疑了。程序员在工作的时候,如果不是在解决问题,就是在制造问题,测试工程师就是帮助发现程序员不小心制造的问题。对于一个困难的问题,通往答案的每一步都可能存在多条路,即多个选项,有的路是显而易见的,有的路是隐晦不明的,整个问题的解空间构成了一幅像迷宫一样复杂的多边有向图。寻找问题的答案就像在迷宫中探险一样,行路难! 聪明的程序员喜欢猎奇和发现,在迷雾重重中寻寻觅觅,从不吝惜自己的脑力和体力。解决问题的同时,享受着思考的快乐。与之相反,拙笨的程序员喜欢生活在熟悉的和舒适的安乐窝里,最好每一步都事先由别人设定,最害怕的就是面对各种不确定,并为之承担责任和风险。这样的程序员只能做一些机械化的工作,不用动脑筋,安全舒适省心。但是,如果有一天,程序员的工作有可能被 AI 替代,他们就会首当其冲地被淘汰。所以,激励程序员的最好的方式,就是不断地给 TA 有价值的问题。 写在最后 现在,可以回答本文开头提出的问题了。代码对于机器而言,当然谈不到美,因为机器是机械的,没有情感的。但多数时候,代码是写给人看的,这才可能存在美不美的问题。艺术家创造的美是有意味的形式,包括线条和颜色,以及他们的组合。 其实,如果把代码看做一幅画,代码的结构或描述模块和层次的关系就是它的线条或轮廓,代码的模块或层次就是它的颜色。艺术家通过纯粹的形式,从美学的角度去探索形而上的终极真理和终极现实。同样地,程序员借助于抽象,去芜存真,去繁就简,找到问题的最直接有效的答案。 代码的美在于以至简克至繁,水银泻地般从程序员的思维中自然流出,清晰优雅的表达了问题的本质和答案。阅读代码的人象看地图一样,即能从大处概览代码的全貌,按图索骥,也能找到每个层次的每个模块的细节。那么,这样的代码比之那些虽然实现了同样的功能,却混乱的象一堆麦秸的代码,谁能说它不是美的呢? 艺术家的审美情感可以提升程序员的品味,高贵的品味不能容忍粗鄙不堪,观之可厌的代码。我们不一定总能写出最美的代码,但只要不放弃对美的追求,虽不能至,然心向往之,则近道矣。 (责任编辑:本港台直播) |