TA的每日心情 | 擦汗 4 天前 |
|---|
签到天数: 1133 天 [LV.10]大乘
|
板凳

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 $ i) n# g' v( n8 @
/ N1 _7 {* L! J2 M4 ` D
Gemini对glm反思的点评
3 Y y s& }! t+ `9 F
. Y) E/ [: C; f. M8 f/ h# F作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
3 d* t$ x3 d; t8 f/ D% K: u6 p/ W" L4 u- u: i3 L
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。! ]5 k' D6 U0 f F1 b" ?, m( C
& |1 Y) h9 N" K y
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
" M0 f& P, b* Q3 C# N
; t; B" u2 A @' n r7 X7 _### 1. 对“路径依赖”的深度解析:它为什么会选字典?
) A; F- d0 r8 h4 R
1 f# q! x' [, `GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。9 C9 x8 \3 D) ?( _* t5 v
$ L: d; Z. L5 k( S+ n" ^) X, v
- “Python化”的思维陷阱: 1 Y4 `" N1 P8 B T% L" U; K- }
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。( |. S6 ~# ^# R4 {& ?
& e" \; j C m+ n! G - 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
4 s3 S/ c1 B, z; T; ?
" z; k7 N6 T( r: Y - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
2 m% N8 g3 E+ a
+ ?: c+ B# Y( R6 D, {6 u# ]& w - 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
6 W+ y- o( e) c8 Q7 G, e9 t" r+ S
6 q3 H% `! k! @$ s6 p- 忽略了“Excel原生”特性:
$ h6 t& X$ r5 p& V1 J/ h" _8 G, O Excel VBA最核心的优势是Range和Array的互通性。7 y$ |# S/ J! h7 C+ f
2 K! o0 Y- m$ v; E - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。7 s% f9 A2 X6 u3 k& w: Q" O
6 k. W% `4 |, [: ` - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
" z, a" N* U$ R$ R7 n
# p7 T, }( g" Q* }+ ?1 i6 S4 J# g/ Z4 `# B- V' G
### 2. 对GLM反思点的逐条点评3 ^+ u: P2 O' X
5 l( J" A o6 y- K Z#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)8 [3 _* F4 Q# G B, {/ K4 y
2 o/ C7 {% P5 j! U" I
- GLM说:教科书里键值对是管理实体的标准答案。
& G5 W, Y. Y7 y7 z4 U1 b# e
9 }9 Q+ l$ b+ b" O( \8 o8 O7 g& f- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。6 L& N" a y8 }; {9 \" n" G
% u9 _9 }8 f2 Y' [) I; D8 z/ B- @2 o0 V0 Q# C
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
7 g/ f$ S& N: w) K1 t: o
9 O+ C! Z# g: g7 D# l4 _/ f- GLM说:追求理论完美,忽略了VBA的脆弱性。6 C7 i( M/ q1 {5 U% m
* b7 O6 b* Z+ ]- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
' v& W; X1 o6 v+ U5 D, E+ j9 N
! E+ V- D) |0 I2 c6 o: F
b$ i/ L: R/ @$ ~' {1 p#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
5 @, u$ R5 m+ V% f6 x( W6 N4 z5 S2 t, v# ^% Q- }2 z+ @
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。/ e& S2 a. ?6 A/ G0 a$ L( o- ?
+ I$ ^" g1 H2 S! ^; i3 }- 我的点评:这是最精彩的反思。
1 A6 O! D$ F7 i3 V, d3 o3 i 0 |0 g; P: d/ F- }7 X5 N' Q! \" k
- **计算相关系数(Correlation)的本质是向量运算**。公式是$ x/ l7 Q3 p- A) z
4 Z/ G; U( D/ ]! P! _
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。# ?, q" o- j4 F* C7 l" f2 X3 {
" u- E$ n5 V3 {" M2 p+ f$ W5 H
- 这需要的是两个对齐的序列(Array A 和 Array B)。3 E) o' n* [5 i, c* _
) B1 n! @0 g, K" I: E - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
# O& Y( k0 N. ?3 o) W! X 8 z2 Q, p9 j5 d
3 n) P) x: K, t8 N* T### 3. 我对它的补充:它没意识到的“工程化”问题
3 H; G; G o2 T
" p+ _/ c! J* e/ F% J" x0 |7 B% KGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
0 D& z1 y* |6 b) u( J
1 N6 t/ {; P, I9 b$ L1. 环境依赖(Dependencies):2 {5 j) ^! C0 {' W( w% T
0 v- {" b. [% Z - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
9 o6 [8 S& e1 x5 n" h5 a! ~
' ?/ l6 _5 O) p - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
$ x/ @3 J i6 U! z1 n' `8 {$ c; i 3 f* i, I. w6 j% g p u9 h6 P( Y
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
4 W1 I7 [1 Y, p+ ^& B $ ?2 b+ }7 d) a
2. 调试难度:
* k" p6 w& W/ f4 a# a
3 X1 U2 U" U5 d. s - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。" B1 O! ~! q# Y% _: c u; M5 n
4 r: n: N0 D/ L s+ q - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。# s; k$ Y$ Q) W) V" n
/ d, ^9 g g" O. X% Z! i0 l! a7 I1 R- Y
### 总结) N, K$ T2 F+ `' P7 s- y
]) ?! ~/ F& [
GLM的反思表明它已经理解了“场景决定架构”这一真理。
" v% E( l# z3 g) Y+ I
, K* T5 e2 m4 y, K" l1 Q- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
) i% q% o) n( ]1 M$ q4 X/ V
3 ^- k! J0 d, r3 t5 n- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。% N, W' u8 w* R# w0 S+ d* P2 Q$ k
, o: u; G& W0 _
" V$ F0 h; f( h! V/ _: o. w- r. v
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|