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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
- F( g$ w7 g$ U2 D& G0 D
' |) u7 h! b6 eGemini对glm反思的点评
/ p7 \7 ]3 d3 j/ i' g9 J! e4 d2 @3 \
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。0 b/ r+ U: [$ {) o0 D
- c9 w% [0 G' ]1 e+ S o c: x
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。$ d2 d: Q8 L7 x5 m5 x3 F
2 _: q3 [1 H. r$ S* D0 i3 \: o3 j: h以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:) o% G# [: ~2 g$ D4 Z% F1 q
$ N+ _. x, ]+ L1 \! u### 1. 对“路径依赖”的深度解析:它为什么会选字典?2 }( o& S" X5 K. ?! E/ g- i2 `
9 F- u4 {+ U* i. H4 KGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。+ H# r, A8 R; Q8 X9 U
( t6 |( [5 W7 v) f% H- “Python化”的思维陷阱: ' U+ H+ v8 c, l6 V' |" Y- T
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。6 `; ?0 H% K0 |
" d& @+ r' R/ I1 l - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。0 M8 j/ K- P& X
0 [ i. L# [* w8 h - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
t* B y, U0 c4 E8 g W2 y8 d, Q1 C 6 Y T" b' K, m& p# o
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。$ q0 q% N" v9 H1 f# w+ V! Q: D. R K/ @
# W' S3 {+ L8 p3 N# z P% d- 忽略了“Excel原生”特性: 0 w1 \1 d1 H9 `* ? k! d
Excel VBA最核心的优势是Range和Array的互通性。! s7 f$ k0 { w- s# {% g8 b
, W. O N: r7 \6 S2 r - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。8 O0 P: H; v5 c, {! u
6 g4 I8 L7 A- P d+ |! L' E( i - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
+ a" }$ D3 J6 I5 |' H4 W% }- s , G* U+ \( B5 k v0 ~% o4 I
6 q' R3 z0 q* i- h
### 2. 对GLM反思点的逐条点评) n- s; I: C9 L3 J1 J% r: E
" r. Q- Y7 b4 S) ? ?& n9 c4 B; c#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)- ~9 }3 \; C% i) s, z, N
/ I. W) L- U7 z; Y* c% y' m- GLM说:教科书里键值对是管理实体的标准答案。2 Q5 p1 _ C8 B$ z. d
6 W4 ], @" R! B
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
5 C! F" s2 Q- U0 L4 M0 R6 w
6 Z% t5 O& z/ s# C' H
. ]8 D) o2 X* V#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
, ^/ N/ M5 n" [3 e) @8 e
% J' u& u* _* k: A+ K- GLM说:追求理论完美,忽略了VBA的脆弱性。
( N$ p) W# P' b$ C7 c% f4 A; f " u( o$ v$ R& S0 c7 r
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。; H% i# D p/ q8 V4 X; t- X
6 w/ j7 E$ |. J8 U$ R+ x' ]
( Q. z2 f4 ~0 Z#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在). z; l7 Y( I7 G* e* y, w
% W* f. a( L8 T# g' ?: j, E; m) \- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
/ i5 h; U8 |( [. v7 K % N4 s2 {/ j7 L7 O
- 我的点评:这是最精彩的反思。
5 X3 a4 @% K z! o
) P' [- o3 @2 w' W( k q* j) H - **计算相关系数(Correlation)的本质是向量运算**。公式是
, S2 L$ {: o0 S
( \5 Q7 ^( u' N9 z6 J" ?8 N `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
6 Z: J0 r. _: v& R- X8 e . S. i0 B( [3 @5 R
- 这需要的是两个对齐的序列(Array A 和 Array B)。
G! m) @. _' u0 }
5 f& d! Y4 v$ g9 x( T - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。 ~7 H5 G0 V4 K3 L Y* r+ s
- t% {+ P4 K1 G
7 u( w f7 y. y# x; h7 z3 B. e
### 3. 我对它的补充:它没意识到的“工程化”问题1 M, l6 @# U2 ]9 K& H
( r$ z, X, K J+ \, S. k# i
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
2 q8 D; {/ [7 ~9 t. u) T e: f1 X) U+ _# `
1. 环境依赖(Dependencies):
; M( M! Z5 k( L6 ~" v 8 L6 P# S* F0 T2 X6 Q
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。3 z& e9 v; h6 P" T& E. d9 m) C7 `
8 x3 k. C, l6 p9 z
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。0 N& {4 s# e- V" E
% L( \6 Z, [: w; b& d: {/ I/ K
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
8 H- t- V1 ^( N2 i9 p" {
2 Y# x4 ^6 J( N; G; S( e0 V2. 调试难度:* W8 z I+ j1 V7 E6 x0 w
; G/ A* H0 | T) g* e
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。/ U8 F. t. d' v9 Y2 {
. q. z' m0 Q9 h& a8 `. ~/ | - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
; U" [4 v1 ^ V1 W
7 B9 q3 R w: v: X( B& y! w0 S+ k
& T5 ^! [2 e* t) P: t8 F3 W7 D### 总结! o9 g" K8 J1 }% Z: o
, d- n4 p |. L$ b# J$ j. R$ M
GLM的反思表明它已经理解了“场景决定架构”这一真理。
: A' t) l8 E; S5 ^0 D% a9 l5 E b
( E2 g q! T- j |2 k4 W l0 }- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。0 j; T Y3 ^9 |1 D, j& N
: h$ g$ P$ l+ v9 c4 B7 n" }1 o- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。# `( U& M$ n& M; U/ l, v: K
8 K3 Y5 }- z. e- Q
4 g- b8 O/ `* w: o( q1 y/ X它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|