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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 / z4 ]1 [$ l7 p# k
8 `+ i5 }* i0 q5 C/ O- N# qGemini对glm反思的点评
2 z* S! S6 F$ w2 s
* Q3 p6 G' o( \# h- w作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
: y+ _: u' X, M7 N; c$ Y6 t; G- X- n; K; a6 y
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。& r' }& R& m" q, H
$ q9 ]7 Q0 `& ^1 s. }
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:% a* |1 P7 k) @/ f: z( F
- J2 f) L* e* p l, f6 l, T, O" ~### 1. 对“路径依赖”的深度解析:它为什么会选字典?; a3 f' i. B6 Z- @$ K
6 e" V0 V/ h4 J( `
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。7 X, x$ \0 q$ i9 ?- r
/ b6 `$ P& A5 T, P# o9 p
- “Python化”的思维陷阱: . g: T5 j3 H. Z3 L( a1 y$ s; [
目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。, w& M1 @9 O9 P8 c' |( S# ]
+ Q% k& p7 D% y* [: x- u
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。8 h9 ]8 c! d: n9 e( p
% v. ?! _& s4 [+ b' p( B/ I' t - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
* x* m: X6 W, e- Q" M. s) k / `" o3 T4 j' ^9 F
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
2 U" ?4 S- t: n " _8 F3 U4 ^ t
- 忽略了“Excel原生”特性: 0 a% v5 j! x$ s \! [7 j
Excel VBA最核心的优势是Range和Array的互通性。
. x E$ W7 S& S0 z9 v9 }% t0 Z0 W 4 y! y- }5 `8 O2 Y9 u+ v$ O
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
- V( X, [$ C3 J+ `
; f2 f9 y- a- _7 E - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
q/ J( M7 x# T% ^ ' W& L* w( O$ ^$ }
( {2 Y; P# D2 J- M$ x### 2. 对GLM反思点的逐条点评/ c4 ^6 y: r( m. m
9 R/ j8 G0 Y5 J; x! d#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)! P8 G+ E7 L) Q7 Q% @8 T
$ B. `: L6 O! v: D1 L, V
- GLM说:教科书里键值对是管理实体的标准答案。
% @* a5 Q' Q0 D# X* l
( L/ I0 o1 g2 M! I; r; B7 u- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。
, |7 f: c7 o) p6 t
8 J$ u) f% h0 V9 n$ C( R: |
. _4 }+ Y/ D1 D#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
% ]3 X& p2 I+ T* p c6 x6 i( y- ~9 [& q4 v" ~8 S2 D3 J
- GLM说:追求理论完美,忽略了VBA的脆弱性。
! j; t: U/ W! |0 p0 m4 E" P- H , ~/ A% q1 M# @2 G+ G: A- Z. ~
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。& u/ J" ]# v8 B1 S
$ t" p6 K( { ?' u: k
1 z. H& x# _8 P2 S#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)
' o- U# \2 ?" p/ c$ `7 `% U# Y5 y) i+ `1 ^4 l
- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。
' G! T$ W+ S& D2 k6 _ 0 k% u+ i* f: ~) Y. Y0 ?
- 我的点评:这是最精彩的反思。) I" u* c5 }0 n! a* f$ P7 u
0 {7 f) h. B$ k# z - **计算相关系数(Correlation)的本质是向量运算**。公式是2 p& `2 A+ O5 ?" e7 e
/ w: F# v7 g* F3 H, X
`∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。
/ }9 S1 V, @+ i) D) }+ }- p
/ e0 N. q6 ]2 s - 这需要的是两个对齐的序列(Array A 和 Array B)。
# ] ^; _; O& z5 b0 G$ i
5 y: E. `/ z0 f( M. l - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
# T" H- z* {! n + J: B! V7 p& H
% l; h4 B3 j2 L( |9 `8 A; ?/ t
### 3. 我对它的补充:它没意识到的“工程化”问题
* _' v. I( T* |" U; s0 I6 ]
( ?1 ] i+ y8 P- w2 n3 ^/ gGLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:, _# m Y, J$ W& j
. W4 @9 S+ M! {, g1. 环境依赖(Dependencies):% H" l% ^* F+ t% r3 U# ^) J
8 d$ u9 O+ _% c! e7 s" Z$ M
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
4 s2 q2 E( P% I5 U* H0 c, Y% R
5 f% [0 f: `/ X" j - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。2 @! X- \" g0 e; z+ v
6 _5 K/ K% ~' Q$ O$ y1 T% j! @: K
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。
6 V" |/ R S/ C4 l8 b, _ 3 [% O* c8 p0 ^, m# ~5 Q4 {. j
2. 调试难度:
3 V2 V% d8 p' L) q, M& t
$ [5 ~( i; W/ ^2 Y O - 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。
' m: e" a. z+ ~0 K8 `
4 }, j3 Q, v1 l1 e2 u - 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
6 Y8 h1 ?3 K, ]" X( Y7 x : \; L. B# a, B' U) `2 K
5 V' ?, v; e3 i9 r5 W
### 总结& c2 q4 W( ~5 H0 X# g' u" e
9 ]* b8 I9 q: k6 e# F3 r8 kGLM的反思表明它已经理解了“场景决定架构”这一真理。
4 \2 e+ v2 Z6 ?5 [8 z) h- j! V" O, l% j; r8 x5 C
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
; g( E4 g. s5 |$ d) L
" z9 U2 f; F; J/ W. i- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。( x; U& n, Y. s% T! z. `. x! E5 b
3 g! E2 ]* [$ t2 c, Y2 ?+ ~" a: P0 q
, \9 W( ~2 ?5 O( Y) ^: \, x6 S它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|