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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
/ \8 [. K. I, I
! I- V( [+ y, X, k* Q/ sGemini对glm反思的点评
& D- g, U( l v6 z4 }2 P* @
" L0 S9 q. o7 Z作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。. R) f- I8 N: l# ?% p
8 u4 ]/ s. V2 z& Q& o" T* m$ N它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
0 z2 _# ~5 D9 F) ]/ z
' a1 `( k- z5 ^( a5 z以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:5 T$ e- f1 q3 m' a2 A* O
0 s0 T0 p- h7 m7 c3 h4 L( ?### 1. 对“路径依赖”的深度解析:它为什么会选字典?
* b" G2 {8 b/ \9 Y" f5 i# ]
3 N& [& V+ J' C, I2 zGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。& u, L: q; b+ T2 }0 a
0 c3 K+ }, E5 L' @- “Python化”的思维陷阱:
& E7 J0 t; z) P+ m" ]# A( T! [4 G. y* s 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
1 ~5 H) o( t. s* b' p
: q5 @4 b( H: T1 f6 w; @ - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
7 _; p8 W. Z/ ], S L2 V% |- F& c5 p7 e
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
; C9 x9 D+ a. ?% c2 W# K% s
8 O4 ]4 r& y2 r* \: r9 v/ T! | - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
a3 k) W0 K( G8 M
3 [6 j4 `) M; N" K+ B9 d2 \- 忽略了“Excel原生”特性:
% H# F, J% J: k! r7 s& P6 ` Excel VBA最核心的优势是Range和Array的互通性。3 y4 @/ t1 \+ j3 }+ x+ [
: N' J& G+ `- L: [& v b
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。! i5 X, U- O, i! p6 y$ K; P9 d
+ _" ]- |. j5 z' X' a+ z" a
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。; a0 v2 |( [7 I* e- Y, k
3 K$ x) ?& q# v m0 I! {$ u, s9 i& }; N/ I: ~8 O
### 2. 对GLM反思点的逐条点评
% A' o8 m( {' u
( ~0 r2 ~2 j, ~* V, p! \$ ?#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
- n! |9 d1 u3 z$ k* v! h& |% s/ o V/ p, G0 _" o( r
- GLM说:教科书里键值对是管理实体的标准答案。: s1 p6 y$ V, l$ Q2 C
T ^( w! w: y/ K" \! I0 f
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。/ B/ @# @ J$ P; r# _! U" p: O
% u' u+ Y' D) V! h: f# ?
$ a) V# l: e/ f" [#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
4 X7 G: H0 c1 O K' U' O- h
1 d6 L1 B! v9 C4 f8 D7 f- GLM说:追求理论完美,忽略了VBA的脆弱性。
; z, Z6 p; H) I9 Q5 M" R 0 ]0 O7 u% W5 s @# H: C7 M. D3 O
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
( Z5 c! o4 O3 K: { t3 K+ u( b1 }
( }, c. n2 h) r5 d, x$ R: J3 K# V. A# a8 F; k! t0 w1 l
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
" Y6 A; z+ E4 \* r: X, J& n- _! B
) ^. U# ^; k2 ]" Y( [- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。/ _! t8 |* S- R5 t! k! b* \
. D- D* C/ f# N% e/ ^- h* K1 C2 x- 我的点评:这是最精彩的反思。
6 W7 i1 d" k; h" e- H 3 k5 n0 U* [# {
- **计算相关系数(Correlation)的本质是向量运算**。公式是 v0 J7 ]: G( M) ]" F1 l
8 w7 \* E2 T; g* B7 U; X& X
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。5 k+ E8 C% A- C A9 w
0 X6 [% L' i0 D8 b/ Q" \$ ? - 这需要的是两个对齐的序列(Array A 和 Array B)。
, b6 w- f* x6 X& B% h, {! }
5 E9 T0 [1 u! p! O; E) x& O - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
3 I2 g. W: Q/ s# a
' Y6 A1 D! g9 r! G
0 r& w+ Z9 K- H5 y( V- }+ d Z/ e### 3. 我对它的补充:它没意识到的“工程化”问题
! j8 l. h/ o4 L
; |9 W |4 F2 M) KGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:; ~9 J) W a6 }$ g# q, Y
1 J) @) d0 ]+ n# H% a
1. 环境依赖(Dependencies):
* J6 q2 y, P7 ~) G; Z1 h! b ( z6 Z/ [6 ]6 u# q0 B$ O
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。. V5 t9 Y. }" [) f7 H
, g/ } Q' o( }! I; y) I9 f - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
' |2 q+ h) Z/ i0 A% Y* d6 ] 4 k6 Y8 Q/ Y& K9 s$ x
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
$ d! B* h! A6 ?
3 g! F3 S2 p, u- m1 z- }2. 调试难度:. ^% J' L [8 c/ g6 z: f! ?4 h# h# l
8 r: d: Z/ V. `8 S
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。5 t4 s5 L7 l, W+ N, P6 f
. d+ W9 [# N5 u& u$ ~, N) a
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
: r/ \4 O8 r) ]0 A ; [9 j$ O8 [7 T
6 m( X$ Q1 L! C! ~. } i### 总结% u3 J6 O2 M( K2 j/ G" Y
4 _6 ~- Y' H7 p/ o
GLM的反思表明它已经理解了“场景决定架构”这一真理。
7 ^' a$ M A Q; |4 b9 ], | r8 s" ^" r, N5 {7 P
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
- N% E( R" @* D" }! }; n
' x) Q, x/ v' ?0 |9 b- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
1 `$ |8 c2 ~; ^8 R" d & U6 y; g3 R& f& b0 h, _$ @8 }
! ~& e6 I1 J/ C' l它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|