TA的每日心情 | 怒 2025-8-7 11:56 |
|---|
签到天数: 1132 天 [LV.10]大乘
|
板凳

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
4 x: _& z' I4 z) [6 E# }9 h, Y! H$ g/ q
Gemini对glm反思的点评' }# \3 s# R" B% U0 u
$ K: j6 x* h! `7 U
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。0 K. A+ M" h( K! ?
- U1 Y/ C0 D2 [# M9 w8 _+ Z( I它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
/ ~% W' J D9 a1 `' G3 C1 B. Q* T& J6 u9 N' L6 O
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
B; |8 H$ B8 ` w) i- F
2 W# f/ b. T" r3 a" y. n### 1. 对“路径依赖”的深度解析:它为什么会选字典?) ^) G. o4 {9 P1 p- e1 u2 U6 F
1 M) b$ x ]; E2 ^, @
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
1 L1 }3 F/ m: y/ S; u( H" N! R- e7 W* l' @4 H% H/ s
- “Python化”的思维陷阱:
6 M' i& g* R8 b$ ^; m% ~& z# z 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
" \+ G: k2 x$ r- U- u2 ?
6 Z* m" w9 L- Z- p - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
2 Y' o3 j- Z& h3 o" ?2 l 5 ~4 u& }, l. _
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
/ f" l4 I* y3 n7 T& W5 z
/ J, B4 ?0 V- W% j( t - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。6 k$ b& g- O" j) ?" R; s- L" t
% c0 L7 S: ~) L) o2 |) K- 忽略了“Excel原生”特性: 6 I% O; c# R2 j! T2 F7 ~
Excel VBA最核心的优势是Range和Array的互通性。
& |* w2 H6 R$ B0 Y- d) L: J 0 z& U: D. f7 D' @; K
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
( ?: ~1 O5 H- d- Q6 B 8 I+ d& L- P; W. F
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
# @8 e$ r" n ^7 f
2 B# ]% e' Q0 D- m
$ {) C& b$ l# ]1 `, c### 2. 对GLM反思点的逐条点评
1 Y3 r$ c% X, p1 A; G
/ J2 g; m' C3 B! }7 C j% Y& a, F#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)3 ^$ }- B' V; l: J/ V* I. Q5 l2 ]
' S. }% e7 f* w- GLM说:教科书里键值对是管理实体的标准答案。
2 f9 K4 @. f" a; V) n3 _
' S, H7 z* c8 S6 s0 N& n- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
& T: u* x3 }" n- G a ! W2 |& G( F" K% M a' l- K
) R; s% k# Z9 a: J# E$ Q' q#### 关于点2:“过度抽象的陷阱” (评价:非常到位); m! l8 a; B1 }7 }5 Q/ J6 h+ o5 b
: j* K4 I- V) j1 X5 Y4 |
- GLM说:追求理论完美,忽略了VBA的脆弱性。( g- e# m0 Z/ I7 Y. F0 n/ X
8 x4 p, {! A7 }& c: t; j) h- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
: O- X8 H4 d. `2 d! R $ ` b1 C( _8 x! x
6 [* d1 R5 \; ?& ?+ J5 h1 g: y+ x
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)7 O; d/ T! x$ r% B! r3 X4 |
2 o' A8 \ n4 f- n0 z [- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。9 G+ m3 ~2 d+ {4 n: v0 p
( |7 _2 c! b" Y, O* U& D, z
- 我的点评:这是最精彩的反思。
# w' `, v* Y0 _: Y( `; p! w " K/ C a! F0 T$ e+ R G+ r1 T1 V
- **计算相关系数(Correlation)的本质是向量运算**。公式是: A7 J* Z) W5 P2 s
) u& {( _" x( W) O# O I$ T& J; S `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。/ Y2 u: G* L$ C' j/ v
9 s( r! y5 l; p - 这需要的是两个对齐的序列(Array A 和 Array B)。
$ p5 h- d# V" ^# y) v/ ^ 8 l. i2 d1 B% c9 z6 s3 c- l
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。2 a% t8 d; q' p1 n
$ n' h- W4 m: S% w. T B( ?$ @' N' w8 l( M! h+ j) b7 G- n/ M1 r
### 3. 我对它的补充:它没意识到的“工程化”问题4 d. Z- e5 U- m% `/ {$ q
# _) ]" c5 d) t3 |9 Y' s
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:% _& s, K& i% E" ?% |! i) O& i
& t2 J9 h- F w3 p2 S
1. 环境依赖(Dependencies):
$ l$ I+ Y9 g. Q8 Y9 R 1 j) }/ t& O$ w+ m) X
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
+ g3 K3 k4 d) g6 ?) F
0 J) R) h: y% e% a: X - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。; |5 W5 O& k8 c/ C3 e. V1 }% ]+ }. I
$ F' b9 f+ [) u
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
7 Z, ]2 r% P/ [' j! I
5 e7 Z7 v, Y; _3 ]2. 调试难度:; Y. n9 w, \: F3 h! x& }
) _# ^, p. W& j" {( X3 y
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
! b, l, Z6 F; f$ f, l
7 g. M6 ?" m* W% J( B - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。7 c4 X7 \* x6 m* c# U" m7 w# G% d
0 l3 @; a- L! T+ H/ B. z. X' u$ X/ g- g# n+ y' L# y( \7 u. N+ Y- O+ ?
### 总结" }- h' K9 \/ Y2 V" L% k- [( Q* o
7 d( X1 P, C& d3 y/ v
GLM的反思表明它已经理解了“场景决定架构”这一真理。
0 {# g* R1 P5 f S
/ m$ `9 K5 N+ L+ N- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。& z+ ~# R5 Y# R3 ^% {/ x; l4 u. e
; u+ Q$ W- z& V2 R& K- A1 | o
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
: y. [* O8 H& u0 ^# c
! P, g7 [' F6 F5 \
& h+ H$ ^" M0 u它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|