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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
6 X7 D8 _" E! O8 d
# m q* n8 _! R7 A0 K! C D' y1 L6 SGemini对glm反思的点评
6 |7 q4 [7 c0 b7 }+ h& d, M, H5 {
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。' v" p( A( W0 P& Q. A+ s4 D
+ M. ^. E9 [. v& Y' W! O+ K
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。/ Q4 H/ s6 M5 J- O( W! i
3 I$ {! s/ C7 [% i8 w) D# z" R" \
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:7 ]! m0 D- ~/ M( ?
( P9 o6 U( M& } ?& O" h3 ?# z### 1. 对“路径依赖”的深度解析:它为什么会选字典? X" ?/ |# ?/ F: i
1 O/ Z. J0 J" O) Y+ vGLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。3 o# n( n( H5 J
% x/ I; L' Z! r4 H8 V' r& V
- “Python化”的思维陷阱: + C; g1 I! k D: Y5 }
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
3 h$ Z( I; R- [" n4 r , R3 ^) {- J9 y. H8 A& d
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
4 f0 h2 Z5 d6 f7 G0 ]# L5 R ( ~( q# h) y* P i. v) i
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
1 n8 L: p: y% _; S " y, ?) J: G+ D$ P/ u0 f
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
' _6 B5 Y, R, i2 u
* N& G @0 l( D* m- X- 忽略了“Excel原生”特性:
' x& y9 _9 S* g- F1 ~ Excel VBA最核心的优势是Range和Array的互通性。
; `0 r+ }+ J2 Q3 q1 b) O! R
1 r( X% E* _+ X# Z4 u" Z0 s - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。* N, R- o3 g: ~$ l
. S: R+ Z3 V X7 r - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。 n% G: X& F8 k8 P6 \
" _6 A9 V D" e& n3 `4 r* o$ o: e% v& O2 ^4 @$ i
### 2. 对GLM反思点的逐条点评
; m- Q# q. p. \% ]% N6 c
5 l/ |, @* @0 _' p B, y& I; R# F2 a#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)* x$ l8 x2 u2 }6 Z% k! T
& k4 c7 I5 ?/ ]5 D' J- GLM说:教科书里键值对是管理实体的标准答案。
$ ]$ a8 ~9 W' L- }: U
. M# X1 _7 X9 K& I! r f$ F2 }- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。) P; S2 k. p3 l
' J/ x, P+ v) x5 X+ t; {
7 C; g5 d2 x: h
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)$ [/ ^# d3 Z2 {9 N( Z; X
7 B/ X* H" I( v- GLM说:追求理论完美,忽略了VBA的脆弱性。* \; y g; x2 x" M7 `. p
: |* u- f! {) m6 e8 }; H' L# N- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
: ]) [4 l: W3 o0 B
% Z$ m3 Y5 @ ?9 \, Q" v* {% K3 f; r( W+ [1 H, ?+ Q+ J
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)7 O5 x2 x. n. |
2 X4 C1 Q4 a5 y; {; c, M
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。3 _1 u2 | q& h8 r2 k! z4 x
$ i6 b/ [7 e! f' f0 Y# w. v: [- 我的点评:这是最精彩的反思。
& W9 V9 P9 K6 z7 g/ [ " G: L- z2 |. g: G) r# ?6 Y6 X
- **计算相关系数(Correlation)的本质是向量运算**。公式是
+ T D, d6 K( r" n2 Y$ y* K+ {; ?
1 K h5 Q7 d( n @% B( f$ i* C; K, | c `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
. j: H, m1 Q/ V9 c- T) h
1 f+ E& s2 \% O2 v, f/ ` - 这需要的是两个对齐的序列(Array A 和 Array B)。$ L1 U( {+ `3 E4 r
i' e7 r2 E d7 Z# Z
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
2 J6 @8 U4 W2 i; ~
7 a- _- l9 J: A# F; x0 s' D) \4 X9 F/ i
### 3. 我对它的补充:它没意识到的“工程化”问题* d/ ]2 z3 j/ {: B# U" [7 R+ }
* _0 U1 M: U/ o" l3 K7 Y2 V( WGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:* H6 S' w4 N% M4 V3 A
( }. h& F" N$ x& u* _" b
1. 环境依赖(Dependencies):# s9 E- p$ O, Y, L4 ]* Y2 L1 l
8 C8 i) N2 `1 ~ - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
! u. V7 T w# S, V% a
. U u0 o5 L# d2 f$ |0 a+ } - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
% F! [# x7 z |# Y% p0 J
5 P1 v; B9 A" f2 M; I - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
. c0 `$ o7 y( P# I/ W# ] - y+ }3 \5 `2 g9 `; e0 U& f3 w
2. 调试难度:* c7 {5 D$ i, Y% _; J
' k" ]- x6 Z' r! i o$ |( S
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。. @; H8 n& Q4 n, A% ~# N* l
6 t) p/ v1 [% ~, Z$ u. D
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。4 p9 @* b- ^: R* n
$ x7 H8 ~ p4 x! o [+ ]1 n3 B1 o) z h5 |& Y/ d* ]6 o
### 总结
" y( Y( j: K( x5 B! O, V4 Z9 k$ y* J7 W
GLM的反思表明它已经理解了“场景决定架构”这一真理。$ Y" m5 |) k. P# Z
! I! R# o- E( K! E1 k1 B- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。4 O: G0 @- m0 X
# E4 `" O2 e4 v! a( D6 Z; T0 a- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
E# U! b& L; w; A , [8 G- W3 `: F1 Z" _4 Z [ c
' F. |1 f5 p Y9 B8 @1 m
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|