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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 ( T( A* r3 @( r# a4 o
( C' U" p$ D( Y! f# A/ N: n
Gemini对glm反思的点评
' H' W: f% }/ P$ ~+ u! m( D w J, c6 ^
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
O' t: n1 x& D9 s! @1 A% [; ]) [, a% a/ k, k
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
. I& m7 s" P0 ~0 {
6 Q! k/ H7 E; Q$ U I& x$ e以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
- L1 v5 [- P* ^* C. o! |( R% u
# H: o4 E! ], ~( V* O4 ~" e7 W/ x### 1. 对“路径依赖”的深度解析:它为什么会选字典?
6 w/ V3 T- J1 ^. j7 L
8 `: U+ n J5 z L4 o, DGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
# x" q) `6 @) R3 k+ V
t Z, j- ~7 a6 P! v2 Y+ B7 w- “Python化”的思维陷阱: - T: s; k, l) v8 _
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
2 ?) i4 Y3 I o6 m2 Y; I, v
. N! n; {+ V) z5 P# g - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
/ f3 n* \3 G! r% v% ^% J
" ~" J+ B8 D! U8 j - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。# G# R4 p* a" E, {( v
7 s, @* w9 G! i+ k - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
; l9 P8 q' ~- R6 |0 R' j/ c) D % h9 j; T0 c& J' k
- 忽略了“Excel原生”特性: $ o3 i- X, O+ B) k9 s+ H/ F
Excel VBA最核心的优势是Range和Array的互通性。
* y$ ]& n. d" i5 X. e# o& \, o
7 R o$ O7 [! g - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
" A# I4 t( v! T8 P ' ?) N: h' v# e2 x
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
5 `. F: G/ o, v
" v2 [2 p. r- T. N# p: x$ y& q, c; v, y6 Y9 B% Z. z
### 2. 对GLM反思点的逐条点评
& p# C) z5 s' l9 n( {7 c+ P9 b T
( S3 j$ l$ F% | @#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
$ j1 v# N% j- @& _3 h
# L* L7 k& l8 i/ b8 z7 c- GLM说:教科书里键值对是管理实体的标准答案。6 M. `+ P* s8 v* ?/ f8 v
2 f* r( m* ~ z- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
! W% }* C- q* A' r 7 R- [. Z. B9 Z% n& ^
d9 D& \$ b X# i" x3 U# e#### 关于点2:“过度抽象的陷阱” (评价:非常到位)4 t* d) W G n8 t: \' j
) a: t8 c* v6 B4 h& A+ Q
- GLM说:追求理论完美,忽略了VBA的脆弱性。) u4 c6 c! ]; B' p
1 n6 ?9 P/ U' ^) w& }; R3 h- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。& x0 c; A) ~) H% Q5 U1 S1 r
8 J2 @9 x$ c& Z6 o. [
# u) s5 z% s! K9 t. M! U; ~#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)/ g1 r$ w: s, ~+ w) J5 h
! g" H% I4 e7 R2 C
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。+ e& r, ~* J9 d& f6 d
! w7 J7 V( b5 l5 X2 v- 我的点评:这是最精彩的反思。8 w# w/ W/ x1 o$ l
5 {( D- [5 Y8 r0 N) Y- @ - **计算相关系数(Correlation)的本质是向量运算**。公式是 s6 r/ a+ b6 m* T& R! k
. E$ [, Y, ^8 u& [- R
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。( n% ?. l" J. p6 k g3 }; X3 s
# l8 x: }3 B) s/ F - 这需要的是两个对齐的序列(Array A 和 Array B)。
n% `3 o9 ]7 d# f- g& X
! [' H8 F( I p! y) d, u - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
' x5 y. q) U! E% L6 K5 |* ~
7 @6 K' |' f! Y# t. D) ]! _4 u2 v# i6 J/ q1 u0 x) H
### 3. 我对它的补充:它没意识到的“工程化”问题# n9 J& d. L/ |2 c4 | e% X! C0 a! ~
. ^4 J" m }- {8 E6 r' a/ f! i
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
) j3 B1 {% @% ?
1 i! c( Z0 b3 c6 o1. 环境依赖(Dependencies):$ k- `; c c0 r- U
' p7 L1 d- o, G, x, j0 y
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。5 i% g6 N, Y. q; h! U
8 V) M( n% p# b1 l: ~2 Z, Y; q
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
U' R3 l$ N8 }" e _ " H2 w0 Y" J; ~# {/ a$ v; W0 l
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。% O# w0 m. W1 r; a* x/ h8 K/ s6 g/ U
9 t3 u7 h$ q$ [/ Z% y$ j% x2 p2. 调试难度:
D. Q( O: l5 l, w) T2 _
7 {( ~% m8 j% s7 P6 s - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。5 d# g3 X% Y# x
9 q1 I" W1 b2 Z7 ^4 |
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
2 N% X3 L+ X; E
% U* b' G: Z6 K' r5 m) g5 g6 Y1 r( r, {$ P% E" D5 M- q
### 总结
( f. t4 H! L# @8 J% ?2 [
1 p0 {4 V+ X: l* _2 [: ~' lGLM的反思表明它已经理解了“场景决定架构”这一真理。! `4 \! j5 a6 s" m' t, H
. T3 h$ {8 N* ?
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。" {4 K: l( |( Y* @3 x2 i- Q( T
8 p. F c$ C# v
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。) N: F3 i) v3 d
$ C5 K5 ^% T2 j. d
1 w. ^1 i5 r" n; C' F; ]8 l它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|