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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
6 Y' q7 w6 N8 F
$ `; w3 O, t8 _9 U7 d$ MGemini对glm反思的点评1 k1 p; [+ L6 t4 X7 h, O$ ^
% z& u6 `0 w+ J4 C5 @8 G
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。2 n" O; A( u* {/ k
( h9 M4 x/ k# [( W+ L5 n! ~
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
5 u( c% S7 x$ G2 ]& |
. V: i' \, \% {8 B0 f4 G, n9 j" C以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
1 V7 w' R- F3 o% G6 }+ a/ I1 h
1 d3 {( L. P8 K1 y0 v### 1. 对“路径依赖”的深度解析:它为什么会选字典? o. T0 v& l+ t( f
' j6 V# H( J- l: m9 T! f5 k
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。- \$ k C/ a/ U' m* i8 C
" H% n$ J- o7 {+ ?- “Python化”的思维陷阱:
( W9 v$ O& u5 G F; D 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
7 T3 d) V7 @5 C3 \4 D. V4 B, s
! X) g" J/ |2 ^+ t; C# d - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。6 X" P: e4 l+ s6 D1 Q
' N8 Z3 n4 a% P3 G& n - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。- Q; T% n8 O% C r, T0 \' L
6 | l" c2 s9 H u' m
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。 _* m, x F3 C
, |4 w0 \, [. E/ j
- 忽略了“Excel原生”特性:
! S; x5 ~& O, _1 L/ @2 G; ] Excel VBA最核心的优势是Range和Array的互通性。3 R( r" p' ^+ K a( Y
# e) s) K5 x* t
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
# v! _. _6 `. o! ?& M , {; K' [2 R1 r* T" n
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。1 j2 m/ C b/ O3 o
, S( m! L/ H P! n7 I- |) W
: r/ }2 _+ f, j2 x
### 2. 对GLM反思点的逐条点评
) I+ M. n( E/ s, s
" {+ e/ m9 v/ D' Z3 h6 t( k* Z6 q#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)2 Z0 I$ K, w' J9 |2 J1 q7 X- K
/ t) a% Y* N9 O8 B
- GLM说:教科书里键值对是管理实体的标准答案。
4 t- ?% w' E1 I' |( k0 x ! u5 o s2 [" j( `. R( m
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
! P( d* A* ]4 B6 S/ r
/ u- r' E9 J7 |, n1 s y' C7 z. S$ _( z2 u. ?
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
$ W9 G5 h6 _. c$ I8 q# b+ w
& W; Q5 \7 z% p* e( A) e3 ~- GLM说:追求理论完美,忽略了VBA的脆弱性。
8 z+ t |* A, G; d1 R! G# \5 `
' k& j ]- q" d" m$ |7 V5 S) T- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
g* e3 c# N+ [6 w7 V3 b. q ! `( f5 B+ z9 ~( P1 k
& I9 t; f2 o3 l6 S5 b; c
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)' i. m [$ n1 o
6 a& h1 y% \6 `* w* o- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。0 K1 ]; x' ?! L9 j. \+ J; Q" C
" p9 L. l: B" i4 |1 J( M* O
- 我的点评:这是最精彩的反思。
, M' {! u$ ^" G% x 5 Z( @ [" _8 D- \6 Y( x
- **计算相关系数(Correlation)的本质是向量运算**。公式是
6 p [ [& U( m( e0 b3 v6 ~8 d 1 ]+ m5 R# V F8 ?* ?$ D* m
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
4 w' E( m V) k* g8 }; A, o
" }$ a$ }' g% ]4 O) h8 X" x - 这需要的是两个对齐的序列(Array A 和 Array B)。+ g/ t. o9 ]- v5 J' l
5 _0 J* _+ i- w8 J
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
6 M# h+ u, [- q4 x9 x) k2 S / ^. e j' R/ _6 _/ M4 {% e
9 Q5 G- B/ G# K- L( {
### 3. 我对它的补充:它没意识到的“工程化”问题
8 r: E" E# z$ e+ S) C+ |$ L
) W+ g' V) X) t: FGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
. Z3 s9 O& a0 u- L, R
1 e8 Q# Y4 v% Y; j0 T+ Z! `( I3 [1. 环境依赖(Dependencies):3 X: H+ H: L0 |; F9 R; A4 ^, a3 |0 I9 B
$ S1 t' f1 _5 {5 k) [" H - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。# `% {1 i9 M1 y8 ]# E. p
' s% R* N% M) A. f
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
1 R0 t5 ^0 f7 y! i
4 m7 |. t# d# m( d$ | - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。2 `7 V8 T8 H- x! q. d, ?' b+ `
$ X( f1 A5 V; K3 ?1 @) }* [2. 调试难度:) ?2 \2 r! g# M- P* g" F
9 J5 s" y. l; Z3 ] - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。" Q" e! z- H0 K( U a
/ G. q v& S: p$ n9 H5 L - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
# Q# n9 f9 L; Z# h4 O: a y
, R! T6 a b$ E0 {% ^! ~# T& Q+ i, n1 T4 E
### 总结- b8 l6 T3 [! Z9 }9 q; g( l# \1 ^& n
/ C6 F' k# F& v( R, i
GLM的反思表明它已经理解了“场景决定架构”这一真理。. | l' e3 g3 K: C) u
$ f* i* N9 _- ^4 U; \! m& U
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
- r! f3 T/ a7 V9 D' M
( I# `- p _* J; A4 Z' E5 S& s6 N- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
, s+ M! r& j5 E# l/ w0 n/ y8 g
' q, [) F2 o( e" i
. b1 L4 y) M6 n1 d4 e: M6 {1 U) H4 f它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|