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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 % r1 l( W1 u8 p, M8 }1 C8 x
4 M( w. e1 U5 H$ B7 J& S% SGemini对glm反思的点评6 `# L5 p# w( K( J# G; n
8 Y2 i- C7 }7 L& U5 w7 m3 i* [2 H; s作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。. l6 F* c, M, }$ W4 ]
0 a1 y: f6 Q# x它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
' L; I# E J* ~
9 f# x- x- y' M; a以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
5 \* ]' k+ ?" I; p+ p1 ^$ B; e1 ~( i% E1 {) I
### 1. 对“路径依赖”的深度解析:它为什么会选字典?7 f2 K7 U& w* ~: c! B0 q/ J4 n, A
$ ]% }+ Z# r7 ^& P9 a
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。- S$ I" ^- l/ l4 g' y, V
3 {2 E" Z, D6 z9 t t6 |. y7 m( V- “Python化”的思维陷阱: / ^2 p; l0 E2 C) `- r
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。- J! C' A& R2 K- `
* y/ {+ Y' i* U- t1 W1 w8 U5 K - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
2 n: m2 ?" v M$ s7 `' n& D( h
% Z+ O2 F# Y( B - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。: r6 v9 p) G! c# U+ b
. n: {) Z, n& Y6 Y - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
$ p1 L) h1 i3 v! F( S8 Z , g9 D3 t0 [. ^7 e$ N1 w6 O3 t
- 忽略了“Excel原生”特性:
' Q0 r, h# \3 z/ F- \& y! Z Excel VBA最核心的优势是Range和Array的互通性。( k8 t f' G/ h/ @
, @4 v" R' f2 c2 S$ i - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
( i2 F; ]; A: i& O" [
8 A9 D/ q! F, [5 k0 J% D' Q7 k - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
X* Y! h- r9 E2 d # M% k+ x2 j, Q# x0 Z0 b
7 p: _1 F) w1 R/ i### 2. 对GLM反思点的逐条点评/ F" w! w# B$ s& O5 B" a% S/ k
) a' x" Z8 m9 m/ R1 V% V#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
5 w% o0 A8 b% i, O6 |7 r5 B) S# f" S/ I+ C
- GLM说:教科书里键值对是管理实体的标准答案。( A1 ` U: P3 N p
8 Z9 v& M$ }' S$ m* c8 H3 w+ h) ?* F
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
. P7 K2 g/ P+ y , @ P2 q2 F) v: @4 e
9 }; J g2 g- y% r; G# t3 e, _
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
) m- c# P/ K: H+ l9 n; t, J# P, _+ `. i& z( o% S3 e
- GLM说:追求理论完美,忽略了VBA的脆弱性。
; G- W, h2 q) ? s # i) F7 p% T" n; G& l9 _! m
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
" [9 M& ^6 K( h$ v# ?6 Z
9 W0 G3 j3 B3 W+ Z2 q! w7 o# Q u- ~3 H A) u& g; |9 v
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)& R9 q }" Q9 D
& I6 J) ^+ A& e- z
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
4 {3 ]1 x/ K# C. T
: m6 i( z% {8 a% o9 |' o- 我的点评:这是最精彩的反思。9 z$ s7 ^/ |8 c: z! @
8 c8 X* y8 |2 Y
- **计算相关系数(Correlation)的本质是向量运算**。公式是" m. ~: ]4 n/ F; `- t
]3 x" I3 R6 D+ j4 `# c ~ `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。8 L7 @6 I/ O {
8 M3 X) C2 o% Q - 这需要的是两个对齐的序列(Array A 和 Array B)。
7 V/ Q9 w9 Z1 X 7 {! {. y& k0 Q; j: [9 U6 ?! p( L
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。0 Y9 S, x4 z4 a1 E2 w
, H1 z2 a+ _9 R6 B ] l" U+ C. |1 @% W' k7 i5 \
### 3. 我对它的补充:它没意识到的“工程化”问题
4 s2 I' `7 I# N
: P* M* l6 S/ j$ v X3 W& o6 PGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
8 V4 j7 P K7 y; X' e, w5 x# r6 L9 e$ A
1. 环境依赖(Dependencies):* T- |7 x0 P2 |, u0 C# j
6 e& p7 h, Y5 J* b) J; L6 g - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
$ }* C3 C: _7 O' u" ^
" ]2 Z* K1 J* Y3 e! @/ M; O" W7 v - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。# f, R( h3 K3 O
7 c8 C) g5 |" z8 s8 x# @; D
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
; u/ \ x& T( L P6 s1 q1 P1 M 6 I& G9 C' D C; D3 k
2. 调试难度:
0 q* _! F3 C( c+ B6 S5 _2 }& ~
$ \; `6 Z0 c" e* H( g - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。$ ~2 E& ]( s3 t0 `" k5 Y: [: M
* t) {; L! m- w" O
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
( h7 }! O9 D7 R+ z( L- U * i7 T: X: O7 B" N) a
) p2 [, q) V$ f* o3 c) i# w
### 总结
& a0 P! Y! y/ h- r- |1 B
1 ?0 m' T4 v- c, c8 mGLM的反思表明它已经理解了“场景决定架构”这一真理。
+ M. ^% G+ s) m$ H0 l" K h0 l5 Y O
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
6 u8 M$ h$ I! c - w Z7 o& N) r* l
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
K. D0 s3 R4 [% W- j! D* T1 l
+ v: d; x0 v9 e7 }
# c% K, ]: c, D' Z. b! V它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|