大语言模型印证我的特许金融分析师洞见 | AI生成和翻译
https://weibo.com/6347862377/5183994120372979
https://substack.com/inbox/post/167355695
正如我之前在微博所说,我喜欢用大语言模型来处理那些复杂繁琐、自己不愿动手操作或阅读的内容,其中就包括不少学术论文。
距离2009-2010年开发PySonar2(Python类型推断与静态分析器)已过去十余年,最近与ChatGPT讨论控制流分析时,不禁想起十年前与某位“CFA学生”的争论。
https://www.yinwang.org/blog-cn/2016/04/07/cfa
(当年上传到网站的截图已失效,各位姑且看剩余文字)
有趣的是,我十多年前就看清的问题,如今竟得到了ChatGPT的“印证”。
十五年前PySonar2刚问世时,其能力就已超越当时所有学术界的CFA研究(包括最新的CFA2)。对于Python这种带有lambda闭包的准函数式语言,它首次实现了如此精确的类型推断——不仅准确度极高,性能也足以分析GitHub上所有大型Python项目。
Sourcegraph创始人(PySonar2最大用户)曾告诉我,PySonar2的分析精度令人惊叹。当时我并未在意,因为实现方式如此简单,我以为谁都能想到。直到发现前人从未实现时,才意识到或许该强调其价值。
即便现在,JetBrains的PyCharm仍无法实现如此精确的分析或“查找定义”功能。比如定义全局变量初始为None,后续在某个“初始化函数”中赋予结构体后,IDE就无法定位该结构体成员。我并非鼓励这种编码方式,但这确实是个典型案例。
若了解我在印第安纳大学的成就,就会明白PySonar2对我而言实在微不足道——仅耗费了极小精力。那时我对Python语言本无太多热情,那些晦涩的CFA论文也让我兴味索然。略读之下便知多是牵强附会,于是花几个月写完PySonar2就开源给公众使用,连论文都懒得写——其原理用几句话就能说清。
我当年太过谦逊。看看那些CFA、k-CFA、CFA2论文堆积如山,却始终解决不了实际问题,从未投入实际应用。k-CFA甚至存在“调用与返回无法匹配”的基础设计缺陷,这种问题在PySonar2中根本不会出现。难以想象竟有人提出如此拙劣的设计还能发表论文,更后继者持续“改进”。
Matt Might的CFA2引入了某种“下推自动机”,其实质不过是为了弥补前作缺陷而恢复函数调用栈。PySonar2始终内置“下推自动机”,因为解释函数调用时自然就会形成栈结构。
Matt Might曾在博客中得意地阐述“自动CPS变换”的由来,仿佛只有他参透玄机。但其思路明显脱胎于过度复杂的CPS论文,并非独立思辨成果,带着沉重历史包袱。他的行文总是故作高深却难以领会——各位真能看懂吗?其思想水准远不及我的“40行代码”实现。读他博客时我忍俊不禁,但出于礼节和“谦逊”保持沉默。我认为Matt Might缺乏真才实学,那批人不过是在故弄玄虚。时隔多年,终于可以道破真相。
这些论文不都在生产文字垃圾吗?是的,我十几年前就洞悉此事。但当年谁能理解其中玄机?现在你们可以用ChatGPT验证了 :)
事实上ChatGPT还印证了另一点:Olin Shivers那篇CFA开山论文使用CPS变换正是万恶之源:
PySonar2完全独立开发,未参考任何学术成果。它直指问题本质,不带学术包袱——这就是简单思维的价值。这已不是我第一次以如此犀利的成果独立超越学界与工业界。
我开发PySonar2后,谷歌某个团队耗时两年多试图打造更优方案,最终徒劳无功,只得继续使用我改进的开源代码。为何如此?因为他们的策略从起点就错了——竟想用Prolog这类逻辑编程语言做Python类型推断,我当时就断言必败。何以见得?因我早已实现过这些方法,深知Hindley-Milner体系与Prolog的局限。这些认知从何而来?正是在印第安纳大学实现并改进逻辑编程语言的积累。
必须感谢ChatGPT清晰陈述我当年所见的事实,让我免于重读那些晦涩论文。感激它印证了我思想的价值。我相信大语言模型将极大推动人类进步。
现将我与ChatGPT关于CFA的对话分享给各位,希望对相关领域研究者有所启发:
https://chatgpt.com/share/6864e9a1-66c8-8002-b9f5-55e845fde7ae