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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 K# U% S* s) o3 r* o9 i
6 ~. G) ^, [- i! _" N0 w m
Gemini对glm反思的点评
0 m. @/ O1 o: i+ Y! N; a
4 Y7 T T# Z. {1 D5 a. c3 b作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
A. T& _! X( I8 z
$ T, g Z- V. ?7 Q+ _! ?2 e它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
6 |0 J" J6 @# p8 J Q6 P/ b# V1 e1 y. @$ A2 K
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:) n9 Q% [$ m, G( ^8 D- u
1 w1 F8 Y* K! j$ e' O: u! [/ t1 V0 g### 1. 对“路径依赖”的深度解析:它为什么会选字典?
* M2 E& h" n2 }9 L" Y- d8 T1 _! a2 Z) X/ K' j3 Z
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。; o& n" a; d) @( n8 n T
' C) G0 I4 \$ t$ M0 i- “Python化”的思维陷阱:
1 f) X1 G5 G' k! T 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。8 R9 b+ _" N A2 W7 n% Q3 \4 W
2 y& j e8 W# L
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。# p' X" q2 p; B. d
1 f, _) E! T" f/ T& d! D& w( S
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
; q1 X: d0 E$ k0 H( o 8 e' i6 ]4 Y& \& I8 P A
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。9 C) t: u8 ^3 F6 |) z- s6 j
& w- O. [0 ]1 ], j* h. l
- 忽略了“Excel原生”特性: ; \9 a Y* v8 D: Z
Excel VBA最核心的优势是Range和Array的互通性。7 r' x' @3 x5 k. A# G+ M7 n4 W, { U
7 V/ Y' e7 J/ m% |0 S: |( [( G) ?+ ` - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。% r; {& }( \9 c N! W* W
0 f& ~; [0 C: a! O: d( l - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。9 f5 \0 A$ r( A7 |
0 `) S. d2 O% b, y$ D
# ?1 D% v% g2 ?### 2. 对GLM反思点的逐条点评
% o0 j- a0 F* d; }9 `$ O. ~
: f0 M% @$ S) T: z#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
' {' m" a1 N& W- o7 D X. |, A( ], E" `7 g5 [8 R, X
- GLM说:教科书里键值对是管理实体的标准答案。
- ?$ T2 r6 \7 e) D7 H5 T) K + C( u. R& ? ^$ _; U: \ T4 i
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
5 r% L4 L) F5 I; |) k% K % P8 G# y7 F& H1 D ^. A A9 e
& H9 G, r4 V1 d1 A0 k: Y( N* i% X#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
6 C: u9 o! v1 ]- l% l' V; W7 }3 A# X2 L5 [2 U- @& Q( j( d
- GLM说:追求理论完美,忽略了VBA的脆弱性。 [! l* n* z2 v& h4 E
0 ]# ]/ I2 W: l( W1 B5 e7 a. D% Y- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
+ m# V2 D$ y: R( a . B6 L* c; U! J: q
5 J! F+ U7 H9 a0 @/ f#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在) Q6 O1 |6 b) _
y& Y' P" g* S2 M5 X- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
: y, d; G' h C9 c& S
, i* X3 W* ^1 v, Y" U- 我的点评:这是最精彩的反思。
6 `0 S+ j6 Z5 C6 K! W! W
9 d1 _0 b" F( u8 x8 G& E, K! ^# L - **计算相关系数(Correlation)的本质是向量运算**。公式是
- M" \$ z d* ^3 E
+ M! P# h1 Y2 \. i$ Y* W `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
3 a# T) D# o' y% y% R5 p- M
( t- c" v) C8 C - 这需要的是两个对齐的序列(Array A 和 Array B)。
; @5 N' s1 v& J& X 2 m- ]& z; ~! N. d K3 Z
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。. _ U) X3 K2 q, N
5 S. B6 P- o" j- W5 W
7 v8 w2 ~( Q; N( p4 k### 3. 我对它的补充:它没意识到的“工程化”问题) g5 w* v% r. m9 v, }+ v
$ J) T" K. v X+ gGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:' p- `* `1 @8 a4 P
4 g! @% A3 A( ]5 F. Q* L1. 环境依赖(Dependencies):# n: p6 x* |) n2 \$ I
9 \: W( L' H" Q5 D - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。/ n* ~# G! g$ s3 e9 I2 _8 y/ f1 A
I7 A2 t+ q. E" I) O* ^0 g/ C - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
. T; S! b2 D. v3 {& f( |0 D
; i4 D) u7 s$ L6 p2 B - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。1 d& y0 m; g7 _5 A$ ?' ~( D
$ z' i4 _ y, s2 p- ^6 R" D8 k2. 调试难度:
$ T& O: | ]( b
" ]; y0 W5 t! O/ N' z' k - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。' ], \* g# F+ x# M) {8 D& C. p
% T% i9 {" b- v# h, N3 Y
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。 b3 m+ G: p: ~; F" ^- {* Q
, R: J7 P* q; H1 C, b4 L4 p& y7 S! Q5 H
### 总结: L8 p( g# x5 Z& R0 S
5 \1 \! S) ^# y; gGLM的反思表明它已经理解了“场景决定架构”这一真理。
/ }1 U- w* m7 I3 m; i- P; F
) C0 ]5 y$ C& m( j2 Q- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。3 F% H Q0 L6 c/ v: P8 R8 Q- s
5 f& A$ T, H' G% y9 B, G6 R: E! v& s4 C- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
9 ~5 m) l! r: ]( k l$ d 4 \4 [! Z( {+ e9 S* R, F2 [
! [5 o, z3 G* b. S
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|