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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
3 j6 O. G7 ?" T" d { L" H6 ]) y! M
Gemini对glm反思的点评3 E, h4 q! j6 [$ W8 B
) b* ^ t: q% J. j8 v& w& @
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。2 P; [+ `& Z0 V, G6 N+ j
, t( Q, d. K1 R; I/ w/ Q它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
+ D1 L% S9 Q3 ?; Q
2 `5 `# C2 i! Y# a4 L以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:( E1 c" m" T( \
* ]3 H! f/ g m, D) a### 1. 对“路径依赖”的深度解析:它为什么会选字典?1 s9 o9 j7 G, r0 U6 w, \3 u" O
& D( b, i# T5 q- V8 @ H" I
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。" e/ c9 ~; W; J# [! V6 u& _
1 J/ A3 h N" ?
- “Python化”的思维陷阱: 1 _2 v- u9 I4 O3 G% ^
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。0 T) F/ M, i; A% G# @
4 [. C( Z/ C* \0 J, }0 {9 t
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
+ A% f1 n4 ]0 H0 U+ v3 G8 R8 K ! `1 G- e) K2 c
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
: a1 b, o% Q) g' s! v+ x5 ?
9 T0 y7 W; n8 x2 B5 Z - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。' }: E* e& h6 ~6 ^. J4 E
* c8 |/ u6 h/ F
- 忽略了“Excel原生”特性: 5 T: T5 q! P9 P6 H3 l+ @ U7 w; K
Excel VBA最核心的优势是Range和Array的互通性。
! c/ [, k* V' T! s; o# h" ^9 N
. \! W! {% g& h- y) w# Y! G! `! x - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
! e1 E; `3 M+ |9 X- R : C, z5 b! v$ i0 r# l$ L
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
# g0 Z9 K& v9 U6 r9 b# |
" Y7 U5 x7 Q0 O& Y: l/ L% U% |9 s8 Q4 |/ k1 Q
### 2. 对GLM反思点的逐条点评% N/ c/ I/ \( y$ H& ?
7 L% ^, S7 D" [. i
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
7 y4 V* o, I9 j1 @" y$ J+ d: C. s! O r+ C* W. H4 x; O% I
- GLM说:教科书里键值对是管理实体的标准答案。+ _' M0 J) a# k# r5 P# e6 ~- \, f
& w0 G2 \( r. x( S- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
& u; @4 U. _0 |6 [( ]
! b/ P% M, g0 V1 r6 i9 i- y
5 Q7 u/ C+ C5 o9 l6 F#### 关于点2:“过度抽象的陷阱” (评价:非常到位)* Z6 _2 {! T$ k3 N. q- k( l
; a9 }; v! W1 d& ]8 l
- GLM说:追求理论完美,忽略了VBA的脆弱性。
: @- V9 O4 Z3 G( n- e
9 ]; D! t2 C& W* D* h- W- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。8 l' g1 D% g+ V5 |0 G; G) i3 K
$ f& u7 K D& z+ m& W. u
, _/ w1 ^1 r: H1 y3 J+ n/ ]6 {#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)# R# K( W) k" @ q$ a# ^$ h
N+ K# i/ H; K* I! O8 p$ s
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
. r( S8 {* N/ U8 ?# v# l 2 s3 a: W+ T2 Q' W4 T
- 我的点评:这是最精彩的反思。
8 o+ Z- l+ A3 ?+ m, O) f & b; ?3 ]1 `6 w0 m" e; S/ j
- **计算相关系数(Correlation)的本质是向量运算**。公式是7 N$ T. d {1 E0 |5 H
& U5 |* o& }1 z/ d/ M' @
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。" L% T8 X% P% Z# P+ H* K
$ H8 U% l$ w' \ - 这需要的是两个对齐的序列(Array A 和 Array B)。
" ?' @4 V& a; }$ y8 _' r
7 k7 _1 v( m% X7 @1 B - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
1 k: _4 L# a% @4 i# A% x
3 d! @3 j1 E6 I, j9 W- z3 V5 P C0 p
### 3. 我对它的补充:它没意识到的“工程化”问题! p' J8 {3 L7 r' f
- x+ K$ s7 S- V
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:+ C- s" \! X. [( H% A
9 A, m: c! V n3 t9 n. _. s( |
1. 环境依赖(Dependencies):: ]4 J# {) ~8 f$ Y. Y! D
- G4 l4 u# E, w9 G: l
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
3 u, w; ~- p+ |% z
: }- z& H- C6 t& D0 K3 n. _5 H! E - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。0 S- x$ Q O1 W/ ]8 o
, [# N' ]* @" W; i+ w. W5 Q
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。) L m7 E+ A! @3 q7 H5 I
6 Y! P8 f7 R+ H% K. O
2. 调试难度:
. P5 Y4 t& `' a; @2 Z o4 W o2 R
8 ?: U: T% E, }: G1 o& h g! V/ S - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
% i' e' W$ l& U + p6 l9 l9 k7 b, S
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
! n. b# ~; N; T 4 Q. A) e; u3 D" i
$ m; G1 p5 ^2 ?### 总结0 ~, U2 {. Z! s7 ~/ q7 H/ }% B
1 A0 o9 k4 R. V8 {% HGLM的反思表明它已经理解了“场景决定架构”这一真理。
, H1 M& i9 W. |. G+ J0 z) f1 ^) O) j5 B: l9 W* V# }6 f" T% e- J7 P
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
7 q7 N) M9 P5 A! k p- n 8 A% v3 D/ T5 c6 W* Y# T1 d
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
v3 L1 k d7 l" F
- E+ M$ K$ A6 Z9 L! G
+ ?, s, r6 t. I它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|