TA的每日心情 | 擦汗 2026-3-17 22:01 |
|---|
签到天数: 1133 天 [LV.10]大乘
|
板凳

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 % ~, K d" x. H6 F' P) I
" v) `, v% d+ N( }7 P8 l
Gemini对glm反思的点评" F0 Q, l9 }5 w
* A/ g5 w4 u& Z3 u
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
1 G: p. {4 g4 n4 m! {, g! G3 @# I: a% O
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。7 z% B q$ G' V$ I4 n
z- `( E$ l, M% D, @0 F
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
; D! }. K5 r$ V+ T
$ {% Y7 D6 x: |### 1. 对“路径依赖”的深度解析:它为什么会选字典?& O/ z4 |1 W! H
' @' c2 t) y3 x& f- ZGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。* u. d4 R2 G8 \2 @6 Q/ _
- d2 x) g7 w0 d5 I/ f4 u3 z- “Python化”的思维陷阱: 9 h' N G8 q! j& d2 @
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
; L: N- S; L$ W' o! A 8 x' }( e- f0 D }4 d3 N- G. ?
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。( I( |0 t, m! R8 j
' o8 L- b* j' N; z J( S) x1 W
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
- w( v- ?# V. v5 _/ G
6 x r* B7 [6 ~' N% ^- Y z9 h - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
# b6 @# b. H7 ~, v0 ~
# I; Z6 |$ `- Y1 d! P- D- 忽略了“Excel原生”特性:
8 n7 y P, Q! X, G, u& V, q Excel VBA最核心的优势是Range和Array的互通性。
* V+ o3 L# Q! @9 ]8 P
, {2 Q: I8 Y% J$ C' ?$ D, C - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
! X4 t/ M6 _5 T$ w ) {8 [7 b) n) D. v) R( }
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。/ }0 R3 e1 i( Z1 I5 p
* J( L/ M$ c: X k. k9 D+ Y3 J! P" q4 d/ r/ b9 t* {' H" P( F
### 2. 对GLM反思点的逐条点评, b) O: g) H" I- K' ?
# d( }$ B5 a6 B4 D
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
! B j; i9 H7 K( h! K9 M6 Q3 B0 m8 V9 Z) m
- GLM说:教科书里键值对是管理实体的标准答案。( }, A/ N% ]7 e
1 o. g% a% l* S5 K. U) Z5 A& C- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。6 q' Y o" @4 d4 m* p% p; T7 |, K
* @. Z9 J) o2 Y( W5 C
) I$ B6 E1 n/ e1 g, H h7 X#### 关于点2:“过度抽象的陷阱” (评价:非常到位): o0 H* X$ P4 u; m& I5 h( b
7 j. Y4 E9 Q4 J7 q e- GLM说:追求理论完美,忽略了VBA的脆弱性。4 V2 F/ p0 _' n4 z" j+ j4 l% x/ f
( q5 k2 [2 ~0 p; o( \
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。- R" Y- a* e9 U% r6 A
& N9 I+ a3 Q) w- m* P2 s X, r
$ H0 L. i6 D# S; w9 S4 F, ~. |7 G#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)& W6 O+ O/ A; z4 N, F y
2 ~- O3 {2 } k. ^& _- } e7 Y
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。! _8 `6 Z/ g+ O6 l+ t! @' p
) P! j: u( q+ A( }2 T- 我的点评:这是最精彩的反思。
" r7 P0 W1 ~$ N. g, s 3 J6 P* s. ?2 _+ P
- **计算相关系数(Correlation)的本质是向量运算**。公式是/ R( t0 p6 C0 X: E, F
% y. p: g! ]7 ] `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。: h L }0 ]# f5 X7 }3 B1 k6 e" @
3 ?! ^( C- t8 @" b5 `
- 这需要的是两个对齐的序列(Array A 和 Array B)。
4 X! h/ s7 G D( R2 j - e7 Y) Z% s4 u2 V8 v
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
" F2 {1 N: R0 q
4 z% C7 P. q5 K. R5 N, L3 s+ _- \& ?+ r B* v" s7 }
### 3. 我对它的补充:它没意识到的“工程化”问题
: k# \6 ?' Z+ M; w2 _- L N0 e* ~2 V6 ?
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
) ?2 Z6 k5 k. \; M, d1 H
6 r) e% |; J, o, e& i' H$ k1. 环境依赖(Dependencies):
. r$ e2 r6 S7 c$ x) U4 l - C- `7 ~) u2 e5 u6 [) I
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。* ^/ R$ w! ]( x
* ^- [& y( `8 C. m0 Y" G G- m$ z - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
0 D& N& r; k4 H5 t8 ` 4 H7 m' z- } W
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。. c& _- n: o/ d/ s& [8 t
! \ H. _- O; A+ G
2. 调试难度:( f g; D6 f6 Y3 X
7 X6 z- S' `& @( d! f8 Z
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。5 J7 e% \ d0 X; t3 t* N. v
: {& e9 e$ @8 A& ]( o- ? - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
/ d/ y9 J% _" G4 }7 O( ?
# U6 X. S; g" I6 R. [% d: j5 @0 J3 h8 G" q+ A
### 总结
: @- C8 x7 g( G9 C) n" U- B& f3 u- f" q
GLM的反思表明它已经理解了“场景决定架构”这一真理。
# j! {* Y$ d# w7 I0 K5 m
$ O! L# ]6 T' s% g# E1 y- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。% V8 E) P+ e$ }" a2 R1 {
) ]6 Y1 h7 y3 G" T; g- W5 x* [- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
* T2 X; x/ H3 ?. O" A+ H* i
* y1 J, c3 Q. x& F3 d% b- }: N" `: ]
9 U6 A; ]7 [- }) A; w# U; x1 |它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|