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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 2 U- T4 ]0 o0 L9 H2 l
7 H0 Q9 g3 m0 a3 x; v& [3 G$ Y" \
Gemini对glm反思的点评
& r% T# m7 |# A1 p
& A+ ~+ x- Y6 F4 Q. R* H. c作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。, i& h0 s9 l+ ~* ?0 V8 q& H
- W" h& P3 U/ t$ F0 I/ K它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。; _& I1 ]% w! Y& n0 J
+ T: m/ j' N2 Q2 a+ F! d
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
' `% H& G+ ~! T# U, ?. J4 f
m$ |% m( Q9 l### 1. 对“路径依赖”的深度解析:它为什么会选字典?; J8 x2 x& ?# x8 z. ?% G& k/ w ]
{8 l! Y% N8 {& ^' y4 A) \GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。8 b1 [0 ~9 M# [1 o3 Q$ J, P
, ]5 u+ N% O, R; Q
- “Python化”的思维陷阱:
: }7 D: [3 I& ~' ?% e1 I 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
7 @, B+ t4 b: z0 s; ^+ S3 U1 z . F/ O/ S) K" g' i9 i& d5 j
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
7 q- \7 x; M4 I, A; K" j/ L5 u3 C
# `2 e0 c/ n, \; ^2 [# W - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
: S* M3 v! U& V: |" J- {
# }1 ]( M9 N9 x# ? - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。! ?- t6 e4 t% u
' s1 f A( U9 T0 G9 P8 h- 忽略了“Excel原生”特性: 8 r6 x' ~4 [* r1 ?% i# O5 C: C
Excel VBA最核心的优势是Range和Array的互通性。+ }) x8 s3 C/ y& E8 W0 t$ n7 |
9 W6 V0 n, `# n; b: n- }. g - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。% \2 t( d {# i0 m( v! L* t7 J1 {
6 N4 r! ^3 m2 @/ B
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
5 n; c, y& s& f8 m5 N' U* ?) M ' i. ?, n) W- L( U: e% C
7 j2 J- R4 b4 \6 C+ J. t& R X### 2. 对GLM反思点的逐条点评
$ g" u1 p' v& m) J3 P: R
0 x2 |/ J; j/ r5 a1 V2 P+ l! G#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)6 ^, A, D" D, q b9 F3 c
7 w. p G e3 _' g
- GLM说:教科书里键值对是管理实体的标准答案。
# Y. a; k" f( ]8 c$ P
5 G( K) z, e, Q/ U% J2 [- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。& T: T# L% H p2 _
! _3 d- z' f4 V9 e
" r% S* U# ]3 u% v
#### 关于点2:“过度抽象的陷阱” (评价:非常到位), E7 V/ N$ b& [2 I
- D! J6 z2 x; U- GLM说:追求理论完美,忽略了VBA的脆弱性。
9 {1 c3 y5 V5 f
0 m; y4 @! I" u) ?/ j- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。; `2 v5 @% @1 u# U3 V. M7 M5 t
9 c5 k0 e [: F8 T6 b! E" f! s: U" b) t1 S `3 x: R. E% s
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
" ~/ D3 a. R2 K0 q. R2 ~
: x- F* k; z) j) n N- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
; [6 \ D& i% I% i1 z$ E5 s
$ l( y! U' k9 P: v% X) B+ P- 我的点评:这是最精彩的反思。
8 }4 x" }- r9 A% U$ e
) K) z; t/ C# v C2 \" x0 d - **计算相关系数(Correlation)的本质是向量运算**。公式是5 Y7 W8 `; o) Z4 q4 D3 T
9 S+ T/ {1 j3 l! G3 l `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
4 @& O# q7 _# y" p A4 | ! u0 R: I& N# j( e! B! c+ `6 y8 b
- 这需要的是两个对齐的序列(Array A 和 Array B)。. ?6 M) C! H* i8 f+ \* |! k
# I; @: _% ~0 n0 n. O
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
% U3 D! ]! D" R
# H/ r" R5 d( ?; P+ D
6 ^0 F, j; T: |1 @### 3. 我对它的补充:它没意识到的“工程化”问题
: R1 |( J, W# o. i" P3 F9 t' U2 z1 R \% ~, N
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:8 R; K Y6 \) _" ^4 T2 e! g
* x& n' n6 X R' O$ @! Z1. 环境依赖(Dependencies):6 L; M$ U& Z B2 p. {
$ t* I Y8 g. y4 X7 s% c
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。0 r1 N9 }0 f4 R
" \ f0 r& X7 w- ]. Y, V3 L - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
$ j2 n; b, F9 O0 a
2 b4 F; f, P5 {9 a# S - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。1 R# }5 u. C- X, ?0 Q
; \% x% e& h- s. x# I
2. 调试难度:
6 C9 C1 S) Y2 T, l* e `: e
, O% c) @& |. z. M3 L+ B - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。' N. g5 c) L/ B
S, C1 w9 L0 E6 h5 M* h9 i - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
/ D2 u0 g$ m( E g+ H1 N% M2 W
$ I# \; `: x6 S. d$ X
7 `4 q, \$ X( N9 ]( m! H8 {9 [& o# O. d) @### 总结6 Q+ u( {4 A6 S. k: p4 h
9 J2 M: ?$ l4 _) V6 pGLM的反思表明它已经理解了“场景决定架构”这一真理。2 i. n2 K8 U& V
+ x( P' U6 Z5 r5 \1 x- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。. Q) K2 C/ b* s' ~ v) e
) b A, L4 i; ?$ y3 T
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
9 l) B- B, E B. {
& g' |; l4 c$ p. N$ ]5 Y/ I) l# T# J
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|