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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
5 u% U; S9 E, ^0 L" B% L* C' r' s* u" x
- j. q5 J' s( b1 gGemini对glm反思的点评
( j1 f* \7 H$ {+ K* j! A) A# }; i- P3 ~! L; Y4 a1 S7 r7 z
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。9 |5 c: M" S7 J
3 S4 s% ]1 I- w! r4 D N它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。# o' O0 \2 e; u
5 D9 x, _7 R) T7 B5 g
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析: _+ r5 E3 @7 ]8 n
\8 D0 S" G, `* L: f
### 1. 对“路径依赖”的深度解析:它为什么会选字典?) y0 T7 }. Y; ]! c
A1 Z+ ? d4 C1 dGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。. G% N2 ~- n* @- z5 q% j+ T4 e
7 \5 P8 x, x( M/ ?8 R, }- “Python化”的思维陷阱: $ |8 C* v: Z/ u. W: Y5 ^9 P+ J7 O9 W
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
% O6 \. l4 |- Q8 C2 r0 i5 ~$ J 1 q: \7 f5 J, v- H4 O
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
7 D) H. V, s8 W" `% F
& }/ N& p* J0 ~5 ~- O - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。* x, Z8 W7 V' d. Q0 |
" {# V# j) }8 C) I' J R7 ~
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。8 _0 g2 L4 ]( {) j$ R
4 c7 M6 |) A, s: v! C/ S, n- 忽略了“Excel原生”特性:
1 ^2 Z) Z+ _# R: b Excel VBA最核心的优势是Range和Array的互通性。2 [0 T# g7 S/ @3 L' a
! ^. {' j g$ B: w
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。7 n+ t H6 [2 O5 i) W2 V) M
5 m, }- { q6 z$ F - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
# K6 D$ _. J% o( } b% `6 R4 \
8 K' \8 |0 W ^* u7 V1 f# u# ^/ S: I2 D
### 2. 对GLM反思点的逐条点评
2 b+ s! X2 P- u' \4 G0 e: }1 c5 U! z- q" ?
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
; `! \' ?4 F9 N1 Y" e2 d
1 I' V0 d; v' D- GLM说:教科书里键值对是管理实体的标准答案。; _2 K/ o' H$ I
: z: A+ }2 q8 |+ Q- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
6 j1 D* {3 e. X7 O9 f) X
; y" G8 x, R: ]" k
5 Y( y9 v: K5 |, V: s#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
5 B$ ~0 z, q9 S4 A7 O" ], P* B3 ^( n' ?' j) q$ }! c9 O7 ]
- GLM说:追求理论完美,忽略了VBA的脆弱性。5 v3 @! N1 e5 ?# s5 ~
& E& Q6 q- e. _. g) l# U N# C% s
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
. r+ V1 x% F' N2 [ _! s& q" E/ Q
( ^" C" ]" ]' d1 ]% B
! M6 D1 Q9 V9 z' t1 v4 V#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
) w+ |. c2 G6 ]9 y7 F* u% [* d
' ?4 M9 m7 [, { R2 [& r- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
: P# o% ~$ h8 ?# R ! {0 ~9 K/ n) U! F
- 我的点评:这是最精彩的反思。) W3 g, D& K/ N
u+ w+ a) a0 {6 ^1 f. ]
- **计算相关系数(Correlation)的本质是向量运算**。公式是+ T7 e8 ^4 t9 N( ?. U6 ~2 L
# G8 X$ X1 @7 [2 m& h4 w9 y
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
/ N* d* w0 O: ~+ t6 I1 J" O, T/ Q
! e! k0 u* P6 o* q7 o0 Q- n - 这需要的是两个对齐的序列(Array A 和 Array B)。' G: c* S' I: j
4 N( K: Y- [) U+ j - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。1 s* _ U3 n% O- w1 S0 V4 I
1 p* x" J: |/ F: `$ W
( K$ J9 d, }4 k9 G# f& n### 3. 我对它的补充:它没意识到的“工程化”问题
8 o1 U" J4 X# R. B8 l8 J) J
" Y {1 t7 d$ V9 |7 o- _% MGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:! z, D4 y9 |( w6 d
0 `! r* c7 _' W4 l! J* T ]% w1. 环境依赖(Dependencies): v' H3 J0 m; ]
; }% D' L/ t' W' @& C u7 c
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。8 D+ I# z' m' `( t) s
0 J; q8 e- V$ g
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。( v; e1 u- Y! \( F
n: n% J8 C6 F# Y, L
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。: i6 a' z. C4 G! D1 F
" V1 m8 {# v" t; q, P( w
2. 调试难度:
+ t* {9 l) ]! j' G4 z8 B- l/ T4 p0 z8 y 0 J4 z4 s& T% n- ~5 e2 X1 ~; ]% R
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。9 x$ }3 \4 w8 f
; G8 s2 ?. a0 q+ ?9 t6 K( D; } - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。* z, a" I" v8 k1 Y
8 G& j B$ q1 E1 B
0 l# ? [4 U0 _4 G6 g/ ?7 W### 总结' o5 q6 K. O5 y+ G
7 ]) b( K0 x' V; f. n- @2 f
GLM的反思表明它已经理解了“场景决定架构”这一真理。% X8 H4 e3 c2 H, p* U8 I
' t' ^* x2 [9 Q
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。. B; b7 c# z9 ~+ q
7 u9 V: l; `% [+ a: B- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。- A) M3 b# ?1 g" n9 f& A! n& B; I/ ~
5 Z( q# p1 I, I. I/ E3 z+ R: z
' R% a) l' q9 b7 ]8 P
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|