最近用 AI 辅助编程,最大的感想就是上下文窗口太小,LLM 能力很强,但是因为开发软件需要输出和记忆的代码量太大,所以经常写着写着它就忘记了。如果你要求它只输出一个文件的代码(几百行),现有的大语言模型多半都能够胜任。 这就解释了为什么很多人对现有 AI 编程能力的评价两极分化——很多人的工作都是在对已有的系统进行二次开发和优化,这些系统都有大量的历史代码,现阶段的 LLM 很难完整读完并记忆这些代码。这其实就和我们人类一样,我们也没有谁可以准确记忆操作系统内核里面的每一行代码。

所以可以预测,在不远的将来,我们将会看到使用 AI 进行软件开发出现两个分支:1. AI-agent,在这个发展分支中一个大规模的软件开发将被分化成很多小的功能模块,然后每个功能模块由受过专项训练(只用相关代码进行训练,比如只负责编写后端代码)的 AI-agent 来负责编写并测试。这个应该也是所有人目前的共识了。AI-agent 系统最大的问题就是资源开销太大,另外这个想法也没什么创新,只不过就是用 AI 强行替换人类而已。 2.我们会看到一个全新设计的低上下文开销的编程语言(Low Context Window Programming Language, LCWPL),这个编程语言设计的初衷就是适合现阶段的 AI 编程,同时也能保证基础的语法方便人类维护(在现阶段,AI 维护还为时尚早)。现有的 Java ,C++这类类名冗长,编程范式繁杂的软件开发语言将被逐渐抛弃(或者是在人们的辅助下,用AI自动翻译部分Java/C++模块到LCWPL,并逐渐替换掉),用这些语言编写的系统也会被这种新编程语言所替代(有了这种编程语言,再用AI来重写一个操作系统并不难)。Python 等动态语言因为其丰富的库可能还会在学术界等地方继续存活一段时间,最后应该和 Fortran一样慢慢消亡。

根据我个人使用的体会,现阶段Go语言非常适合LLM,主要是因为Go语法简单、解决同类问题的方式统一,不像一些语言有多种风格和大量奇特库。这种一致性使模型更容易学到单一正确的做法,减少上下文混乱。同理,某些更古老的严格语言(如Ada、Eiffel)也许在未来因其规范性重新受到青睐,用作AI编程的基石​。综上所述,我们可以预测新的编程语言将具有这些特性:1. 一定是编译型语言,而不是 Python 这样的动态解释语言。因为动态解释型语言对于 AI 来说Debug复杂度太高(编译过程会自动做较多检查,编译型语言将减少AI需要追踪的所有动态场景,另外编译型语言常常有显式类型的好处)。2. 一定保持简单的语法,可能会有语法糖,但是绝对不会有很多复杂的编程范式,过于复杂的编程范式就导致 AI 理解混乱。简单便捷对 AI 来说就是最好的。3.一定是支持功能导向的集成(feature-oriented integration),也就是组件在被开发(AI 编写)的时候是根据人设定的功能而递归的一项一项开发的。这也使得在集成之前,AI 可以彻底测试实现新功能的那些类,然后增量的将这些功能集成进入系统。——》换句话说,AI在使用这种编程语言开发的时候,将会先开发“骨架“代码(树形结构),然后再分别开发小的功能组件并把它们挂到树上。这种编程开发基本上不需要“脚手架“(底层的程序库类除外,搭“骨架”的时候可能需要一点脚手架,否则在添加特定的功能之前,骨架中的某些部件可能根本无法使用)。然后把各个功能挂在骨架上之后,就无需脚手架了,既然每个功能都是自成一体的,那么它会包含自己所需的支持代码。4. 这种编程语言会在语法层面存在类似于Rust的借用(Borrowing)的机制,可以显式的告诉 AI这个文件和哪些文件/函数是强关联,和哪些文件/函数是弱关联,。这样开发或者后续修改的时候AI 只需读入相关联的文件和函数,而不需要读入整个项目。这样将显著降低系统开发整体的复杂度。这个也和人类开发的方式相同,人类开发的时候也只是专注于自己开发的功能模块和与之相关联的有限几个模块,而不会尝试在脑子里装入整个系统。

旧语言或许不会马上消亡,但从可维护性和AI兼容的角度看,新语言出现是大势所趋。

36岁的暑假

36岁还能过暑假吗?作为大学教授,是可以的,36岁你还可以不用每天工作,还可以享受寒暑假。

36岁的暑假是什么样子呢?5月份,暑假刚刚开始,女儿还要继续上学,所以每天我只需要早起带女儿去学校,然后我就去公园去跑步,出一身汗后去单位开始看看Youtube,回复下邮件。下午需要接女儿回家,家里还有一个小婴儿需要照顾,不过好在岳父母都在家可以帮我。有一天感觉家里的狗已经太久没有出去运动了,于是带他去公园和我一起跑了一个小时的步。很开心

6月初,我们全家一起去了迪斯尼旅行,奥兰多又热又闷,但是我还是很开心。旅行是很累的,但是能够留下开心的回忆我觉得一切都是值得的。6月开始女儿学校就放假了,于是我的生活变成了在家里看女儿和还是婴儿的儿子。帮岳父母分担一部分负担。西切斯特的天气还没有变得很热,偶尔兴起还可以去花园干活。看着自己建立的小花园一天天变得美丽,心里也非常开心。

6月底,我们全家一起去了Catskill旅行,和多年的老友相聚,玩的很尽兴。回家后也可以和女儿在家里游泳池里面畅游。感觉美好的生活也不过如此。

可是好景不长,很快岳父和老婆在旅行回来之后两天因为食物中毒发高烧生病。之后我又开始感冒咳嗽,还传染给了儿子。家里的狗狗从好友家里接回来后也突然生了病。现在在写这篇日记的时候,狗狗已经上下楼都会非常疼痛。带狗去了两趟医院,但是都没有能够确诊病因。现在晚上为了能够保证狗狗能够不上楼,并且感觉到有人陪伴,我只能自己一个人睡在楼下。现在写这篇日记的时候,我正在陪着家里的狗狗在一楼——因为一楼的沙发睡得腰疼,凌晨4点就起来睡不着了。

感觉这次旅行回来之后,一贯顺风顺水的生活突然走向了另外一个方向。但是我觉得这就是生活,这就是我36岁的暑假。36岁的暑假和30岁,20岁时的暑假有什么不同呢?我认为最大的不同就是你会开始认识到你有了更多的责任,你需要靠自己来支撑起整个家庭。无论是大事,小事还是日常的琐事,你都要把每一件事都处理好。你有了更多的角色,20岁前的时候你还没有家庭,你只需要做你自己,暑假的生活很简单,每天只需要考虑自己的生活就可以,偶尔会有小小的烦恼,但是总体还是生活的无忧无虑。从30岁的暑假开始你有了一些责任(女儿出生),不过那时候你还年轻,身体还好,家里有很多琐事但是还是有很多自由的时间。不过那时候已经开始觉得属于自己的时间正变得越来越少。那36岁的暑假呢?家里的成员越来越多(儿子也在去年出生了),生活变得更加忙碌了,自己在工作上担任了更多的职责,同时也觉得自己应该科研上面再进一步,但是又摸不到门路。家人和宠物都逐渐的老去,家里的两只猫都已经13岁,狗狗也已经11岁了,还记得狗狗不到一岁的时候每天陪伴他跑步散步的时光。所以这个时候,如果一切都是顺风顺水,36岁的你可能并不觉得和平时有什么不同,生活变得忙碌了,但是你还是能够抽出来自由的时光。但是就像发生在这两周的事情一样,突然间你可能就需要处理家人和宠物生病,这会让你感觉到非常的焦虑。特别是家里的宠物,会突然意识到他们老了,陪伴自己的时间已经不多了,一旦这么想,瞬间就会在心底难过起来。

36岁的暑假什么时候结束呢? 这个暑假刚刚过了多一半(62%),还有剩下的另外一半。在这剩下的时光里面,我觉得我需要能够坦然的去面对一切困难。36岁的暑假希望仍然是美好的回忆——它不可能像20岁30岁的暑假那样无忧无虑,定会夹杂着更多的酸甜苦辣,但是人生一世,不就是要去体验这百般滋味吗?所以不管是好的,坏的,开心的,痛苦的,只要是给我的体验,只要是能够留下回忆的,在我看来,都是重要的,应该去感恩自己能够体会到所有这些体验,能够拥有所有的这些回忆。

不过写到这里还是有个小私心,希望后面的暑假能够变得顺利一些,狗狗的病情能够得到确诊和治疗,并尽早痊愈。希望家里人都能够康复。希望家庭两周后的坎昆旅游能够如期进行并能够收获更多开心的回忆。

不过无论怎么样,作为36岁而立之年的自己,继续努力吧!

计算机起源于数学,那么随着近几年计算机人工智能技术的不断更新进化,我们不禁要问,计算机能不能也帮我们“进化”下古老的数学呢?实际上,数学恰恰是一个极好的测试人工智能实力的试验场。如果我们把数学的各个定理看成一个独立的节点,你会发现节点和节点间存在着数不清的链接,进而组成了一个庞大而复杂的网络。事实上,这个网络太过于复杂以至于现在的数学家已经很难精通这个网络中的每一个节点了。但是,处理复杂的网络恰恰是计算机的强项,所以剩下的问题就是如何将现有的人类通过智慧创造的数学理论转换成一个可以计算的数据,然后交给计算机去处理,去发现新定理。

事实上,我们发现在这个数学的网络里,定理之间是有”远近“的,有些定理间挨得非常“近”,有些定理间离的非常“远”。你发现挨得近的定理之间可以很容易相互证明,或者你发现他们其实是相似或者根本就是同构的。这种定理距离上面的远近到底是因为“冥冥之中自有天意”还是只是“历史的偶然”,我们不得而知。纵观历史,你会发现很多时候之前看似无关的两个数学子领域,在随着人类对数学知识的不断探索后,最终奇迹般连接在了一起。比如怀尔斯用椭圆曲线及模形式证明的数论领域著名的猜想——费马大定理。又比如前两年望月新一通过构建宇宙際Teichmüller理論来证明的ABC猜想(虽然至今没人看得懂…)。因此有人想,如果我们能够量化这种定理之间的远近关系,然后把这个网络输入到深度学习网络中,我们没准就能够创造出最初级的”人工数学家“了。当然要想成功,我们还需要攻克的难关就是如何用一种简单或者自然的方法来表达最终的结果,并让机器在自己创造的结果上继续学习。

事实上,之前大量的人工智能项目都遇到了这个问题。例如麻省理工学院在开发”MACSYMA”这个基于LISP的计算机代数运算软件时,其中要解决的一个重要问题就是,怎么确定当前状态下的运算是朝向正确(简化)的方向在计算。那个年代的人工智能大多依赖于树结构的搜索,而数学运算每一步都会产生大量的分支,一一探索将会浪费极大的时间。为了改善速度,他们又提出了一个分级的结构,利用启发式算法结合已知的数学知识对整体运算做剪枝优化。事实上这个方法和现在的阿尔法狗利用蒙特卡洛树搜索树的方法有着异曲同工之妙。

另外一个不得不提的人工项目是由斯坦福大学的道格拉斯教授开发的一个可以自我”发明“数学定理的程序。一开始他先定义一组符号集合和一组”有趣“的符号之间的关系,然后把这两组数据分别输入到计算机。之后他的程序就不再做任何干预,而是让计算机去自己发现这里面的关系。最后他发现计算机可以通过这两组数据重新发明如何计数,如何做加法,如何做乘法,如何标识出来素数,甚至可以重新“发现”哥德巴赫猜想。 这些当然都是我们人类在上千年前就已经知道的知识,但是能取得这种结果也让人感到欣喜。可是令他不解的是,在这之后计算机就不能够继续创造有用的知识了,这个系统不能继续用它推导出来的理论继续产生新的理论。所以这些计算机推导出的有限的数学知识也没准是因为输入的数据中已经包含了这些定理。而他创造的这个人工智能本身却没法创造新的知识。

回到现在,深度学习能够让我们更有效的利用已有的硬件资源。但是,依照现有的计算机体系框架,即使我们成功的将数学理论全部输入进入神经网络,最好的结果估计就是能够通过分析现有的人类数学知识,将一些遗漏的定理之间的“链接”补全。现有的人工智能还没有能力像天才数学家那样去开创新的数学领域,也不能参透数学的奥秘。

哎,真的30岁了。不得不感慨,人啊,活到21岁22岁之后,生活就会变得特别快,就只是一年一年地过。最近这一年经历很多大事,嗯,对,买房,结婚,蜜月旅行,投的论文第一次获了奖。按理说过去的这一年应该是过得非常精彩 —— 主线清晰明朗,支线错综复杂。不过事实却是这一年一直在烦恼着,迷茫着。也许是因为生活太安逸了,不知不觉自己就渐渐变得懒散起来。

这一年第一次miss掉了审稿的deadline,又两次错过了grant申请的deadline,答应好要帮忙同事写的书迟迟不能交稿,答应好学生的推荐信迟迟不能递交,要写的论文写上几笔就没兴趣了,要帮别人修改的稿子一拖再拖,自己的研究也一直没法抽出时间来做。

为了安慰自己,给自己的拖延找理由无外乎就是教课太辛苦。但其实细细一想,自己教课也没多辛苦,大多数时间也并没有在备课,每次都是拖到要火烧眉毛了才随便找些东西糊上。

有的时候真的觉得自己都不了解自己。

最后,按照每次“年”记的套路,写下明年的展望:

希望2018年自己能够明确自己的短期和长期目标。然后踏踏实实,一步一个脚印的去实现它。

最后的最后,还是要牢记这个忠告,吃得苦中苦方为人上人。

继续努力吧。

马上就又到我的生日了,又老了一岁,离三十岁又近了一些。三十而立,时间越来越紧迫。

最近都是一个人在家,闲的久了,就开始胡思乱想起来。看着身边的人换了一拨又一拨,关系好的最后成了许久不联系的朋友,其他的则直接就没了联系。但这并不是最遗憾的,最遗憾的是我发现我们曾经的年少时理想正一点点被现实所腐蚀——我们不可避免的变成了那个“世故”他们。

有的时候,我很庆幸自己留学到了美国——不是因为环境好,而是因为可以不用烦心国内的高房价。今年中国房市疯长,让刚刚进入职场的我们八五、九零后安家置业变得更加困难。但这并不是我真正感到烦恼的,真正让我烦神的是高房价导致的一系列后果:家里有房的人作为既得利益者变得骄傲,进而导致反智主义盛行。而真正有知识有能力的人因为自己的生活郁郁不得志而走向极端——这是一个非常危险的信号。

当然,类似的事情在中国已经不知发生过一次了,但是这一次,却让我真真切切的感受到了。从家人和微信朋友圈上面,我第一次感受到了这种负面的情绪,虽然只是只言片语,但是却着实让我感到惊愕。

我能够理解那些面对疯长的房价感到无助的同学,我能够理解他们在面对着不断上涨的每平米售价和永远不涨的工资,在面对着家人要求早日成家时候的窘迫。理想就在这一点点的日常中被现实碾压的粉碎。

在这个浮躁的社会里,似乎几乎没有人思考过幸福究竟是什么。所有人都认定幸福就是能够付上那天价房屋的首付,在大城市中有一处“蜗居”。然而蜗居再好,生活却还是那样,柴米油盐,每天还是要挣扎着去上班,每月还是要把大部分工资交了还债。我不得不承认,现实会改变我们,就在不经意中,一点点改变着我们。如果曾经的海誓山盟都抵不过一张房产证,那那些为科学献身的口号又算得了什么?

我只是希望,在这血淋淋的现实面前,我们还能保留一点点当初的理想,还能够抽出一点点时间品味生活中的小乐趣,还能够静下心来读书思考。希望这个希望不要最后变成奢望。