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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
& R, R' o: N: d* e- c
. b( o- w2 r' W! ^* v9 o1 J# KGemini对glm反思的点评
$ E! Y* ^9 N5 Y( ^& D6 d4 g6 O/ J+ R+ d1 {
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
# @0 V7 X7 l4 c; t ]. @2 Z( ?" }, t: q" f% m; o1 ^
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
* ]' a' v; L! o$ j+ B; t* [
: P8 ~, ^, A9 |+ G以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
3 j, S) i, n" c' S$ E' O. I( i" E% N1 C+ J X
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
" ^ s& D+ ~4 u6 a4 n& M% ^; x- q* [: x/ N6 A( G" d6 i
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
) @8 p' Z6 H7 }
( P- G) O6 d4 A4 s! o2 n- “Python化”的思维陷阱:
! x T) \, t& F& k3 @ f 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。; p( J6 i( y* W
% a, [) n5 @+ X) Y - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。3 |- M$ Y5 L4 ~3 n. Z
4 B- M; g/ X0 P# B+ I+ Q - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
4 |0 j' \5 C' _
' H3 w" Q) ]# S$ n, K - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。+ [- Q( E- L4 x
: V% l) Q* u5 A
- 忽略了“Excel原生”特性: 9 ]% Y$ p6 g# J j2 U9 a) S
Excel VBA最核心的优势是Range和Array的互通性。/ n) C+ \$ Q, o5 U1 ?& }, t: x
8 l; x0 m% x' V3 U2 W5 r - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
5 T. n1 q+ Z8 f4 H, \! |
) H9 ?. B4 e% E3 S/ a - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。! B' L# P: ?- w4 @* p( X# ]: n
1 I6 i+ b) z/ ~" _5 l0 C' C/ K1 N
: r3 P6 k B( L1 C7 u: t/ ^7 M( M% N) k
### 2. 对GLM反思点的逐条点评
% b7 |1 Q1 U6 ^9 L7 x3 D/ _7 f$ |3 C3 `& M
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
6 y* d- o, u' i7 s# R/ i
' J1 `/ U( Y. x6 K0 Z) l- GLM说:教科书里键值对是管理实体的标准答案。0 ]1 ^# E0 h' q' k/ B# P5 K
* n2 c( C( Y7 ^! p
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
. b! F7 ]2 F! Z9 ?' z4 Q1 d/ i! N
: t& n3 P* ]8 u1 l3 n
0 e S9 A8 _- v6 ?$ w# ~4 e2 R#### 关于点2:“过度抽象的陷阱” (评价:非常到位), }" T, @, I4 K# M' |
8 z! H3 N/ S: H. I2 p
- GLM说:追求理论完美,忽略了VBA的脆弱性。3 B0 w i5 I2 u2 l& }$ S- n
9 m M: X: R1 i$ c( [
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。& `' S5 f0 G. M4 Y# i' v4 v
4 ]- F3 R) x. Q* w6 K
% `9 }6 D. c/ }% S8 ?! m) Q#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
, |5 o' h3 [2 k3 z4 W4 H; F/ s; D; J5 j& M0 a
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
1 g+ k& w7 v, a$ x0 T , C- Y. @* j) A- G
- 我的点评:这是最精彩的反思。' v1 m3 o8 v% @
0 p! X: u9 @2 Z. ^
- **计算相关系数(Correlation)的本质是向量运算**。公式是
2 E+ A- J; [& v2 W% }3 y8 U8 H& i( x
' I. W' w3 m9 h3 ^ `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
: y: ?* E4 m5 x2 A
& e8 w. P# @/ T - 这需要的是两个对齐的序列(Array A 和 Array B)。. m$ A* B+ ^; C ]# c. O- u
# h7 D+ `; Q8 E; t8 t4 s- b - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。. L; m6 E5 J4 a/ L0 a4 X
( R9 w) p v7 r
3 U2 n/ A3 N# m* [### 3. 我对它的补充:它没意识到的“工程化”问题' ]4 U8 g4 i0 W! v
5 t, k1 r! l2 J) lGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
) ^2 _( e2 e+ V; n0 X6 z- m# Y' t' s, C; x' U, Q$ t9 X X
1. 环境依赖(Dependencies):, ?6 _- O3 c9 l0 P$ q d
& X8 {8 t9 v) i
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
6 i6 \7 {7 q& @3 }
7 L% F) V% o7 a' l" T! Y* ?3 h - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。( q' ?6 }8 n7 S) |. _/ i i
X0 u0 g$ m j6 A; D - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。- l0 z- ]* P* c
H( U5 q+ F! ^% [/ M* `& F y# C4 ~# ~
2. 调试难度:$ S. F7 e6 I' T& m
1 D0 N( M2 K4 D2 {' i o6 H
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。' k! i" a* [" @9 L6 W+ x
2 {2 E0 I+ V# k0 {$ R0 s. Z, [
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
% E; [5 ^& f% t+ k / A: A! f) Z5 f$ Y
9 U/ l1 U% r: }' l; p) c/ r### 总结
( t+ G! g. o* O2 O
" [) ^ h0 `. z- jGLM的反思表明它已经理解了“场景决定架构”这一真理。$ K0 f9 ~: L. h; l- p' q: j3 E
- e% H G! c9 I- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。9 @2 I1 y6 u6 ~# X, X5 F3 c! L# s3 n7 W& P
# o) o- O0 p: c3 r2 w* c
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。- `4 h8 ]7 y* [! V, z: g
0 m& O, O$ A" ?7 e
; m- L( @8 \% S: _/ {
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|