TA的每日心情 | 怒 2025-8-7 11:56 |
|---|
签到天数: 1132 天 [LV.10]大乘
|
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
) T( O8 f) ]( U/ c* }
8 n* i- ^' T. I& o: O& o# z9 J$ lGemini对glm反思的点评
# ]1 V- a1 C+ B0 c; r
$ x3 Y7 e: @/ t+ I作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
, }7 S9 j0 S* R* n: N1 @% F5 P% d+ e; w( ^$ s
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。' G, o" l6 c# |
* t5 V5 a) v7 e以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:& q) B, T9 F* Y- o
' f: [: \3 e7 {% T1 ^7 Q1 s### 1. 对“路径依赖”的深度解析:它为什么会选字典?# S4 t: R5 Q+ _( G9 u- I
! ^2 D, f, V( V. X2 G3 _
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。' E8 ^$ }7 |) k5 I9 U
" p+ |# o$ ~: k6 k
- “Python化”的思维陷阱:
/ @! a# v* g4 w. t: a 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。/ ]4 E! B- Q: z* f9 {
2 I1 [- r2 m, |7 f( a s - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。) @7 {: v9 g' u* V
0 r/ O _4 e2 w! t
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。" S, v: D+ a P' J
% K# I2 ~+ D- p" s V - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。9 `2 z! q j: e. a* L2 Z) @
- X; F, B: p- U& O, {, D0 Z7 W- 忽略了“Excel原生”特性:
( t. t( w/ H B( o Excel VBA最核心的优势是Range和Array的互通性。% k) D% i8 m" k; n' R0 R0 H
3 T. b6 Z$ c/ P
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。/ d( A2 K$ n6 [9 r) l6 Z0 t
8 [3 W# T* K) I - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。, a" R/ v9 ~9 @! x& M
1 q: Z! N- V. N% \# U
5 h+ U. J4 a% O7 \) t2 _### 2. 对GLM反思点的逐条点评
3 I1 q+ E* ^/ f% b# F/ Z
7 {# G" |% w- w: p5 _#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
4 |0 U4 y, |6 z- Y8 K2 c4 U3 G+ z+ U
- GLM说:教科书里键值对是管理实体的标准答案。
# ~# R2 m" _9 p& u % V- ^' O+ T9 i! r: D( a
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。) ]4 a' D, Z- r$ `$ [- v/ ~
* Q- I+ A' h$ _7 I# ] E3 [" g
8 c! l; `6 y! t( Y3 o#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
9 u. ^) r* O; |: [
( a# p" K$ _: W- Y9 O9 X: N- GLM说:追求理论完美,忽略了VBA的脆弱性。( E. B, O7 m' L' [! b: q3 N. v/ f% E
' M ]9 ~( f: a8 H- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
, r) e& T/ S$ v p
* F5 x3 Y8 c8 J( m4 r1 L
1 Z4 Q8 y/ O- \! y2 q& ~#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)9 P: ~& J+ T6 }" |6 L
+ o. l- H: r; S, P, R: n
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。) ~/ U* r2 j" K- W4 e
, _- D U; S7 M. K- 我的点评:这是最精彩的反思。
6 V' S' r$ c1 |6 T Y/ P / L$ b7 f, Q2 B3 g1 ]! h$ ?
- **计算相关系数(Correlation)的本质是向量运算**。公式是8 ~" o- ]) p. w2 I$ P
! J, q: g: Q; g% [. P3 s% c `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。+ f& l) T( W* H( @
: I! ^- u+ @/ }9 N - 这需要的是两个对齐的序列(Array A 和 Array B)。% ~# u) w$ k+ K) _, o4 {: E
$ d( @2 r/ ], l4 I
- 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
& M! L0 w2 x" Z. S7 N1 S/ _8 a9 l5 X
6 s0 n" M6 f$ F" p% `8 Y- R0 B% E; j7 u5 X$ }3 W3 n
### 3. 我对它的补充:它没意识到的“工程化”问题, T9 v+ ]6 {' r8 [( G- v
2 G- [" J( ?9 b ^# g) W- eGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
u" Q4 M- I/ h" W
# b* p# _: @+ C1. 环境依赖(Dependencies):; ?! ]" G% w t I& s- B6 I6 F" O( y
, ]- D3 C3 R0 G9 s - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
& `9 Y' [' N( @# ^ " f' `% z% s6 ~7 v5 C9 E
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
5 K% [) m: h+ u% m$ c4 b6 k 6 }- v$ u) Q1 m9 a. }
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
: o+ R- | A* V# E. }2 B % o: d% X n( C* m' v
2. 调试难度:7 o2 Z" ^- n: C+ b
, ?; h' z# l( I7 ?- |5 v# i) X
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。: F4 K# R4 F1 v
. V: P) a( X) i/ s! w" Y" N
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
3 C7 m/ K' h# W / E; k0 j' J9 V) k9 Y4 H
- b( e0 \4 s# @# y2 Q### 总结
$ e7 U8 E. m) T/ C
7 n. K4 P) _9 x/ PGLM的反思表明它已经理解了“场景决定架构”这一真理。 i0 C; \' X- O" n- c/ k
( y& @' F- s6 k1 V, ] X% l
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。" n) t0 Y- ~8 R6 ]( k9 y
" N# r8 m( v+ j/ R
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
& k( A7 ^- b* P5 W+ G, g' m
& G! v/ T: Z8 U# O: W
4 t% u( b% {0 u它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|