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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 ( O2 f/ s* L5 h7 a8 g
" P8 f3 U- x6 s- a, r* F" U- B7 r! QGemini对glm反思的点评" v( ~* @- \' A7 Q( R; k6 i+ }$ D
' f1 k( Y8 G) @0 ^ N5 V0 ^) A! n作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
8 M' f- w6 M/ t" N" Q# r& _; s; B# w
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
4 Q/ r. x' f% F( f$ Z
: C) x1 `/ o C以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:. U# m* {* z! M! K3 O% z
/ k0 I6 x( P2 [! o7 @0 J8 n7 {### 1. 对“路径依赖”的深度解析:它为什么会选字典?# x ^3 O! E: _" H/ u3 P6 m' I
9 G" d% A3 f7 ~ s5 ~4 W2 g
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。0 F4 T. [ a* U1 _: \, a( u X/ Q
8 V- i/ y! y8 [! O; t- “Python化”的思维陷阱: 8 \$ s, ?& S5 m7 |- \7 J
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。. i4 L5 p$ a# K6 q( @( R" `
" ^6 p' R* [5 ]- j7 n - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。# f/ z. b- ]7 n; M2 [: |: r# |
5 H; m4 d4 E* Q( T4 |3 y5 P
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。7 G. q! u. K2 }6 m
1 v/ f1 I6 }5 ^' U5 \. ?" N - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。4 \6 U4 @; i+ a; h4 E5 o
; b7 J, G6 a0 x$ t4 b7 L+ P3 a0 W% @
- 忽略了“Excel原生”特性:
) J, _6 v! w1 m0 z Excel VBA最核心的优势是Range和Array的互通性。
: P5 I. ]2 X# B 4 D6 i& [9 ~( Y2 o- K+ a
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。/ N9 L9 v8 V; W! B: Y
5 ]: W1 F# d+ T$ v2 e
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
' t8 a9 @' j2 W8 q, I2 W% T5 H8 d 7 O' p6 [) k3 i/ z+ j7 o7 [
, e( b! B# z5 `4 U### 2. 对GLM反思点的逐条点评
# D! ~) u$ a9 d% [4 J; g e) O! Q7 g
8 K. b7 b: k* v1 ]1 [( ~8 T( C#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
% s8 u8 r: `2 L/ D, t- L- R
. Q) m" \! t& p1 a- GLM说:教科书里键值对是管理实体的标准答案。9 y& t. o- h0 j/ d
+ ]4 b. Z5 k$ \' E c f( W& Z
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
, S0 ^" C- v, X) t% Y 6 V' B9 H# h e- N
. N1 G# m4 [- d#### 关于点2:“过度抽象的陷阱” (评价:非常到位) s; V- n$ U: P1 j' p" G9 G
5 h9 {- j9 [, X9 A- GLM说:追求理论完美,忽略了VBA的脆弱性。0 B& P( _. |! Y1 S0 ^
4 ?' [6 F( R9 T- M, H2 l- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
" c1 [) ?( i' m8 h. ^ / r& M8 }+ O) n; N( `) ^3 _, u N
* J- O* L0 I4 f0 X
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
* j' ~9 ?3 Z. J( D/ S9 Y
$ s# h" B8 L* R/ U! y( J' Q( ^+ g9 L- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。( E. N$ b3 q9 B& c
) G" j. Z; K+ u$ c& a! L- 我的点评:这是最精彩的反思。3 U5 X4 r% v Z/ h" _
: i7 B7 N9 @7 r& F; E" k
- **计算相关系数(Correlation)的本质是向量运算**。公式是4 i' a' k% g; K& E4 C
* [* W, X: D8 \ _7 m$ ~+ G
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。$ Z8 h) A! [1 `; ^$ B) N
' J$ `7 P4 y, z9 V# ?4 \5 |, l
- 这需要的是两个对齐的序列(Array A 和 Array B)。
3 Y" {# r+ j9 ~6 M
- L" W j- u) m h# I - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
' Y3 L! |( B1 I
7 } r. E+ S' q% Z& @7 `
1 x, v* X I4 y- l3 z) x' A# J4 P### 3. 我对它的补充:它没意识到的“工程化”问题0 D/ f1 x& z2 q/ E4 P* s8 ^
/ f5 e* |1 p( S6 N' {GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
6 q3 [" l$ \5 |5 R' N2 Z* J3 d9 j& A) G4 x8 r" B% I
1. 环境依赖(Dependencies):
' N2 t) C; Y" l# i7 S( {% ?5 r/ l
4 v6 R( e, x) Q2 w. ]. F - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
, h$ O) ~ l+ ^4 C& Y8 x
. p. {% M6 i) ^( B - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
5 n% r4 J, Y' J. {% ~5 M- O7 C ) t5 R6 U5 m, k1 r7 U
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
% z0 Z% t/ i+ F2 w1 C, a( E 8 I5 ~, q! e# p
2. 调试难度:1 j0 Y( ]- v& Y/ d, {! j3 k/ P3 _
* }& I, o. }: r- `# Z. T
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。- q, |6 B' K5 ? e: n8 S Y' p
. W0 E% l4 j; f- G
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
; r% D! Z0 a4 L6 v% ]+ ~5 D
, @4 F& q7 ]) X9 ^1 e( j# b0 [( T& ]9 Y' x) U! S+ h
### 总结
* \' K+ j$ _' O6 h: j' F5 ^, ^- x9 [0 U9 Q. O
GLM的反思表明它已经理解了“场景决定架构”这一真理。6 T; s9 z6 y8 Q9 W0 ?& C T
& ]2 T; `( s1 d) s4 [9 e
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
$ x- n, z( q8 y. c# p1 B0 }, W ' u- U8 i# ^' {
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
. J/ u' x$ h& s
0 T" ~3 \: T }- \7 D* m- X! k) p- Z6 {1 S% a
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|