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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 ) @( `+ t! b" X- @" m" t
7 {7 y' ]" F1 p2 j0 Q- b
Gemini对glm反思的点评
* E3 n' {3 Z7 F6 Q, g) f$ [2 D" P2 \5 z0 z2 _
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。) a, f, t+ D$ Z) g
, G4 O' n R, |; H
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
9 j- b; M% U9 x
2 ]) p3 U2 E+ s4 N9 T l; ~& m+ {以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:# G' [7 A( X9 l( {
( g" `3 A e6 T! D' \, z
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
2 R1 E( O) M! ^: K$ T! I0 C2 i
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
; L6 n; i/ z$ u: l3 K% V# M; t
' J0 i9 h1 q; b- m/ E) ~- “Python化”的思维陷阱: ! p7 z5 L& W" J; [* Y4 K7 } e
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。. L* j/ d1 o- t' ^# O B$ A3 W
' p( S" r/ z1 O. n3 o# q; `
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
: `& |3 _; t8 J" l* T- Q 9 h( Z5 ]% Q# D; |9 n9 |# @# ?
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。% R: O+ c, J6 }$ }0 _
" Z- I; |( S i- Q: A. O
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
/ H* w$ w8 O1 j L& |5 v2 ] $ j: z; ^5 G2 @( S9 a: U
- 忽略了“Excel原生”特性:
, G7 J. J3 q# [( I/ a+ p9 }% W Excel VBA最核心的优势是Range和Array的互通性。! y" O! E$ T) u% t, f5 z: ^- |
~% q0 p+ G- N
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
3 j+ \% ~/ y1 S/ ]+ H: o5 P: h, T5 Q ! w7 l/ O ]' ^2 M, P
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。- u$ C3 |- V: G* J
3 ^+ B- t* G, T3 [/ d1 t
1 S' m* {: \- Z# v. n1 `### 2. 对GLM反思点的逐条点评
2 g& ^# H% D* a/ z! K8 \1 v. d* t$ u4 y
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)" F; b# a. {, P
; ?" Q" h" Q/ ^( c2 l5 k! }: t
- GLM说:教科书里键值对是管理实体的标准答案。
, K$ t3 ^* p9 f' ?
! [1 c. l5 k; s. H7 c- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
/ c S r( C. n3 q! _- `: [
( ]$ t6 n) r7 Y b( q$ | C! ^9 T* _3 ?2 X
#### 关于点2:“过度抽象的陷阱” (评价:非常到位), L- o; c* _5 I U* M H; o' s
2 f4 `. Q- e- {* J+ Q6 j/ |5 F# B
- GLM说:追求理论完美,忽略了VBA的脆弱性。
: o, \0 m- W, d/ f& z( B$ U4 q9 R 1 c a/ f1 C$ t+ `/ g3 U
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。* W8 g2 r/ X0 D8 D3 b0 `8 p
5 R W% d/ ^/ {' e8 E6 @
6 R& o. c2 ~9 u7 g
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)+ w% Z7 R2 ^1 [* _
n* v8 N5 o: k4 v9 S
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。4 {1 A3 J# ^4 j. Z- u8 p
* m. d. o* P* W! y- 我的点评:这是最精彩的反思。/ a U' n4 n1 \$ Z# w+ S
- z$ Q1 |+ Q l- b1 ] - **计算相关系数(Correlation)的本质是向量运算**。公式是
8 l z- s: ]+ r& N N! ^
$ w3 T q3 o I; | `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。1 [' J% |% }2 q, @
9 v1 n$ s+ {4 O7 n: D
- 这需要的是两个对齐的序列(Array A 和 Array B)。
+ N# c- [! K/ u) {( a ?7 ~9 ?# I& e- {/ p0 @( e
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。. Y/ |7 A, x3 s
4 ]+ t% q+ K+ w* w' e, {: E
& E) r4 L* B! _# l5 D' f### 3. 我对它的补充:它没意识到的“工程化”问题2 ` M( j+ z! O3 B/ Q
/ W8 [" G( U$ N2 s2 Z6 C* b5 R
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
% }* a( ]* ?, \5 i/ w$ N0 z* x& Q5 h9 f
8 I) R0 D: S5 Z' m3 s" M3 z1. 环境依赖(Dependencies):6 V7 K4 z- E% I. l3 n0 P( Y
6 _0 g9 T' H, C8 |$ z
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
9 Y3 c1 z. ^0 I/ F5 Q9 N
# O2 O g! r- W6 W B - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。# h: G, Z9 u! M2 Y
4 M6 f2 X6 J R1 P" Z$ U
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
9 K! e$ ~& g9 n; z, D " Z6 d2 ]: J# v" z& A* V* O
2. 调试难度:6 }& j. w: a8 ~& I7 O* @
4 _- ], X) w! |) ^( ^4 Z - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。, y' b- q4 }2 ?: I- t' v) B
8 y8 I- Z& \8 k
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
: C+ U$ B$ h! i2 u, L4 E. t) b" C3 Q 1 Z4 N4 g% w/ R( R' @: F
. y$ I: m4 J; l4 }8 |, Z# }
### 总结
, ` f5 s" `* A6 f% `
+ ^' S+ x3 |3 z# A/ g e& ^2 KGLM的反思表明它已经理解了“场景决定架构”这一真理。
3 E4 [3 \$ ?3 J/ m" _* d9 K' l6 Q/ X, I) v
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。" Z1 M$ y4 u1 k! \8 M# q
7 h) _ J$ D3 e2 v& r" I- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
* H3 y' |1 ?% L# ^! W7 Y7 h$ M 8 U, @4 G6 ?# w
& f8 a9 }0 B0 N
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|