魏忠
今天,先来说一位诗人的故事。1815年,著名诗人拜伦与妻子安娜·密尔班克生下了女儿埃达并离婚。如今所有介绍诗人拜伦这段婚姻的文章都说“这是一个诗人一生最大的错误,安娜是一个心胸狭隘、理智、完全不能理解拜伦的漂亮贵族子弟”,也正因为这次离婚,拜伦遭到当时贵族们疯狂的诋毁。当时,拜伦需要钱和上流社会,因此与安娜结婚。安娜理性,还是个数学家。离婚后,她独自抚养女儿埃达长大,埃达后来还成为一位著名的伯爵夫人。埃达的数学也很了得,她继承了妈妈的漂亮与理性,以及爸爸的文学素养与狂热。20岁的埃达与父亲一样进入了剑桥大学学习,偷偷喜欢上了自己的数学老师巴贝奇,且理性地把喜欢埋在心里。
巴贝奇是什么人呢?剑桥大学最著名的卢卡斯数学教授席位只有牛顿和少数最著名的教授能够得到,而巴贝奇24岁就得到了。可惜的是,巴贝奇后来没有在数学方面继续发展。当年工业革命如火如荼,大量计算应运而生,法国人发明了数学计算量表,而巴贝奇和同事打开第一页错误,打开第二页又是错误,最终无法忍受,决定自己造一台机器来自动计算。于是,他在英国政府的资助下开始制造计算差分机。但大家请注意,今天所有的计算机领域的人都不认为这是世界上第一台计算机,也许是因为巴贝斯根本没有成功过。
10年以后,1842年,巴贝奇的世界上第一台差分分析仪机械设备进入到了关键时候,但是资金出现了问题。这时埃达出现了,埃达不仅资助巴贝奇,还亲自将他的理论算法(如《论用符号表示机器动作的方法》)编写注释,并且编写成机器能够理解和转换成指代的各种程序:三角函数、微积分等。几年下来,巴贝奇的成绩显著,但是埃达的私房钱已经花完了。埃达就开始偷偷变卖自己的首饰盒、丈夫的古董,心疼她的妈妈就偷偷地再买回来。刚刚卖完首饰的埃达又开始投入到程序的编制过程中,程序员是劳累的,不久她积劳成疾,香消玉殒。此后,巴贝奇在差分机的研究上再也没有任何进展。
虽然世界上第一台计算机受限于硬件技术没有研制成功,但世界上第一个软件工程师诞生了,她就是埃达。1953年,埃达的手稿问世,举世震惊。1981年,人们发现這个程序几乎不能修改:它像拜伦一样简练优美,像拜伦夫人一样理智而充满逻辑。人们为埃达命名了一种语言——ADA。
代码来源于文学,是否会回归于文学呢?
回过头来,我们再看巴贝奇。巴贝奇在埃达去世后继续研究了20年,几乎没有进展。但是,巴贝奇对机器的研究已深入到工厂和工业效率中,既然机械的运行能够代替数学和用代码来表现,那么工业的效率和工人的效率也应该能够用数学来计算和表示,进而提高效率。巴贝奇提出管理的科学化以及数学计算的那一年,著名科学管理学派创始人泰罗刚刚出生。没有了埃达的帮助,巴贝奇的理论在管理上也没有成功实现代码化,又与科学管理擦肩而过。
事实再一次证明,文学不好、不会编程序的科学家也不能成为好的经济学家。
时间到了清乾隆年间,中国的文学发展已经相当成熟,早期的歌、赋、散文,到唐诗、宋词、元曲,再到明清之际的小说,到曹雪芹所在的时代已经成熟。流传百年的《金瓶梅》虽然不知道作者是谁,但写人物从简单的脸谱化到丰富的网络化已经成型。有人说曹雪芹的《红楼梦》完全是一部洁净版的《金瓶梅》,一点也不为过。曹雪芹将《金瓶梅》中的潘金莲拆分为更加细分的一个人的两面:林黛玉和薛宝钗,又将林黛玉拆分为上下两层的林黛玉、晴雯,接着又将晴雯拆为青年的晴雯和老年的赵姨娘,其编写程序的套路完全是今天程序员参考开源软件并逐渐开发自己代码的过程。更为重要的是,《红楼梦》中曹雪芹引用自己过去文章的做法(如饱受猜测的“秦可卿与天香楼”可能就是原来另一部小说改写的部分),以及引用诗歌、散文、戏曲、美学、食物、中药的部分,几乎完全和今天的Python程序ETL模式完全一样。
软件和代码也是,直到Python的出现,直到“王者荣耀”的闪亮登场。
2017年9月,高盛发布了对数千名青年人的调查,Python因72%的年轻人的喜欢而成为最热门的计算机语言,人们惊呼:“计算机程序,即将超越汉语成为世界上使用最多的一门语言。”这个预测一点都不过分,全世界60亿人,只要有三分之一的人会编程,那么不管是Python还是其他计算机热门语言,它一定会超过汉语成为世界第一语言,这一天其实并不会很远。
1991年12月25日的圣诞节,百无聊赖的荷兰工程师嫌ABC软件不够开放,便开始开发一种脚本语言,使其将不同程序的结果连接在一起,于是Python被开发出来。Python作为一种“胶水”语言,特别擅长将不同库的程序连接起来,因此,它具有所有程序种类最齐全的库,并且全世界志愿者还在不断地形成新的库。在数据仓库中有一个技术叫ETL,是英文Extract-Transform-Load的缩写,是用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词常用在数据仓库,Python作为胶水语言的优越性使其成为数据科学家和人工智能专家最常用的工具,他们利用Python调用各种各样的程序和运行结果,这比起曹雪芹调用《金瓶梅》和自己的其他文章更加方便。
代码是不是文学,有很大的争议。高德纳是结构化编程的创始人,后来他提出“文学编程”概念:不同于传统的由计算机强加的编写程序的方式和顺序,让程序员用他们自己思维内在的逻辑和流程所要求的顺序开发程序、自由地表达逻辑,用人类日常使用的语言写出来,就好像一篇文章一样,文章里包括用来隐藏抽象的宏和传统的源代码。文学编程工具用来从文学源文件中获得两种表达方式,一种用于计算机进一步的编译和执行,称作“绕出”(tangled);一种用于格式化文档,称作从文学源代码中“织出”(woven)。虽然第一代文学编程工具特定于计算机语言,但后来的工具可以不依赖具体语言,并且存在于比编程语言更高的层次中。
如果编程成为一种文学,那么软件程序员应该多读别人的代码才对,就像曹雪芹读《金瓶梅》和唐诗宋词一样。但是,事实并非如此。在一项调查中显示,程序员以不读他人代码为主流,甚至最好的程序员也不读别人的代码,这和我们印象中的好的作家要读大量经典文学作品形成巨大的反差。问题出在哪里呢?endprint
问题首先出在目前的代码距离自然语言还有很大差距,更重要的是,由于越来越快的软件发展速度和开源软件热潮,编写代码这样的基本功处于数理逻辑和展现之间,已经被越来越方便的胶水语言代替,并没有太多的技巧,而最具有技巧的数理逻辑,已经分离成为和编码并没有太大关系的数学和算法了。从这个角度上讲,发展越来越快的软件业对代码的倚重越来越弱,其主要倚重的是代码的高级形式:数理逻辑、胶水语言、展现形式和结构设计、应用设计。就像曹雪芹的《红楼梦》并不需要曹雪芹唐诗写得超过李白、宋词超过苏东坡,而需要的是其在《红楼梦》中对人性的观察和社会的深刻认识。从这点上来讲,一个好的文学家并不比文笔,而是有更高的比较形式。就像小说之后的文学形式电影、电视一样,虽然基础还是文学和文字,但是对文学家的要求却越来越远离文人,更偏向于综合的文学素养和社会素养。
2017年,“王者荣耀”这款腾讯出品的游戏收入已经超过480亿,超过了中国电影当年的全部收入。这个标志性的节点,我们虽不能说“王者荣耀”已经成为文学,但是作为最主流的表现和媒体,身临其境的玩家们已经远离影视是一个不争的事实,而软件业整合影视,更加能够表现现实、超現实已经是既定的事实。我不能简单地称它只是一款游戏,它应是一种以软件代码为基础的更加新的表现形式,一种新的文学。这与小说取代和整合诗词歌赋一样,代码一定会整合影视。
代码成为文学并不是没有迹象。当某一个新的文学形式出现的时候,最早体现的是它们自己的工具性,就像歌是为了唱、赋是为了吟、词是为了填、小说是为了说故事、戏曲是为了娱乐、影视是为了真实一样。当科学家退去的时候,工程师接任成为了匠心独具的作品的创造者,当工匠退去,外行都能做好的东西的时候,技术外行所带来的社会学意义的表现往往成为了文学。文学即表现,乔布斯是学艺术的,表现的手机不仅仅是打电话;马云是做生意的,表现的网站不仅仅是信息传送;王坚是心理学教授,一句代码也不会写却成为阿里的技术总监。这个时候,难道你还认为阿里影业、腾讯影业他们拍的是电影吗?这种团队里充满了文学作家的新的表现形式,不是文学,又是什么?
代码成为文学,文字仍是最精炼的表达,但文字作为基础的表达,相比代码文字,确实是蹩脚的使者。曹雪芹再妙笔生花,“一千个人中有一千个林黛玉、有一千个贾宝玉”,但若今天我们写一行代码“女子眉纤,额下现一弯新月;男儿气壮,胸中吐万丈长虹”,一千个读者会有根据自己阅历的一千个林黛玉和贾宝玉的Python代码被“import”,那么,作家还是那种当法吗?
文字写到这时候,我恰好看到清华附小的11岁孩子在用大数据研究苏东坡,看孩子们用20世纪成年人的研究方法和研究报告展示的所谓创新教育,我一时不知说些什么。如果让我教这些孩子,还是研究苏东坡,我会让孩子们用一块树莓派接上网,教孩子们导入Python程序,学习网络上爬虫找苏东坡的资料,让孩子们用不同的爬虫程序(普及知识,并不需要孩子们自己编写)去爬各种苏东坡的资料,然后让孩子们用自购的、装在开源硬件上的显示屏显示故事,用Tableau和数据讲故事,讲述自己爬到的苏东坡是什么样子的,什么是真的,什么是假的,什么是装的。就像12岁的苏东坡和弟弟,孩子们喜欢的都是一样的,研究当时最好玩的:苏东坡和弟弟玩抓老鼠并且写出了文章,而今天的孩子就应该玩抓爬虫,并用孩子们喜欢的方式,用数据讲故事。
未来的文学,不仅仅是语文老师能教,虽然文字和语文依然很重要。代码已经成为文学,语文课还能教出文学吗?endprint