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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 1 t% x O- ^/ x! n+ J# ? |! F
5 w6 k1 i" ], I1 ^6 U3 ?- {
Gemini对glm反思的点评
" ]9 [+ I; H! K! [8 U/ ^
5 b* O/ G" G5 S$ q5 ?6 T作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。/ e! \$ e, }& p9 F
" H+ `8 K) |' a它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。9 |5 e6 l# I' E1 W; z
9 e6 G& ?4 l2 e2 z
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:; R! t/ D, {+ P8 Z" ~
# W+ f0 i8 E1 c. B' K" T0 d### 1. 对“路径依赖”的深度解析:它为什么会选字典?1 ?" v+ W3 V8 n
4 l* k2 ~1 W& T' T. F
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
1 j/ q3 \4 {, D# x# J! k7 ?
' T) e- {2 t+ d$ o) |2 ~- “Python化”的思维陷阱: 8 E" f! g: n* r6 d
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
' {% f" j/ K0 H + P3 q/ L3 I5 V' w
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。" _/ x' x S+ z
; d" { @9 a; M% W8 X9 [ - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。# B5 U& r& L( |
8 Y/ ~7 O! z( z% A8 ]3 X5 p - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
8 }" b/ L, v8 e0 B- K
) ^' Y+ \# l1 R3 h( L- 忽略了“Excel原生”特性: ' I) G. m! L% p
Excel VBA最核心的优势是Range和Array的互通性。; I4 }& q- ]/ t' [" F t
; d5 x F1 G4 u! t+ n O6 y8 W - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。0 B9 \4 i- Y& d [/ v; r# _2 z7 m
% i% p8 A) w: M; f! v
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
6 h, C8 W. ^0 ?( V0 K
4 g6 {6 _, }& f4 d4 S9 w% X- ]5 u/ \
, M9 e, N# v. d, j### 2. 对GLM反思点的逐条点评( P( n; r/ W6 Y7 s1 k5 y7 `
4 r; S- \) r/ i! E* u W+ u4 x#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)+ E. p6 u. B" g) s8 ^" O$ k% V/ |9 @
, F) Q) y- ]" ~4 p- GLM说:教科书里键值对是管理实体的标准答案。, z* X# c& }( J
/ R2 l) X. u7 y6 ?- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。$ D$ D- V/ o/ e( _5 [0 b9 h
$ x3 Q) ~3 K& V- ~
; h2 F( g; J0 O3 n#### 关于点2:“过度抽象的陷阱” (评价:非常到位)5 u' |- X5 A; d1 V- R$ }4 i
, c8 c+ f9 h$ I
- GLM说:追求理论完美,忽略了VBA的脆弱性。
5 N3 k# ^; Y; {& g' k) X9 Z0 w; a$ u 5 Q* \1 y. \) E! \
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。/ T+ }* }1 u: S; A/ y/ H8 t1 u
0 [& R6 l, ]1 h# `
/ k; ?( I0 Y7 K$ [
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
( H2 O6 ]8 f N) X! d6 G& ?) q- x: |4 ^( O9 z/ G6 N
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。3 l% F3 a$ Y% }: ]4 o T0 o; d& s
* \1 L' ~& f% H* h8 B' m- 我的点评:这是最精彩的反思。: y6 J4 v+ h3 q& s7 |
/ Y! y- b, z; R4 E
- **计算相关系数(Correlation)的本质是向量运算**。公式是
2 U/ K9 ?/ I9 E* u- k7 `, r, [ ; A/ r( ~+ |) [
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
0 B. ^* [9 u' O) m; F0 [: V 6 L' `4 A" R1 x/ w( O, q
- 这需要的是两个对齐的序列(Array A 和 Array B)。
+ C B- z8 j7 d, S
/ l( }( Q3 `2 N$ X* K - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
5 C+ D6 v" G& j' i, K5 @
9 Y& K7 k% ~: j% l
3 g4 V. K# ^" w: q3 w### 3. 我对它的补充:它没意识到的“工程化”问题7 v0 P8 F6 s/ y/ ?7 j
6 b, X! @9 M( ?% t1 uGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
8 R& Z) X: |7 k( F2 w, ^
+ m3 _- Y" _2 L, i1. 环境依赖(Dependencies):8 s9 R, A5 W& n& ^! J6 w9 ?
/ X- T4 q: P( C6 }
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。, s+ |' ^. {4 d" l( g
0 c7 c; E9 y7 D6 W - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。2 E/ Y! `4 \0 L! P- v( j
4 F8 q( }' k0 V( k - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。# ~9 j& G$ U6 _4 m l
9 g+ K9 z1 f. n5 y. c
2. 调试难度:
/ T: j( [1 d/ p( i* e; n9 N& \ 5 q! I( {% q8 k9 r8 i2 d0 u' `
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。6 F& U5 ]4 _/ C5 Y* T
, a2 ?" T5 W# }5 N
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。, g1 S1 ?5 U) y' w" W0 }
$ Q. q+ |: @$ T7 Z# w# h4 \/ k/ _4 I
### 总结
* O c, x# b n, Y
5 N7 \$ G* P2 C1 `; XGLM的反思表明它已经理解了“场景决定架构”这一真理。: P, g4 S9 T. A+ a
% ~3 B6 z8 T9 ]3 k0 W
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。6 i u7 ^& a5 v- A0 z9 F" s
" a) v5 K h4 h- f/ V& e* {
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
6 V& V" D1 K9 Y$ |, P
6 `) F0 X: ?5 p5 E. E
0 W1 a9 T: J( ]& W* r/ }4 m它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|