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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
0 |+ b _0 _' ~0 ~
$ U$ c& W+ C- u5 F4 c' I1 n) pGemini对glm反思的点评: r1 }* [, u2 \0 u: S
7 n: c5 i/ l }, d7 K9 H作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
8 ^" j6 u4 E$ x( [1 F7 X: P0 d% S$ _$ C' j3 m8 u2 N
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
" `8 q& O, {$ N4 p7 Z; u
9 R; ?. l* W3 E i$ K以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
$ G% X" T% _& ?: P: d& g! m9 o, D' C* W0 c8 H3 z& G
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
2 n8 h& U4 H: k3 l
' k4 [7 _1 K, {( IGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。* D2 g% z7 e& }% d! s+ i
* |6 v' z% ?& p9 z2 e
- “Python化”的思维陷阱: % n% b% n2 N( |
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
: U7 V. z6 `; e' A
9 `- H* ]) Q/ r9 G - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
. O, [3 _, @, i4 c6 O - M- w6 u! w- I* ]
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
4 x2 O3 c) r" A: c: D' M
7 v! X; K0 f+ K2 t" [( i - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
$ _. {* Z: a; k' }* e0 m
x4 ^' H8 j c( f& W$ s# ~- Q- 忽略了“Excel原生”特性:
. h1 V: @- s: k$ u5 t; S9 o Excel VBA最核心的优势是Range和Array的互通性。
0 o# H o- `9 `& Z
: F9 o# q. f% h - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
' j/ l4 R9 L% p" }) Q" T D, D9 G$ ~* V; U# _# P0 C
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。! \+ z, c5 x4 }% @) e8 c, c
& h1 g6 g5 B* N) S# U# @
: I f( i% m+ v/ a### 2. 对GLM反思点的逐条点评1 U q9 ^' B3 j3 f6 k/ T
+ U6 _/ e( ^7 ]5 F- j N( M1 u% L
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
7 ?8 @$ q. R1 J Y4 y+ |7 O2 z
+ R& u' j1 Y5 y$ e4 {5 o- GLM说:教科书里键值对是管理实体的标准答案。
! r7 N& w$ M. V% ]" A " T) L3 w% x) |( |
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
" i2 R3 x, H8 H- c % ^- h" b; n; C) W* V
% g( N4 b: a. V0 W" Q, E#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
% x0 t, T9 ^. j$ N F$ X8 C9 l) w8 C, y& `
- GLM说:追求理论完美,忽略了VBA的脆弱性。
6 u" D+ E7 Q; {- w
. {3 \* a A* F6 @) F/ Q O- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。4 A& f1 n0 M7 y. {$ H5 u
4 F! ~, a5 m3 V6 @9 }
( _7 U1 T% N6 u( k' H
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
8 W. T' h/ O1 P) E- u$ ^$ J1 V6 E- R" y, o3 g% j- j5 w# `
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
+ z1 R b- G" L" w+ V Q9 E9 v3 f! R( I; C9 N
- 我的点评:这是最精彩的反思。
6 ?, z7 J) Q: J- H, ?9 K
" ~* B2 u& L# W - **计算相关系数(Correlation)的本质是向量运算**。公式是
+ o' `- Z1 P, G& w) q5 W5 I8 s ! z0 X5 `- g. u
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
* a, q' F2 Z5 b: J
) b" B2 v; t/ ~# p6 k - 这需要的是两个对齐的序列(Array A 和 Array B)。
# Z# @2 u/ j* h, X, _ / ]6 N Z; b# o4 _/ d \9 [- m6 F
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。3 V- @. [0 ]5 W5 \; N2 z' M9 C
' _6 L% x9 V% O$ y+ ]
* R' n) _: I" r$ `7 A2 f
### 3. 我对它的补充:它没意识到的“工程化”问题5 i! M# P% ]# E2 R$ S9 u- ~
3 W: _; ~: E# ?8 A0 `5 t
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:8 {1 P5 C6 U- R( _ m+ k" P
1 Y O) T6 W8 a2 f2 r S/ l1. 环境依赖(Dependencies):
; D3 ?7 E3 v o. p- P6 m 7 I7 t, m: e' U
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
h" M$ ]6 \+ J6 z. o
3 |/ ?3 F. C4 Q) k, h, l - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
: a( I' j' K' M8 S! _* B% ?- K% m* e, v
9 g; D p: o* ]9 }3 f - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
2 u9 R F. F- |* Q. z. O) k
) Z: Y7 w; A1 H/ \7 b, V2. 调试难度:
$ q( o" O; c1 J( h5 k
/ f- u# e3 n9 } - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。( a T9 u- U. q5 A- J4 f
; r; m2 K$ X: Y, d - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。; v/ t1 s* r1 @% P1 @
, D5 r3 T: h& m! Q$ ^
; U* B, a/ J! C5 @
### 总结8 f0 g) b. m/ T; S9 o
3 J" m6 f% t0 y( D: V2 q
GLM的反思表明它已经理解了“场景决定架构”这一真理。
' D' o I, ^3 `0 E" [: f
# k8 I3 @, \. B# J: d4 j- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。, d% M. I2 h( H( {1 j9 b1 {+ U: T3 R
2 y- [/ p p* @$ p- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。# o* r+ r. W& L, j6 N2 r3 `
3 |- d9 E- v1 B. x& k% j" A0 }4 o
6 f5 Z, @$ s# C" A1 U它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|