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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 6 i7 r- ~8 N, t2 p; y$ C9 @- m( P
2 k: J+ }8 p0 t5 }2 p7 p S0 WGemini对glm反思的点评& d/ T$ C/ D8 T1 t% I, M5 A- p
W% W1 A' a% o作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
$ `' U) \: b& Z9 g. n1 O9 {# \; k( l4 U8 [; w; \. V
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。) d8 K2 F" i; N2 K( M3 S, L; F" L
5 r2 H4 R1 U, u7 X& u' A以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
5 h* Z1 ~; U5 i' k0 ?% {' L/ Z" f" w; R9 n( i
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
" c+ t+ S M* x2 Z, @
1 j* T d1 b+ O; AGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
0 \, g: k! b2 b0 j
/ O8 j8 `( V! d' H7 r0 V- “Python化”的思维陷阱:
: T8 A/ U. Z/ K. x0 D# k 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。, e) W3 m2 I0 \. v6 l
) n" w) y. p. h# f+ F1 s' [# S; s - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。 v& w6 z- N8 r$ t
0 T! Q4 O: g: O& B7 f) X) Q - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。 P! m+ c! V2 O: T+ P: _7 P
) e# U( v! f+ U) f2 n, W& Z - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
5 ]9 s, e. }8 N, ^" n2 u : t8 `! F/ m+ O% a2 G: l$ X: ~
- 忽略了“Excel原生”特性:
3 \6 u3 m! L. D3 y3 X% p* S Excel VBA最核心的优势是Range和Array的互通性。. m8 E- E Y$ k! z+ t
G% L8 S; k2 Z1 w, U! X
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
. I2 n! |- S; ^0 t % v# g6 }, W x) n: K5 E; z: l) T
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
1 I* e& k' ~9 p1 J; q$ t . P8 o, `" Y5 q; R( C" f+ L
# x+ n, X( o4 C$ `### 2. 对GLM反思点的逐条点评7 t" b5 S9 e, [8 ^) t8 E# C" s
2 t# K- q% L/ k' T6 i1 _
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
9 H7 J3 B* g8 e9 P/ `6 s
2 D B5 d$ N9 i; F9 k- GLM说:教科书里键值对是管理实体的标准答案。& ?1 S* \1 K: T
0 B/ k k# F. Z; _5 v9 z( y$ t- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
: s! v& L8 e; T& ~4 m " _6 ]( C$ B' m+ ]
, v/ C" t0 e! @$ Q! I F# A" T
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
+ K7 x) x. b& y2 F" V
) B+ U" i! ~8 u+ E3 t6 H4 u1 c- GLM说:追求理论完美,忽略了VBA的脆弱性。 w8 l, p% M' W0 x
/ R6 M( A3 W" ?, f7 w/ \& A- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。 Z/ Q5 D @: p" W- F, @% ? |5 d
! y' @2 t7 A1 e- s9 O! k; k" v5 e$ Q/ f" X. s
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)/ x" F+ Y: G% `" ]
4 ?8 D1 t; F; i) f8 @) ~& r/ q- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。( ^" [% Z+ d& B8 u/ @
( w7 f5 _: G# j s6 a2 o% \/ N" P) {
- 我的点评:这是最精彩的反思。2 a( u: N, M! b2 W8 L
/ ^: V- @9 o# B, U+ z. W1 g' L( a - **计算相关系数(Correlation)的本质是向量运算**。公式是
# a I* K0 e# t6 N0 V4 t, _
4 q" z5 j& W1 ~3 U% B `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
9 ~- j9 {' r$ G) l 2 u% k" s/ N3 f
- 这需要的是两个对齐的序列(Array A 和 Array B)。3 m* _; o1 }+ ?* w
" N5 B. R. v- s - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。* \0 E5 _ U8 E4 V# J
1 T( A+ A o# c1 j+ _
0 E$ i) d* m) u9 j0 S& }### 3. 我对它的补充:它没意识到的“工程化”问题
2 Y+ g" k" U* @6 b8 f" {' p/ n; w; c0 s' A8 L( g( V
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:/ z* ]* h T% \# ^( R
% ~9 V2 u+ l. x0 X, L o1. 环境依赖(Dependencies):
& ?+ A2 K( q! @$ r! \
. S& I' z7 u% u4 | - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
$ y* G! Y* X# _5 M* y# y) ^ k0 {# q
" `$ Y# d. @; p# u) h2 T% { - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。8 B) m( J9 r, d# C
, }* g" e4 X0 G2 M
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。. A' `; B4 R" b9 b/ \- B( }
) a3 M' w$ N( U+ ]
2. 调试难度:6 }0 F4 G3 X% M2 b9 K, `
`/ {, @% c* I- \9 m2 K3 j3 g
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。/ Z9 }3 f8 j4 v1 Y7 k% L: S
( B% r- O" ]& G! _ - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
3 T6 }; s- B2 ^7 P/ U, ^ 4 W# O0 T+ X" m, q+ C
% y: G" ~# x0 g3 X: _### 总结5 m, P) V" K; D2 g5 ~( u
# x3 r- H0 ?" @, V7 a7 t X3 z \
GLM的反思表明它已经理解了“场景决定架构”这一真理。
9 O, l2 k4 @! E$ ~* n
7 i" y9 Z H8 ^9 _' g% I- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
: Z9 U# u: L" g; H
. z/ z" \: F K- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。. G5 C7 {/ }, _5 X+ ?+ g8 v
# j' W. Q h2 ~. D" a% T3 V6 A. m
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|