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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
I" l9 G3 P, \8 L' H0 `1 h$ D8 \) q0 ^/ r/ l, p2 ]5 ~
Gemini对glm反思的点评 [, H1 ^1 ^5 G# U2 k: Y! o) }; L
& f1 Z4 z2 R5 F5 n
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。- x' |4 X4 p4 ?1 \9 i- u
$ H* v% w* d" q% A" C/ L5 L9 ?
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
' i9 ?, @; L! a* j8 O( T F& a+ g) f9 S
3 A. h+ S4 }! `以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:) f [% B/ f+ p
3 n2 C* @4 x, p' H
### 1. 对“路径依赖”的深度解析:它为什么会选字典?7 D9 P i0 _7 {4 n
( |7 ?" } q9 ]
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
5 t2 r6 _5 T/ w6 B _* ^) ^& u+ S* A+ U# j5 p0 v$ d0 K4 ~8 _0 ?
- “Python化”的思维陷阱: ! D( {$ k) J/ H
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。0 i8 N" s) q0 C4 [6 ]
1 b( N3 r6 e' p# _% ^2 F9 F! [9 \
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
( F0 }) y- E4 v, b! f- X: b! ?
$ U6 H3 F' Q5 T6 ~3 j/ ^ - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。* O+ l3 |+ Y% z+ _+ D9 Z
' a- o+ ]# W" R5 |: K: O
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。+ a6 i; ^0 v3 E% |
; B' A# w/ n; g5 J, J% @% n- 忽略了“Excel原生”特性: 7 Y* j; y) b/ g/ L- _3 G
Excel VBA最核心的优势是Range和Array的互通性。1 O. k1 {, k" G! C. G* f
o" [; e* x3 q- ]0 M' O5 g& O
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
( d. D6 h( X4 k6 ] 7 y$ Y% h) o* @9 T
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
* M5 a8 e' C) D' j4 v7 y : j( Q$ p5 Q+ @/ o9 T
$ _' A _# n( j6 Y# R6 y% p
### 2. 对GLM反思点的逐条点评
9 p0 i, e. q, J2 l' H9 P, k/ Q8 v1 P% I
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
3 o7 {- q" Q" M* G% f$ F6 [, I5 u$ m/ e3 A: M
- GLM说:教科书里键值对是管理实体的标准答案。 y- M: k; j1 f, T s1 ?
3 z/ n5 k/ {) K4 `- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。# W3 d- P' u1 V! @8 t# q! q
% P3 x% J2 L! R) C" u) J6 Z* Y% X/ x! a
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)7 }* Y- P3 w* v( Q7 t
9 K4 _' c8 ^) k5 W
- GLM说:追求理论完美,忽略了VBA的脆弱性。
% }8 v0 L" F* t+ _. A
2 v* N1 h! n% V( o! p- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
) |$ C' M! U5 N# _+ w5 N9 ?
8 t5 t: |/ _9 w/ v. I8 ~
# j$ k \, Q# c6 J9 U% L9 N3 }#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)* \4 q. X7 r# T a+ u
& k( I, ^0 q u* @5 ]# d; X- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。/ |/ D. w" R' _- ^0 V
' O; {# g: J+ O- \! T* _
- 我的点评:这是最精彩的反思。
5 t$ x+ _ d. f
! i" V6 l* s( T8 F$ Y - **计算相关系数(Correlation)的本质是向量运算**。公式是; h% M' x9 M% j% t2 H; `9 H
2 p. S3 h- V2 ~7 P8 ?# R `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。' R d2 E7 r I, `9 {& R
7 R: f9 e, T L - 这需要的是两个对齐的序列(Array A 和 Array B)。
) q q' _1 R, B# D: B4 |3 j! E1 r
+ V8 l# J( f v9 i* W - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
1 S. O. `" v% t 7 U5 y z) Q5 z0 q# s* l5 q( m$ w
+ `4 P/ i- G% J5 h' @" K* I3 E: u### 3. 我对它的补充:它没意识到的“工程化”问题
3 C) ~' B* h5 |" b3 H8 m% z% l( o, T) o" `7 D r
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
& |0 m* c9 ?" g% X5 P; N$ g& a! G1 g. u
1. 环境依赖(Dependencies):
- Z7 B) d7 |2 Z2 r ! w7 }3 ^7 K. R0 p" f3 e/ v
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。% F5 ?! s3 ]- |4 V) u
9 Y9 I& O. c/ z1 | - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。, x1 S9 D H) B+ X5 v; F
9 K3 k0 Z2 y% a$ j# L# m3 d, [% \& a - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
9 X" J- ^* C) [' D; M4 ^
9 c1 f; F. n! H$ F" A" }2. 调试难度:
; Y4 S3 @& d: y6 q
! b* E; u4 O7 d4 T) v - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。8 V K; F4 b/ Z# N
0 M" ^4 c6 _" W# W
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。, X1 R# i1 q' T' i5 `, h
: [5 y/ b9 ^2 a+ X# i
- S$ q$ ^6 l4 F8 \& |& e# h### 总结
, i4 b7 i6 }0 Z# m8 V5 J; x I" o+ l+ F4 M/ [1 I- _) J
GLM的反思表明它已经理解了“场景决定架构”这一真理。
% m% z6 W7 W' D# b: r0 L, q" v' R
6 B# P7 U* D3 ]; M$ F9 ^3 @- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。! ~- [- _% D9 L
U9 @8 Q6 W6 V1 h
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
% V1 ~# |. _7 `3 r( u7 z4 e8 [
% T) A/ n( H* c7 ?/ _2 K) m
$ d. I/ X: d/ B2 W8 k: c它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|