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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 . `0 M7 l7 G* f2 ^: p" D# J' y+ \
9 y2 Z8 O0 M0 U3 Q# x' ~% LGemini对glm反思的点评
& @' I! J0 ~3 d
: B+ X- G! R" l9 s6 d作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。6 q8 [+ z* K& }! Y
- R* O) A4 D" f4 l* Z它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。% b" ?/ y7 L9 L/ b9 q: v" D4 m
3 h; `& M. A( ^4 i4 v2 |% c
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
6 H0 z$ N" b" M# }& n/ i. E9 M, |- M5 C# Z- Q$ T. e
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
1 A6 o1 t, V9 R& d7 J" w2 J, O: m4 _
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。4 [9 {. q8 J, `; I. L5 \- a7 Y4 e+ o0 p$ y
# k$ n# ^- C, A( D1 f- “Python化”的思维陷阱: / c& r+ |5 g7 w5 Y
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。4 I" A! c p4 b. x5 `4 L" N" }' r
9 K4 m& v2 G' j+ r: b% J1 L4 [. D - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
+ \! K5 V& h% C* B: M# m( |( K! l
8 K) y- {$ |) u& h3 ` - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。 J. R+ l2 i' h, r( r5 w. m- t
. K8 N# l5 w8 L - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。! _' T1 q3 g, Q! I9 {0 S- p( O
3 i8 {, B; ]6 j' A
- 忽略了“Excel原生”特性: - x: O" v8 R4 @6 B5 g3 ]; t% n/ E: _
Excel VBA最核心的优势是Range和Array的互通性。
& w! v0 \) C5 E$ r; c, M' j - b5 ]0 q% X+ O9 b
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
* t5 a+ V5 O6 x: |9 T" a
3 g+ e% `+ w. L, Z: @* S; e# s - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。: p( V' z: W0 |* ~
* D* J4 e' j& @9 _ \" [
" C M' `$ r5 a### 2. 对GLM反思点的逐条点评/ \$ E, @% m7 L7 }& S
' ?; x0 e6 d4 S; |# j" L( H
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
$ d7 ^% B$ \. _% B0 \
2 `3 |; E$ f: [' H n3 C# F0 v- GLM说:教科书里键值对是管理实体的标准答案。9 t& c8 b8 L7 x J! ^- n( Y
$ V: V0 B2 `# ` I+ ?# q' u
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。2 ^: V2 Q/ q1 ?5 K
$ ]5 p3 v3 [+ X
/ A: i8 X- h$ o5 m2 u
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
/ j) N0 R O/ ^; `/ h# D
1 K0 m; m) |/ w) m- GLM说:追求理论完美,忽略了VBA的脆弱性。" h2 L. v2 O! P
% l( D4 i/ \' }6 k5 i# A- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
* {: x; u( i4 e# m( u v
9 d$ F% A/ p; a$ s7 @" U% O" m/ D; K! p# M) I1 s# d' Y1 q( h1 `
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
# t. _$ L& h8 B7 V: K* @( A
1 L2 X3 f F u" N& w/ K5 y- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。3 G# K8 `6 a/ r( H8 d; ?( g; P
/ V: _& v( n: B" c, J. G: j. C
- 我的点评:这是最精彩的反思。
3 @+ y b% l- ?( v
5 |" s8 \$ |' Z, F/ Q$ k - **计算相关系数(Correlation)的本质是向量运算**。公式是$ Y1 {( y: |: v q$ c% u
# J/ L0 `2 G& o* [7 i- P
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
6 F J8 d }- v" [8 x9 r 4 f8 E: [/ I5 @9 m, B# d
- 这需要的是两个对齐的序列(Array A 和 Array B)。$ J" i; S- ~3 t6 n- n
* V: x m3 Q4 j, H - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
& |+ G5 }+ D# T ; d9 _% H. t: s4 @3 _* E! v. ^
" w. X: n- x1 I# Z) Z. ^, v T### 3. 我对它的补充:它没意识到的“工程化”问题% ~9 W5 O; U) z/ b
: i. F; w, h$ Q1 H, p
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:8 F/ {% S4 [1 j! z# E1 v5 z+ Z
' W |& ?( O; ~, s; _
1. 环境依赖(Dependencies):. `2 E8 B* m- w* y8 s9 C
; N& T% }/ b. e5 D: x
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。( \/ a4 e5 Y7 A0 Y9 C% U
6 Y1 z1 ~# J$ }8 f$ \! q9 l - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
+ _) K) Y1 m1 I, C$ s ! U ?, q/ }- y( [( \$ N9 I, ]
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。; J! V, ]! g9 r/ v3 G8 X# m' Z
% _/ H7 K7 a: P2. 调试难度:! @. K4 T" B/ Q
! X \4 \9 z& b9 v0 ^/ {7 | - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。 i/ ^1 \ Y0 P, h# v/ N9 [' e7 a
\+ }; ?+ V8 S& }" @7 P - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。5 M* i) z6 G$ g( ]
3 h( I% W8 j+ ~$ e3 H" i# q
9 o0 k+ u6 W6 t/ d$ k### 总结
$ c' Y& q# B8 P: g, z8 p, W' C2 u+ P4 y( D6 _2 w, b
GLM的反思表明它已经理解了“场景决定架构”这一真理。
& X# m) A( H5 f& k7 N
1 G8 a v7 a3 C; t% F- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。# R9 M/ q, u& p6 v. T0 L
' d$ x3 S7 E: e. Q
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
7 B2 L7 ^, _: ]1 k N2 c0 F " C: Z* T$ H0 u7 v( k0 P6 G h
% h! a" |7 w7 d
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|