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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
1 [- W* x1 Q/ |4 y) {3 L
: R! j. Q/ ^- e8 _& eGemini对glm反思的点评
) D, K+ y2 p7 w# j/ L- P% `1 M8 g. o
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。# Y+ u. E# R% S0 Q9 w7 ^
+ Y Z. H/ o) }) w
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
/ @" V% E+ f, d6 `: P% G+ M, _: C5 d7 x* E/ ]
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
* Y! m' ?! D; F7 `* @
G7 l( l3 ]3 ]. H) ^) x7 U, D, L; F### 1. 对“路径依赖”的深度解析:它为什么会选字典?: }; F3 q2 R! O! ^& U
& v4 W1 ?5 a SGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。) {" K# P# x$ g8 Y) r. E2 X
1 y0 v+ s9 u( f o8 V- “Python化”的思维陷阱: - T' O( P' B* }
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。4 p: ~0 v, F/ T# o" N- p
8 g1 c, ^8 S# I4 E! W7 d - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
# w4 R. D4 S5 @/ G 2 x! z% Q4 p6 K2 {: k# b; y, B
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。, T! K: A! D0 P+ ]
( z! m9 x' G) C - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。: X; p5 K% y# }7 g3 U
# m: L0 T/ i- u' a7 K- 忽略了“Excel原生”特性:
' U6 P1 y) `3 R j# X+ t4 L Excel VBA最核心的优势是Range和Array的互通性。1 a8 Q4 S' \4 E ^
, R- t. i6 V+ i' E- }
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
0 G* b( M: a# q- S6 D0 I" R2 Z+ P & f& I; w _: Q$ U
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
3 b" `; U- _1 ]8 m2 h
) Y B8 x) r: h; b/ }( e# a: }8 g2 b. r. h; |( V5 p, q
### 2. 对GLM反思点的逐条点评6 U/ ~# t+ o4 V( g
: G+ Z8 ~0 w0 u+ @- [' L+ D9 M
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
. ^; ]" F" W; q" d6 ~. D3 t1 ?$ ?& A2 b- \- H$ D
- GLM说:教科书里键值对是管理实体的标准答案。+ E5 z6 V' a$ j$ c/ L V5 r
; [' X1 d6 f' R/ a$ l9 A) f- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。' P& w& m% c1 F4 u
( G5 S5 C& I# E& B5 z! d$ X' p% o" ^) I' S# O4 R2 ^! D
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
5 ]' {7 X9 N* Y0 r f4 x5 B
3 `1 @& _' Y' l- GLM说:追求理论完美,忽略了VBA的脆弱性。
# U1 G6 l6 d0 P" `$ H+ D+ w
5 S3 R1 M5 e* ?3 z7 @- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
: h; p9 Q1 \+ h6 i: ` ) X: B" R4 b, S% u6 g0 \& v5 }* T
/ y4 s: o$ ~" M) I#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)' q5 F) d9 n- z/ p
& W9 _. L7 x# Z" ~' O
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。# Z6 R4 W [, v0 V* d$ i
7 I+ L C) G" E5 x" d- 我的点评:这是最精彩的反思。
6 P6 n0 D9 q) I 0 c" u" f! z( z! w. b, x. q, h
- **计算相关系数(Correlation)的本质是向量运算**。公式是
+ h# o+ [: _1 x( S! ]! Z
1 J8 @! g# t1 O3 }$ R! }! b* _ `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
& W/ ?/ ~0 U+ _
' c3 y: m* L5 d4 H( ? - 这需要的是两个对齐的序列(Array A 和 Array B)。
) \' K0 J% B4 A1 C2 {. s
7 ]7 Z P8 s, j4 O+ B - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
' K. T% ]% k/ F- Z1 _
7 \( f' l* c0 e, ?+ F" M# O, Z
' G5 D9 O& r; }, ]### 3. 我对它的补充:它没意识到的“工程化”问题3 o3 b9 \6 Z* f; m( k2 o3 I
& I7 r" u5 f2 ^/ b3 x
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:2 W) U% \3 J* H+ \: X
3 ~1 L' e" w0 ^" w. g, y1. 环境依赖(Dependencies):$ V8 V9 i1 T' u4 R6 A) I# L% t: b
0 L; W' L3 @2 I# v' j+ z - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。4 m1 d$ Y% u. b. \
9 a. `/ D7 z. G" @- w8 ~
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。! m; ~, n. v3 a
0 a6 l5 G( H H$ C
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
) P& `8 a; `8 E0 O0 \
0 e; W$ l# u6 T( _# p a2. 调试难度:
. m7 B9 Z5 D! l/ r3 A. ?; w, J; n
, A4 {9 B. X) x$ E* Q6 ] v8 o- z - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。7 L$ ~5 F) `% r3 H) x+ R( m6 d- v; B
7 g9 [, w8 |, J
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。, t( g8 [8 L/ l' z/ E: c% @6 ^( q
% @8 X9 |- I2 R1 R. e) T
3 _: r0 D# O f### 总结/ B; M4 b A' f& |
, Y- O/ z8 T6 h4 [' N, M
GLM的反思表明它已经理解了“场景决定架构”这一真理。
9 N) Q: q3 n$ F ]; d% m, Q- L/ e; j
/ W* V; h% ^4 G q, \ B. t- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。6 X7 a5 ~' x) g- W" W
( Q& [6 V' e6 U$ L/ X0 k- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。* l* F9 g: Q3 `7 N& ` H6 u4 h
. B$ j; p& y9 n
! c" w: Q6 n+ P3 P- h+ R) Q( D它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|