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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
; I/ R7 q- t% r y; R6 g* X
) I8 ^- n- D& K, f/ Z" EGemini对glm反思的点评3 V# c* b3 x7 i l4 \( U
f! \7 \# f; [; X
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。* \9 ]6 L3 q! t; X( @
( A- a1 K' c# I9 @4 t- ?
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。! C) }- ]( g. B" C. u- M
3 [: N- U! B8 e7 [0 @5 n% T
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:$ x* [; F) l: D+ h
3 n c2 P$ N+ b3 M# L/ s
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
* Z! X7 t; Y4 Y* ~( T, A8 S- |; ~& R- ^
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
7 u* e& v' T8 [* Z
- U6 Z; ~: F$ ^8 d6 c- “Python化”的思维陷阱: / d# p# d9 y& f' L
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。# V2 v: g, B. a& Q5 I9 f8 X8 |5 e' z8 S
: j1 _! X* [) \2 `3 C& _2 `1 `2 O - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
! o) _$ F! V9 Y3 \, k+ d * h4 F# L0 O( n9 m* p* w8 q
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。. o6 p3 u u3 h, |# a: t- w
+ `$ n) ^5 Y' [( X6 n, q+ T# G - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。: l4 t+ K% j8 s* L. P: Y, ]; n
3 X& g2 A% T2 r
- 忽略了“Excel原生”特性:
6 O+ W0 K7 Q ?7 S- o1 Y, L Excel VBA最核心的优势是Range和Array的互通性。 q* s/ {, K; Z. u$ _
% ?& Y- Y' ~: X) S
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。# e) O$ g( w$ S1 p- b
1 I' G7 |* Q1 I1 Y+ N2 m
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。* }7 t1 V4 h5 H" t
; k# N0 b3 S- c" R) O3 D$ U* \3 u( Z4 I+ L+ A6 B; a) Z. r
### 2. 对GLM反思点的逐条点评
2 k; n$ P+ l4 f; V! G9 V! r
`0 k9 A8 o v( { r# E; Q#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
1 A8 G7 H& P: X2 E9 f- R; F/ l. F0 t0 s' M' k. g! w( @+ x6 e
- GLM说:教科书里键值对是管理实体的标准答案。
5 W. A1 I% ?; ?: Q- h8 ^1 s
/ Z3 i+ r3 q/ V8 r; T1 `! W! S( r- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
! i( q. y9 x2 B: i$ [ 5 r' n) v3 e% H3 _
; L$ j, E8 m. [- X$ ~' D5 x/ P3 y5 U
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
, H3 N/ d! N, ]: K( s% g# ]6 o7 _& d9 u' E! C9 u- B/ S
- GLM说:追求理论完美,忽略了VBA的脆弱性。1 u6 D1 O- [# \3 N9 F$ w' j8 I
: f; ^# L4 Z: t* X3 [' V
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。, t6 Q$ \% |# L, ~9 f3 f% Z, U
8 Z" \/ q3 Y. M) j. S0 T
. |; l9 L$ O* C7 w
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在): i( A8 m9 u- E% t# C& r* v
, a7 y g" t+ m8 z {! J. @
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。) L5 `/ v- d6 a. y- q
1 d( K- Y7 H) Z. C6 P3 I7 m3 n( c- 我的点评:这是最精彩的反思。7 W5 N+ R" I) F2 x
0 A0 l- V- Y' i! _
- **计算相关系数(Correlation)的本质是向量运算**。公式是. c+ I$ }% o$ H! ^5 z& }+ R9 t( A
6 ?' V' ^- g( r
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
6 w# C2 X5 d- P, @5 Q 5 g9 R8 Q9 r. s
- 这需要的是两个对齐的序列(Array A 和 Array B)。" `5 r5 @( ^( B
8 `+ R8 y5 s n/ [9 \) S% t - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
. {' V# c! p! k& [$ }% w2 @ 9 c0 m0 o% F) r) s: W
# E( E8 k- Z& |+ n" ?4 L
### 3. 我对它的补充:它没意识到的“工程化”问题
( R1 x' k. M$ C7 F5 C
/ o) n/ y0 K# X% U2 }8 B' uGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
: Q! [5 w$ y) K" a D
+ x: \( b; }9 O+ a! v7 \1. 环境依赖(Dependencies):% J. x# k* W3 W. s5 q
" y! |, V5 [* h2 x1 k6 X
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
/ O5 R. ]% z }5 R: ?) K * Y7 s- p, n9 a" ?
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。9 Z! B% U/ U( M4 E
% h. ^, W1 r4 ^1 P! k& j - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
( w" {1 H6 _' j: d8 _& j" D z
. O; [9 ~4 G7 m- s! U' A% Z2. 调试难度:
! A: t. f. l8 i 2 M* i8 D7 ?" t/ z: L
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。3 O: U9 r! e0 @# g2 ]7 G
: d$ g; G$ @1 q: Y& F" K) h - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
, a9 x. l* V% i; I7 z& ?' L4 y
2 M$ U& A$ X1 Y# L) @* R. K: \9 _* V) p% B' m5 L& n
### 总结1 m6 {! M7 c& g1 b8 u. d% w
7 X: d- A( {: u* } x, y4 v
GLM的反思表明它已经理解了“场景决定架构”这一真理。7 F0 ]( ?& u N1 O2 D }9 }
5 e/ X2 Q; c, A O& T- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
g% `( c1 G6 Q9 G* B) ^ x
8 w6 ]7 f7 B$ N' Y9 U+ s- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。( W) h8 r+ G9 j- l
* S: i( b0 J- Q. j
% g$ n* J% ], L x& b它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|