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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 1 C# I5 L0 r' F5 h7 T
! i+ t) G4 [, k4 Y
Gemini对glm反思的点评
( U* {) c9 Y. t" H, g4 c2 u2 X
: E7 i' O# t/ B5 ~$ T作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。9 R" X5 F) F7 n* i% v9 q2 E
% k9 T: \! A1 Y, p) I
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
7 Y9 k% Y6 Y# Y; i1 w C0 U. }8 I
% `% V( W. C) \7 K/ X c3 W9 ^以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:+ L/ \# w& i* e8 M4 _9 _6 L* T
. q4 x- f/ j0 |" c* j8 Z### 1. 对“路径依赖”的深度解析:它为什么会选字典?( i; y: n$ e: D, D! s3 q6 x7 X$ E
' F# V; j8 R1 v& ~3 m' v2 XGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
# W; ? L( R# L3 [
J$ z7 L( @: w# \0 r- “Python化”的思维陷阱:
# A7 m( I8 z4 C6 y* V 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
( `3 P$ x3 W. Y1 a
' V% I( A) ]3 F" T- Y; x+ Q$ g, ~ - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
( ?; q1 E& t: Y7 \, G( ]/ ~
% X, q+ R$ G" p5 n8 U9 f' t o* e - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
, t/ C1 X9 }7 v0 t
6 h: Y7 k( Y; x2 F0 [& ]0 {$ P0 S - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
) h* w5 Q9 S2 ]/ _ W- X% e ) N/ P* A6 v# E
- 忽略了“Excel原生”特性: 4 Y% M( |4 w3 l( }" L
Excel VBA最核心的优势是Range和Array的互通性。/ [7 o, ]0 b( U: e
6 g2 k# u& b9 B, v, z
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
: X8 D8 q& }6 v3 t$ B$ p
/ M) o4 C p& Q$ n, A. n - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
' `( s7 }- m2 D( a& K: H4 {/ V
& f; w& o3 u4 s A0 F& w1 N* k7 |: W1 C+ F" G' x& B
### 2. 对GLM反思点的逐条点评$ s. }, q1 }4 u5 g
# y, \5 [0 D4 [6 _
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)) O2 _. f ^$ T$ ~( G3 N& j
% c3 s! s- f9 V; B' }* A, i- GLM说:教科书里键值对是管理实体的标准答案。' v% g5 I! e2 i) x' m; R
2 ~ ?: m+ J+ [4 b- O9 a: B
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。8 y& T; ^; f8 y5 V( I/ C
( H* B# g9 w! N+ J7 I; ^0 A1 f0 ?
1 T% [( r) B. s9 }! c
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
9 S' ?4 S) [7 `& g% u( Q2 o7 t( O# J+ m) d5 b) _2 e/ s$ @5 K- \
- GLM说:追求理论完美,忽略了VBA的脆弱性。0 ]- k+ S) {3 n+ @
# {- }% D/ c4 |6 q; g# T6 i% l) g- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。6 @+ S3 A8 [; p4 J7 i
0 z. y5 F, g) n5 A# k) ], e1 D
# L: B7 a4 j$ u1 M& m#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
7 k0 L% `* k- O1 t4 u* z3 Q5 ` D* O( h9 L$ T
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。: B/ V" p- ^7 G \8 _9 R+ C
- P4 Q( ]2 ?5 w8 F2 C6 O- S/ E/ y
- 我的点评:这是最精彩的反思。2 a9 Z- L3 B2 N
" i% c e+ M# J% {9 B" T2 i% z - **计算相关系数(Correlation)的本质是向量运算**。公式是
; e. C/ }) w* M( V# r3 q0 n2 J6 o
# E; e& f0 w. A `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
' M8 M& X: r2 M l# G* B
! V% V# C" T8 e* b+ o- H1 i - 这需要的是两个对齐的序列(Array A 和 Array B)。* U8 Y; W/ B' v7 B) I
J2 M# \6 b9 W3 c7 P! B r/ M. E1 }, P
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
; v) S' f( o; ?0 \& ?: {$ V
6 m7 D( g6 e: m& G2 \9 E
9 d& @3 [4 E. i1 w. ^/ Q### 3. 我对它的补充:它没意识到的“工程化”问题( q' n5 t& Q3 p
) V, N& A, O: z( A9 b( ?* b% l
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
* E( d, b! \, O5 ?; I" v& X8 ?
* z u, M5 [* X) P& v9 S9 e6 X" h1. 环境依赖(Dependencies):
3 U _ { F* Z' }4 u, S2 e ; |9 C/ o! h7 g% U# Q# y+ x4 G' J
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。' u$ u! j, G& x. b: v6 Q
8 b5 ~; H: k+ G- T
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。$ }/ B3 b2 c C% @2 W3 {1 Q
2 N9 Q+ Z. U* v! q4 F9 h - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
$ E8 a1 V& T1 g: M1 X$ m . G8 d; }1 ~7 G
2. 调试难度:! L. I" J# ]' P4 H; @, T
1 {7 B# ~ I* q) Q& L* Z+ \
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
, \! {' P: J8 h- V1 ]
* W* f& v) z) e' T - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
& k+ u, O0 _; {$ p # R& w! g' U7 W
# H- n0 ]3 X: h6 J4 [/ ]- ^; T' f### 总结
( n; d* v5 |# i
1 K, m( w; w, Y' e8 ]; X; m9 ^% VGLM的反思表明它已经理解了“场景决定架构”这一真理。
7 n* b$ J1 a. {/ W
- j; L. [% s3 A' s. m- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。7 H6 E8 N6 \$ o- ^
+ F3 J" u6 m2 e1 q! h) o: ~9 V2 Y
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。! \7 W- x6 I6 Q2 \: _
9 p5 g2 p, D4 s& A& C
' t B* C' w! V" I5 R$ Q
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|