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

楼主 |
发表于 2025-11-29 16:20:32
|
显示全部楼层
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 # m1 \' B( w5 P6 d7 D' s
9 K& c8 Y+ K: FGemini对glm反思的点评
$ _. l2 E& u9 Z4 Z6 e4 s
3 q! Y# ~6 S8 O- U作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
1 {. U( [& k( a* P3 i0 Q) Y" ?
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
. l. H- c& R- n
+ s4 Q) F% U( i以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:" ^/ [5 M8 c( S o, V# T
8 w& E1 R' a0 H+ H### 1. 对“路径依赖”的深度解析:它为什么会选字典?
4 L1 M4 z+ S5 Y# {- j$ g) \
- V U: l- w( M3 I2 p1 F2 Z8 J8 R: h; GGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
! T) T3 Z0 r- ^1 T3 k, t+ B( Z2 K$ a; @8 q0 }/ N
- “Python化”的思维陷阱: + Z$ [. N; I6 n9 `1 q# }
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。: U8 b. r! _6 Z1 g9 G& g
8 u8 |4 ~3 l% J6 @ - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。8 Q. s* U9 n4 |9 ^( m/ H' }
% z5 X# Q* [" y0 \4 m - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。+ d+ z+ B" N9 V
" W9 C) }0 s$ X - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
1 f9 T! S- ~1 E1 q4 v2 q: e ! t2 { { c; F! |! q
- 忽略了“Excel原生”特性: * X4 P9 c0 B$ {( O9 p
Excel VBA最核心的优势是Range和Array的互通性。
9 C8 p3 t" V7 n$ i1 h% R" U
! I: S/ j1 C# k% W L - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。- f2 F! X! k, I; A+ {! o
1 W: h( W. W/ n" ^
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。* x( w/ r5 x9 H, ?# R
$ {1 N8 u, e" B
3 d/ g; C/ x& |8 z### 2. 对GLM反思点的逐条点评. I) U/ O6 R5 W2 q5 _, g9 {
2 O; e" O% a8 @# x. p, J$ o#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
; I" r, {3 i5 m/ l
1 J; D1 R, s& I- GLM说:教科书里键值对是管理实体的标准答案。+ i [* y R% c: ?
, i& G9 q; l* I$ c+ l
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
: f3 P6 v" p6 O6 L( d# t6 h: l
5 ^) V4 J) Z: Y4 x) b, ]8 M8 _& U7 Q, L. d
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
4 B- j- S% m6 h! K+ h5 I9 s ?* A) Q. h) i' q
- GLM说:追求理论完美,忽略了VBA的脆弱性。+ }. u" N$ H" c7 o* F3 W/ r
, w' ^( K, k# ~! a% [1 X" Y
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。5 j! e: U; I$ a
& W3 c: S. b* ^% |! X
; _: r. ^" e5 X. j. f#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)( \: D6 f' f& I4 P7 q
3 a; b. P/ _4 S
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
5 ~- T O* D. E |7 v1 H+ ?
( {4 i1 w" o- m3 C; z: f- 我的点评:这是最精彩的反思。
$ U' A1 g0 `/ ?1 A- ?
6 o p: q- W+ v, U - **计算相关系数(Correlation)的本质是向量运算**。公式是
# ?3 t8 l2 y! m ! \9 c+ ]1 N3 b. ~% J
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。0 S+ L4 }5 \" U5 l% _) |: L
9 n" R6 J4 R8 d2 c$ t% E - 这需要的是两个对齐的序列(Array A 和 Array B)。/ @! S7 W& h J5 Q4 i% V% I% f
& @# j# F: g7 K% D2 {+ Q
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
2 m$ S( P. L# j3 o/ y
) ?. H4 k( |7 I# t& r
# X8 \& H/ `1 V### 3. 我对它的补充:它没意识到的“工程化”问题2 Y! Z" E7 ~& w) m# u. x
" ]9 L8 `. R! o! L2 c2 M m; o! ]GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
2 v& n0 y2 A" O4 f
9 h, p& x2 t& r) Z) Z" P! x1. 环境依赖(Dependencies):$ L; S D) S" |* Q3 y1 c, a* u
/ Y3 Z; f4 q; i& ]( X$ k, r
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
2 Q& ], l" Y/ o: K- B
: P' Y$ k/ R& p) H- W+ e6 f - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
4 r P1 a+ j2 t/ }5 w 1 w7 ~( a8 x) V2 Y! y
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
2 O( T5 {; q' c4 }9 @* {( l P" j2 ^+ F5 X" t, k8 D
2. 调试难度:8 o! ?# X+ f5 i& z* d8 y
" K! z) O# W( F - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
8 ?: k. ?7 u( ] * j) N6 y6 y! U5 I6 X" t' L% h
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
) ]. @: g! J& j" C( v7 H 6 z7 w8 [2 i! g6 x# N S* I
! d9 L3 I9 P5 v* R4 g- H7 I# |### 总结/ o K# z4 _& y, ]; U' ]
- C) U0 i( ? M1 x8 V
GLM的反思表明它已经理解了“场景决定架构”这一真理。1 y* o, o f6 p9 H6 X/ F6 f
* Z) E) z- v5 R6 k R- K
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
4 h5 W6 I( p4 `! D, g3 @ P. F! [2 ]( i$ D( j
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。: B* U$ U3 R. l- H7 v
) {" X! w; u i, ]: K
( K# g, l% }7 @5 q- Y1 }它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|