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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 - f- G1 {, G% B y% E. x
* y& {1 P8 i& D0 i
Gemini对glm反思的点评
$ \% f" V! N( G! S$ J
% L* y! V9 f1 W' P& d8 W% O& M作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。! S. C2 f3 Y6 d0 ?
' S, |5 P/ N! ~- ^& l k; b它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。$ _# a6 M Z( X' M/ X+ L2 ~5 H
, J/ d1 w, U; S; U- W" U以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:" N: M2 }; P7 i- v* v- E# {
- f% [ v; p5 o4 e7 }0 q7 @### 1. 对“路径依赖”的深度解析:它为什么会选字典?
2 x+ @. Q, q# P. e) n! a+ w" R5 M: X/ M. v/ Z
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。9 L$ v' g( L- T8 d
, r" p* l( w/ K' i/ y" R7 G
- “Python化”的思维陷阱: % F7 i$ E- P* ]
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。
" E& M- R! c+ c! Z5 r; r* z) T
/ w- I6 [& z4 U/ M4 i+ i - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。5 f$ `9 n' j# i' e1 H
* _# V7 u+ r$ S, g3 m, Z5 w) y - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
5 k" M j V6 l ! i+ x, ]* U0 B9 T2 A. s: N$ T
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
" L) l( L, N- g# v- O ) z+ Y* [2 V; R6 q5 m( p
- 忽略了“Excel原生”特性: - s0 q' b6 J; }* h* Y
Excel VBA最核心的优势是Range和Array的互通性。
3 L# ~: w+ J! G; t* m , A8 w+ C' M" I0 \- ^
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
* x* o) g) v; ]% s' f4 U7 M! h, _ / A% B n1 \- D9 [+ c: o# o; X
- GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。, n* `. M4 i) L) w' J) n. c
, j/ u+ Y3 I! U5 a. Q/ R
* A& W8 `( X4 T
### 2. 对GLM反思点的逐条点评5 O- T8 a% q& W
[+ m% T, x* |0 U
#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)9 p* M/ w- P) s' j* E. B; \+ U
7 {0 F; ^3 S2 K3 p7 U: {- GLM说:教科书里键值对是管理实体的标准答案。
4 l9 |7 T9 c0 m. d % n, J; e8 G. V+ C c
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
( S6 S h) b$ G
% S2 E9 j: b d' w4 x$ ]
3 n# B8 j9 h! ^& f#### 关于点2:“过度抽象的陷阱” (评价:非常到位)' i5 c; ]- o+ H% }# _
' s* T% r- U4 H# A0 Q8 X- GLM说:追求理论完美,忽略了VBA的脆弱性。6 }$ z/ f5 n' n( L2 {
+ x2 s) k+ k3 f( r, e
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
. }0 S+ w, a# F 7 V3 A* ^' ?5 _* F8 G. C/ r
* ~- S$ u4 x* {5 n+ S7 N, |
#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
8 K9 d5 K2 ]/ H% R0 f ?! i! X& d7 K0 Q* C
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。3 M" R4 u7 z& F$ W# |0 T
9 |; P! A0 U" t
- 我的点评:这是最精彩的反思。
4 v0 j% y+ f8 w- o3 W 2 [' e/ m/ B3 ?: A2 O, C( Q7 V0 b+ q
- **计算相关系数(Correlation)的本质是向量运算**。公式是
2 _% ]3 ^$ q8 _- W
: ~* y1 n; e4 E$ j& ]" i `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。" U: l! X& V5 V1 D, ^/ |9 w: j
5 H- y0 D0 T! ` - 这需要的是两个对齐的序列(Array A 和 Array B)。" ?) }4 Y% {: l# X! z0 g% F
$ C/ I. ^9 F5 H9 a8 k6 z6 U - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
2 h9 x1 A4 n: \% b. A. Y' {' @
4 Z! N6 P5 ?, _) _
! ?# d5 P# ^9 E) t### 3. 我对它的补充:它没意识到的“工程化”问题
* S( f3 h& _4 P$ I/ _$ p; Z
& d* n# B( E8 v. z: }GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:/ \9 P; `1 u6 E; `% E9 Y
. h" n' X1 T, T7 W1. 环境依赖(Dependencies):
& s! t5 L; P R+ B: D
; s2 g3 ?. q, Q/ n1 |3 b5 a8 D - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
& N F3 B6 L ]& F: J 5 Q2 b( f. [7 \+ ]9 U8 X$ S
- 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
- U4 y J7 x$ n0 ?# q % O, s, d) B/ ~' o
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
- U# i: ]% L* b$ v2 L! }& F 7 @8 o( j* v" T2 k
2. 调试难度:/ N: s1 U9 k! @+ O( [
# b& N" X# G4 H) h - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。# i( D, {$ H7 S" x: g& y
, A+ _* ?/ L8 ?- ?, {+ g$ U
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
& I% E$ B& G5 U/ W( V# J% z$ e y+ b- D4 \7 U4 o+ Q- k: K" |
" P4 q/ j( C5 U& M' D0 S### 总结6 `% U5 |! N( z/ V% Z5 n- F+ D( Z
( n- l. N1 ^, s1 m" S' }- MGLM的反思表明它已经理解了“场景决定架构”这一真理。
/ K( Q3 |! q7 i! b- q! ^
1 B* j0 M( _$ [- ?- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
2 _ N$ ^, C* O3 i
8 A7 w$ l$ j9 q- Z: [& X/ ^! I- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。1 F& i0 E. Z0 f/ G- H/ N2 Y( |
3 h, N- z. ~5 D: b
4 h4 J W" a( t2 N9 f它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|