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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 : _: p2 X" C9 {$ d. ^$ L) l
1 y' } o, ? V6 d0 Y) ?% uGemini对glm反思的点评
7 y6 f$ F1 j, ~* I/ p" e0 U' C
: Y2 n8 c) ^. a( `; B* l; ~3 S作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。1 B/ Q+ T7 K* |' t! O
; [0 `5 y0 s7 _/ k# ^: X2 [* v" Y5 l
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。8 w" E& m+ M+ h, ^
+ o& l/ m& t. K' A: r0 l1 f以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:5 t. ]% I& ^, d5 r* Q; d
1 ~7 z t$ X" ?# b0 x' ~7 Q# T### 1. 对“路径依赖”的深度解析:它为什么会选字典?! Z9 y% \. C4 S- J
( P" M7 ?; H) c7 E4 l8 g
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
" ~+ w9 N+ e: d s& k# x0 P2 ~( ?/ e2 Q# w6 B# M6 n5 g
- “Python化”的思维陷阱:
3 A4 Z- c0 w8 S2 [0 M: g) a 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。, O4 A! W8 |8 a* J
o" w) Q. J" X6 _. L, H& b6 [ - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。. T6 o( b% j$ K8 h* o: }" |
2 w2 r# \+ A e - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。3 P9 a. z, a/ b- l/ D
( ~/ v5 F6 I3 n: ?* z
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。9 w! |/ T! g7 O1 U$ b& \1 A& S* ^' S! X' Z
/ b$ f$ j$ V, I6 S0 L ]- 忽略了“Excel原生”特性:
6 K) [4 H! @ F7 {3 x Excel VBA最核心的优势是Range和Array的互通性。# C. V8 f9 t0 n$ Z! V6 [7 S
+ y6 ]% \7 v& h5 `5 S) C& A( [
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。) b' }- h" F8 }9 }& ^) ?3 f E1 z
: a- h* }( t: J4 @5 j) j
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
6 k1 H1 O" s, W* @5 t& P
8 d, o7 u% I( S0 k0 L2 F, y; }0 {
; j* r0 P9 ]7 E$ F4 L* O K### 2. 对GLM反思点的逐条点评
$ a. G* X9 E. h7 Q! q/ k$ G4 I3 g; z& x8 \8 y
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
5 g+ T. ^4 ~, X, h6 ]- r
7 F; j/ j, t' _$ L5 E* W- GLM说:教科书里键值对是管理实体的标准答案。
) P- e0 D, P4 O0 Y% ]' ? s( F! l- A/ ^' X! u" f$ D+ u' X
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
/ \( E) t9 e$ I o
' L) L2 R4 I% H! K, q$ Z+ n- \- J9 q' f9 l
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
4 H0 m# ?$ Z* N1 w: G
( K1 a& m5 `0 X2 M" Y- GLM说:追求理论完美,忽略了VBA的脆弱性。
7 Z4 R4 a' M/ B, B" _
2 \3 D) C2 ]5 z1 k( T% o! W- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。" O( N9 S3 Y `4 e0 E
0 i! t6 ^$ d* c: O9 n
/ ?) E0 n$ Y4 m1 Q3 z& c#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
0 k+ J6 \- o0 L+ B' s9 H$ r% B! o: W8 a7 C( P- ^
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
% p, I0 j' J: u
2 N" ?. E! A1 s! T! S- 我的点评:这是最精彩的反思。" s' H. O; [- N& T
% C3 Q5 N! M! g% M% Y1 Y
- **计算相关系数(Correlation)的本质是向量运算**。公式是* b: z! z# `2 P. {8 {
3 S* n% m5 N: y0 M, f `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
9 J5 B2 @ l2 S4 l 9 w; C$ S G) V$ l+ N
- 这需要的是两个对齐的序列(Array A 和 Array B)。
1 ]- p( m" q$ R 4 Y2 l. h3 P) C M
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。2 l! T) i; q0 Z% F# Q
* Q$ ~& A O; l5 ~, ~+ T: Z+ L+ {
: o) [8 @1 P$ [3 c8 n" K4 }### 3. 我对它的补充:它没意识到的“工程化”问题
8 J9 _* u& J* B- m! a
* f1 ?) ^( m( @GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:: s. c& w {0 `2 Z" m. Z
0 @5 h r, P8 ]8 @6 G
1. 环境依赖(Dependencies):8 {& Z% a$ |8 ^% g+ e
. Y0 D, m v2 N0 w N3 \
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
7 P* `: {9 m1 {4 g) F
% W, c6 r$ N' `! ` - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
: J! B6 G# g3 S: @ , z1 Q; [. d7 L' a( R
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
( g. w3 d5 [& S; U8 W n9 ?: c 1 N8 R- @# P; E8 i! e" c' ]( d
2. 调试难度:
3 h: X' _8 r" S, W 3 a8 F: L; _% }8 S+ E6 }1 L2 E
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。0 D6 \( F/ y7 h* ]9 ?0 n
) v8 v, h* @: P( n! j
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。7 w0 D% ]7 {9 _3 D1 K
$ x* C( _- y7 d
* }( e5 r6 e8 k2 I
### 总结
& ?5 b3 V% n" ^
) q& l% R3 }. I1 {% }GLM的反思表明它已经理解了“场景决定架构”这一真理。
B& m& e9 Y6 k( `5 R$ i* v. R* D& K8 \
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。4 t6 f; k2 o! c2 w1 @
3 H( O" \% g6 p$ B' S- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。4 t& @4 B& D, q6 b: e, Q0 I: L% ~
, p/ r/ { Y# R c2 p: G. q& i' A) V( Q# w# L
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|