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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 , e2 X6 x/ l _3 h) O4 n s3 P
^& m4 }7 k+ r
Gemini对glm反思的点评 l2 @8 b+ u8 g, T) r# s
3 ?1 ]$ H$ O! G$ x+ `
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
; J4 P% b0 M- u& }4 K
' a( X* A4 u$ H6 {2 j它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
# o' S% @' e5 A5 t, }8 B) |
* ?2 K( n& }4 [# h2 M7 d以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
) {4 x" t1 G- _8 j, }) q+ G G/ l) c% r- B
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
0 o- O. ]* l2 y
^: N# o7 C+ {GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。/ D C5 g2 n6 C8 H) a- P, Z
1 {$ b% i2 ^1 J
- “Python化”的思维陷阱:
: c7 h9 ^; y4 c+ b 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
7 a% E# {2 p2 u+ S3 i6 u* Y U o
% x" W9 k) y9 }3 ?3 I2 D! F9 g - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。$ M* n. W+ p" C% c* [4 m. H
+ Z+ X2 M. k5 k& A
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
# l5 o7 z+ R2 c, s* z% Y
( _, i D- U6 z - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。& B' n1 F0 x7 E7 L# A C. U; ^
- Z% G7 ` C* ]0 E
- 忽略了“Excel原生”特性:
: E" o7 C% c4 L" N2 e Excel VBA最核心的优势是Range和Array的互通性。' W5 p9 X5 _% [3 f7 }
" x0 }$ m: B& W, a( p
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。4 O* v. N( P3 H- y3 T9 q$ P. R4 G
S' Z0 Y5 `5 h4 Y - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
1 G- N' U. l' Y, z( ~0 c
* p: D) i# ^ V# U$ _2 f( Q9 o9 K. n2 E
### 2. 对GLM反思点的逐条点评5 s: N, w' x' a8 X7 y6 |# e
4 M4 l! s' O F) R
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
, t# y# W7 j$ \6 x2 @8 W: D [5 L( h2 z1 `3 E6 r" v8 U
- GLM说:教科书里键值对是管理实体的标准答案。
! \+ c$ S. H @ 6 x5 g1 Y; x% F9 T
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
1 [; Q/ D) g" @ - u" M. k7 f2 }* Y2 h9 I" e2 J
) g) w7 p3 D$ R" Q
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
' j' U* C7 n+ Q1 b& \% G0 ^
# V$ [* x' \2 o: J- GLM说:追求理论完美,忽略了VBA的脆弱性。
: z) x+ m# R% z: V0 {7 Z/ o
* x, g9 J6 a6 o- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
: k$ c: ?- E) S. r3 r% a$ @ $ s0 L' j2 _( }) ]$ p0 L5 T' Q* K% o
5 v! i8 Y p" m2 v& z5 H
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)7 w: K3 B1 v+ t3 y3 Z
! B; H+ a" N+ i- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。" a* [9 V! X- c: Y0 o' h6 W
) i9 a/ c& Z3 I* J; |0 g7 j: B- 我的点评:这是最精彩的反思。
. ^8 `9 g! d: l/ } 2 s. M# |% e4 w% Z! y
- **计算相关系数(Correlation)的本质是向量运算**。公式是' v8 L* h- j! N( `1 |! o C
2 O" A, @( ?- G$ E$ U! u
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
4 @" T! \/ Y2 f: J% y+ ~ 4 O0 n6 n$ X9 Z4 p# ^
- 这需要的是两个对齐的序列(Array A 和 Array B)。
$ _; [% C p& {" c$ ^
5 C/ ]# O Z) |# f; {# v3 O - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。. ] |* @; I7 Y( o0 _9 [: `# m8 ^* Z# e
; f7 I( t9 ]6 _/ \ ^
, n0 } ^& I- m, x. B
### 3. 我对它的补充:它没意识到的“工程化”问题( h6 T- Z! W" u" W# b+ h4 F/ `8 {
3 L/ ~7 ?1 O: G1 G- k0 X% JGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:' e) E' Q+ h: F/ d. R$ O n7 m
" x) m6 G2 C0 F. X8 L1. 环境依赖(Dependencies):
( Q3 L3 S4 S8 A& \
/ V8 x* {# R# ` - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。+ Y* l8 o0 t+ s: m3 f5 U& I
6 X! D& K3 Y/ e, X* _% c - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
) v$ ?' `+ q! S+ e6 c
7 T2 u) k# p& P1 T7 s - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
" e7 q# J6 a0 e! {
" F# i8 O# \; b2. 调试难度:
3 O3 \4 h, o m/ B' s8 u; E 1 K4 ~9 h/ ^6 @! {5 J
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
* Z% T$ K$ Y, Q' h
, {( L, r5 X* p - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。8 Q2 y% B3 H/ T9 S/ L2 U
0 J8 v' m1 V7 C" U. }
. q5 T _4 D. w, o1 P, M, t2 F### 总结& I, G' Y9 { Y& L
5 I2 |/ S1 N4 A0 [8 l. O! k
GLM的反思表明它已经理解了“场景决定架构”这一真理。. C, c9 B" f5 d
& _7 _ {+ D& L% V, B- Q3 l# V- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。9 J9 _/ B9 c3 w+ K2 k; `6 g
" D- R, R: J0 ]+ R1 s4 P- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。8 F( a0 Y; ^1 }$ F
; ~ }/ B, j/ o
- W4 x0 |6 y# z2 z7 E
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|