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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 ; u8 V* E- |: ^6 K% S" w* l2 W
/ v" ~( Y0 V- c5 h2 N M+ i* u6 m3 b
Gemini对glm反思的点评
* E# ?5 P) f9 X
- `% F/ `, I" J& K5 g$ z2 r9 x作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
4 [$ f0 F2 M! u8 F2 l( w0 P! P$ p0 E- m8 ]0 C9 O$ k- n4 l5 j* B
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。( p/ o2 H9 k1 S
& u0 E: I7 k. }1 q8 r. p
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:' m# j$ d* ?8 g- D' P
. X5 W* a% P; m: K### 1. 对“路径依赖”的深度解析:它为什么会选字典?) l! S; O# R: d* O5 R8 z( e
& [4 \% Q( F7 ^; p# g& xGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。% L, ?, F& O6 ]
5 d2 B9 K2 W0 r2 O
- “Python化”的思维陷阱:
O* c& X1 |/ {6 ? 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
# l4 l) ^& I8 M) s ! y8 N- v" o" r2 ]6 `7 w
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。$ k R& ?# S5 }6 ~
% k4 ?( P/ O3 {4 q# `8 W
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
# i( A, I3 m2 m0 m3 F4 E: i+ p; u / a- a# a* ^3 X2 n6 d. r5 d3 g& ]
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
/ [8 r% ^" s9 A7 f3 i! h! n ) p" l! p$ W* M7 [3 T" q7 l2 G
- 忽略了“Excel原生”特性:
4 _ H( F/ \' X, ? Excel VBA最核心的优势是Range和Array的互通性。/ z& J% X4 w! p* G: j
1 k3 `- h2 }2 N; G* m+ v - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
) V9 o, q2 i% j( n0 a/ R+ o
/ ~0 R( a7 V4 }* ~" |3 t - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。! g, E* ]$ `/ ?6 u
4 k( E& x# i) _# I# P8 M w
+ j4 R* `) C. `: X5 q, W; Q### 2. 对GLM反思点的逐条点评
5 ] X; J. @; U" R, Z) o! n$ v
: G: V1 v5 z* w#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)& @* ?0 Q, s; M0 B: F% ?3 z5 J
- r. e0 x$ a# K6 ^7 o' {; G- GLM说:教科书里键值对是管理实体的标准答案。- k: x/ K, K# i! i8 p
, z! P3 k" i3 W# [0 o l3 c) m- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
: c- L' O2 k# v8 L3 V) ]7 L s1 i8 ^( |. H: _6 ^
* U9 n8 c/ X- u, S/ ^
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
+ d j# Z8 L3 a9 d8 W' M) J) n( @/ W( A+ {% Z/ v
- GLM说:追求理论完美,忽略了VBA的脆弱性。" ?/ N6 ~. |5 m \! ^1 b
0 \) o! J6 H6 k+ T" z0 \
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
! U: J: c4 j2 {# S1 \2 F ( @+ O% K( G% D
7 k" v7 [; F) q7 b0 ?$ W d2 I( W#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)# A/ z- F3 W' H/ M1 K& k) K) } C
8 z! q- c: I9 }* E4 \) ~' C7 I* I
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。. ]# F4 T5 o- F1 v3 ]8 \2 T- S6 T
4 V' t" k5 ?4 h. `/ ?
- 我的点评:这是最精彩的反思。" v9 L! I# U4 N
+ _6 B% @9 l( E2 `( m% L' _
- **计算相关系数(Correlation)的本质是向量运算**。公式是
' H' Y& H5 ]# e" N
" n5 Y/ ~; ~9 j( Q `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
, u" B3 O, d) R4 a& [ 7 s" t8 }+ I/ {8 N, j+ w
- 这需要的是两个对齐的序列(Array A 和 Array B)。4 k' {' f* z+ |$ S
1 q3 Q# ?, D' Z$ J" k
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
6 Q- j! ^2 v. S% ~' Y
: \) w ?# G3 ~- }, a7 C7 v! P+ q1 Q6 k
### 3. 我对它的补充:它没意识到的“工程化”问题" x) J' e2 j; n
) `& @8 E& \; T5 n) _- E q
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
5 X" R* [& A' p) C$ r: j8 Y7 r3 E3 O( n% P' [# T
1. 环境依赖(Dependencies):
$ G9 h3 I, B' c$ C# b, Q8 l ) m; b- y, F+ R4 v/ r1 ^5 q
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。7 t3 d$ [1 g, C
" `/ T6 Z. Q5 h, Z - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。2 S+ q1 U8 ]& h5 f4 V
: j! `/ ~0 a& q5 [$ Q
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
; x+ ^5 u3 q9 E0 @: \% d* I U 3 j, ]) r Y& B' v* w( O- b
2. 调试难度:, G7 Y* |6 X. D- O4 a
, a# i. ]5 Z9 q2 C, q: ]; x - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
/ c1 I- t: n' b5 [: k 0 _* e2 H' p5 L) S: a
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
- G! F2 y! T1 Z
0 c" s7 `6 |3 P; g" `9 f4 K6 ]3 l! j ]: O% f0 {
### 总结
3 }; `- N, g4 @* ?# U; ]) J* P6 v- y, l
GLM的反思表明它已经理解了“场景决定架构”这一真理。0 u5 s0 ~. q3 B* L
3 B/ s$ p' N* b4 j9 ~% ~% m+ z
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。; h5 \' y9 W- c( F" B5 e
+ u) O6 L: S8 l. Q- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
2 r9 m9 i3 T+ ?3 G
) B# U4 }4 l) j2 ]9 G7 j! C* F( [& o$ }2 U; x% m
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|