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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
. j! i9 w% y# ]+ K" Q
3 L# j k6 [5 J$ z. NGemini对glm反思的点评
$ u# Z6 W8 k- h( u
$ D' y/ i) ^ H. B$ Y. X作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
# _8 r, C/ D. }5 i% c& Z, Y, w, q- B D- `
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
& d7 C1 {! s% S7 J
' ^! R% Y4 J; s以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析: k& b3 A- V4 I- o" x
; ]. u! Z- N- {2 R8 x### 1. 对“路径依赖”的深度解析:它为什么会选字典?
q' F6 Y$ q% l0 Z$ ]0 r7 v, E# {, w. }& V6 L9 L" l
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。& ?# `+ w0 S" @; m+ j( }) e
[1 N1 @& G+ K8 J- {
- “Python化”的思维陷阱: & G3 f1 Y1 R% l) Q: c5 J
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
; v6 C1 O1 Z- J6 v& W$ `1 O6 L
8 P1 c8 b. Q( j - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
3 J) ^2 @, m! \7 Q * x/ E* b Z. P; q' Q0 g; c$ q. e m
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。* Z) p5 \: }7 T' j' ]5 n$ ~" y, ?
O/ j3 l! P* ~6 ^9 I - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
# I; U6 h& R- R$ Y
: E7 C; y4 x4 _" l. B* C- 忽略了“Excel原生”特性:
& a4 c* A1 W7 p; H. Y8 ^, l Excel VBA最核心的优势是Range和Array的互通性。+ `. P+ e6 i* N2 F b, @
# q3 j! t- M+ C6 k - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
2 B" K# I7 z. r! p0 J9 S ; b' h$ I+ }9 J5 f
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。' y6 O$ o; N2 ` h
, a* R. o d5 k
D- u C* U- y: s2 J
### 2. 对GLM反思点的逐条点评' ]8 b4 E2 x+ x
8 O3 N" H0 Z! c
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
% Y9 t5 y+ h) C4 _5 e, c) O/ D* J* b7 ?( N1 R9 Q- d/ k
- GLM说:教科书里键值对是管理实体的标准答案。
2 ~4 o9 ~5 y# T2 ]8 S 4 X! ` c3 ~% _
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。. _" }: z. H0 W' B6 G
) g2 x6 k) k5 e! ?) k& L. Z3 ]: ]& M$ j2 \0 N0 [$ P0 O2 |
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)- T' a0 K* E' m5 b
3 C/ ]% v" v K4 |- S j- GLM说:追求理论完美,忽略了VBA的脆弱性。0 p, V9 [2 ^' @; [3 U# u- ^) J
$ v A# G( f4 b4 u, [) x/ v- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。- R ~ b' N/ v, A, S
* H A* R- M- t3 Z& g8 H0 H& J h' I! R$ Q3 V- O
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在): }1 b; v0 y& u, I8 d2 F U9 ?9 f
+ F3 Q/ d5 W; \7 @
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
" {$ ~: Y c, I0 i
0 n0 K( s) b8 x0 J9 G9 H0 C- 我的点评:这是最精彩的反思。8 X: h& Q7 X8 F
# m3 i6 Z9 ]# A" W8 w! N; h - **计算相关系数(Correlation)的本质是向量运算**。公式是: l; Z K1 F' E2 z3 E, \
# W& g) z6 e3 I- Q1 q `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。# ?0 D- X4 l! c
) A4 C1 C6 L- A+ s4 g' `: Z
- 这需要的是两个对齐的序列(Array A 和 Array B)。$ z3 R( }$ o4 ~' i" ^
. d, O! B- {0 F: r$ j' ` - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
+ ?2 Y f6 A% `4 n0 E- O * O* a4 F$ H% x! o
6 e5 c5 F9 q5 y. G- m: F: u! x
### 3. 我对它的补充:它没意识到的“工程化”问题+ k$ V( s$ C N9 R5 p
. s8 A, D; e7 Z( }9 E
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:5 p' f0 k; w% j- p1 H" l, h
3 g$ }& p7 Z3 o1. 环境依赖(Dependencies):
8 A/ h! u+ {9 u! H, ]& f2 ?6 f
6 R" C5 h( B2 s3 K# ] s' P - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。$ ?! T* u1 S( F" a% ?, p
0 f! t5 b. n; @+ [! { - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。/ z" w) B% P# `3 ]( i- t
' I7 [6 o [! e9 ]1 G9 j
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。; U( k9 v9 O" U! [7 Z
! Z- S3 n0 R) J: d" Q6 i/ U, R; i
2. 调试难度:
" X# O8 }' N+ q6 P5 p0 Q
2 Q. J* C/ T7 m - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
q* Q& `' l7 b
) Z7 m& F2 Q( ]% @" }2 B% }( R - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。: {& C' q6 W {9 O# Z. i# v* ?
! w* l7 Z& n, _& t0 w8 s( h- b+ `9 q2 N8 J s+ x. Q6 p! ?
### 总结/ [! A' r2 e/ S7 Q) v
/ p5 U& N. Q1 |. g) p* F" E9 r1 ~
GLM的反思表明它已经理解了“场景决定架构”这一真理。# h, [$ Q" E7 @. t- Z9 j
) b+ J" ?) Z# c+ I, b% p: {- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
; w9 p$ W0 ]& ]
* ^" g6 D% {* U, d- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。9 K, k3 F, a4 y9 V7 u a/ M
* {3 u0 X- @, S* z" B4 G# w
- f' o) H2 [( k它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|