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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 - F# T, b& u, W5 }
f+ |7 m4 ^, X. ^Gemini对glm反思的点评
) R i% c% L; L. ]* s2 _9 o5 q7 d3 D4 m
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
3 Q/ O) m# f4 A& m& K& N- B8 Y, M) z/ ?: @! s
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
( g: ^( t& O* T4 Z8 s ~ Q4 y7 N, @. L3 }
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:! t3 z E# e) } i9 U
3 H u# S; c! g1 D5 S
### 1. 对“路径依赖”的深度解析:它为什么会选字典?
% Y7 M( j7 M& S( \* S* F- B( p& f; m6 |# W1 n, v* E/ E% ]; B
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
% ?* s8 }* h0 |+ q/ Y- N5 D1 s9 ^
( b/ t |9 d' d: ?# N- “Python化”的思维陷阱: 4 N0 A/ _: R8 c7 r* x9 A. p1 O
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。$ T+ M) h4 Z7 \( Y' h" r+ o
% o# o' x* Y# X0 k5 T
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。3 l/ E9 m/ @" K @5 |
; V( H4 W/ C/ f) ^! u - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。6 i5 a& x! S Y S+ l
2 o, ]9 f% V9 p2 o3 h - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。 Z, z9 J' z) n) [9 g
6 h' s2 f; b1 O0 V1 L% i- 忽略了“Excel原生”特性:
# t6 o/ y: l4 J) k) Z1 T# m. K6 I# N Excel VBA最核心的优势是Range和Array的互通性。
/ C' l/ l1 e$ P0 ]3 F2 G" \9 N ?+ R) V9 o* S8 [9 z9 Z" i
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
. a4 W& Z1 g* r4 ]; [
$ A1 \ h, Q; R2 U8 Q - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
/ p5 Y D! W( F! ~, K0 C5 Q . Q r) F) h- k
2 p$ K- G1 o6 \ U9 h f7 R8 d, |
### 2. 对GLM反思点的逐条点评
( e7 j Z# Y. r
5 w% c0 }' s: r#### 关于点1:“标准答案偏好” (评价:准确但不够犀利); F& t. g& |7 ]& m: u d0 g
1 d3 o& t* F3 v h& y- GLM说:教科书里键值对是管理实体的标准答案。& L! r/ [) Y9 k$ w$ }3 c6 g
1 \* O7 ^# X! u8 ^& {/ F' {" N
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
- O' A* X+ ~/ M& Q9 ? ) Q; \3 a' D4 w: A3 Y. ~
) v! W$ k# E& U% j P8 K3 n#### 关于点2:“过度抽象的陷阱” (评价:非常到位)- g* O7 N0 t- a3 p" N2 u7 Z' g
/ j" q1 ?/ e! k" _1 t
- GLM说:追求理论完美,忽略了VBA的脆弱性。
) ?9 j. F7 T( @( b, X. v8 S
% d. r% h/ }5 k8 Y- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。3 N A+ q& N/ R* _0 `. V2 g6 b$ M2 I
( b0 z* w, K) M
1 o9 C/ F4 g$ k9 z/ K! i#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)8 j4 z. U y2 u$ r* u
0 n/ G$ l. U3 {9 j
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
5 r8 o5 G& D2 C6 l- Q
& j' d' n; T/ K" f; O- 我的点评:这是最精彩的反思。
, U) j5 k% g6 E/ J" n 4 w) \& _! y0 H( L; d; x
- **计算相关系数(Correlation)的本质是向量运算**。公式是' o2 [9 ]7 c! d: c' c% n
% B5 j, F" A; a/ A, r8 \* x' k: } `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。6 z# t. X1 T3 y+ ^7 t
: R3 ~, D( m; t( n" ]5 T - 这需要的是两个对齐的序列(Array A 和 Array B)。& G, w3 o) e" m5 H& d
7 A' V N7 E) s0 V! w - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
+ D6 ^# ]/ W0 A1 T5 `' S' O8 A
7 w/ H$ g/ q/ I' x: S3 d3 E4 @8 c& m! c+ E) {4 m) q# N3 y$ P/ z
### 3. 我对它的补充:它没意识到的“工程化”问题
- g# N) k1 ? n
" F/ k2 l U$ aGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:, c* f7 ]4 Y% V% ^# K. c" ?
) c, `* p' W$ J% ~" x" s1. 环境依赖(Dependencies):
, S4 |3 H4 N+ G. L0 T 0 k" W6 q; a' A( M# h0 a, e. R
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。- c% \7 h' |7 B! G# }5 a7 I
% P( s6 Z6 E- V$ D! x; T; d - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。) l' `" ^5 q$ [: w
1 C& ]/ A) {' q$ s% M) S
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
: M1 n' M% P% @" X, B; g 8 v( E7 Y/ p$ c
2. 调试难度:5 T5 S6 ]" y# g- [
" {" e0 V+ C! d: r5 `
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。+ K' a1 k; M5 p1 G5 K1 T
+ k8 {/ ]$ r r1 j: r
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。+ k- b1 p1 t' ?" {3 C
+ A6 v8 N7 _2 X, k9 i
3 ?, p* e7 D% t3 v### 总结
0 `) s; P, v! h. ~6 E
8 j' X: n; Y: }" [2 H, [GLM的反思表明它已经理解了“场景决定架构”这一真理。
/ V8 Q0 N- a/ `$ v' X0 V* X4 a
0 S5 o. {1 Z6 o- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。' H& G( X' L3 l) c& \4 G+ E
$ }" c* R) t( N7 t( f. n
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
4 K' F5 D' K1 b, h
( z3 \* R& D" `' t
( x% V I" v A8 l( }7 }2 {1 @& z2 H它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|