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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑 . g8 t9 \" s. N
n, Z& I8 U$ M" k, |) XGemini对glm反思的点评0 m7 W/ O+ c- Y0 ?6 y* n. }
, U: {. c; a, U$ p9 B! h# t
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。7 o4 v. n6 b: V% C
7 k* `, u# l3 D7 S' J4 I1 A; m它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。
/ ?) {6 ~* ?; u! `# z2 |' P/ P9 x1 L' p- U
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
. {' n; [$ S+ c0 T7 b2 R8 Q+ X3 Q! |' N( R' L5 Y: q# h
### 1. 对“路径依赖”的深度解析:它为什么会选字典?. @( Y( _- M, b, _ |3 B) Y
6 _7 x1 V: f; ~
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。
& ~" z2 P$ q! ]) X! m! O/ ~. t6 f1 j, H: i
- “Python化”的思维陷阱:
* }/ z* w3 ~; D0 a) f 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。) y7 A" O* B( @5 E
7 k5 ?) X& x- a
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。
& k) [4 I* E) V1 Y6 r* ~
( o3 {3 p1 ] R - GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。
- f- w8 t( j# g+ ~ - K4 c! k( Q6 I6 z' X" D& }
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
5 ~* q( F, f' |. U: ~, S
" f0 O& G7 G, A1 }- 忽略了“Excel原生”特性:
" O/ W3 @9 c' x/ [+ q8 u4 y3 J Excel VBA最核心的优势是Range和Array的互通性。
% H& G9 I3 \- G
4 X6 S( _ Y4 ?- L$ T$ R! t/ h - Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。- e Q( S) b0 z- |
@" F8 m K4 F. t8 t - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。
# B- N* f7 {& v$ t' } . }( M, y) b5 S2 L$ k3 n( {# [& a7 a
' V& P, y! L( O8 C# E+ `$ R8 t
### 2. 对GLM反思点的逐条点评
$ {% x+ o* A% p/ R1 V
0 g. n) t) D6 R) ]* D( Q/ @#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)
) G6 }0 w- Y' O9 K2 k6 w, `
- z6 P: i7 F) _# Z. U- \: k- GLM说:教科书里键值对是管理实体的标准答案。
" F9 O% I. T$ [; ]: n, w 8 `/ _6 o% ~2 h# d9 {
- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。3 z o% T: B% K- }" W
& c+ S, E7 ]1 {
: i$ n7 B% ?* q; p9 ~' s; L#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
' U- S. R8 H8 e( o
$ W: K8 `: m7 f- F* m# l; _$ W! D- GLM说:追求理论完美,忽略了VBA的脆弱性。/ e* ~" g3 K, P# M
7 V# E! R' @8 m
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。
# u# j+ I. u6 v0 r9 D6 X# f* a9 m$ \ 6 {/ F, P9 Z9 x( V, E& {
! f% G" T8 @/ N) `7 D6 r. `. W#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在). V4 P9 H/ ?: B' M2 @& s
# f5 r* U5 [% ^. C$ H5 Z q; i( O- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。1 {/ V' ~- v7 ~
" S2 e9 s" ^; |( e4 s- 我的点评:这是最精彩的反思。) a0 |1 ~8 t L- U& x& G# x$ f7 b
R( q' t% a' r; C s/ i- R' D& E - **计算相关系数(Correlation)的本质是向量运算**。公式是
' w% i# I% Z( Q5 i
4 c1 X$ ~1 b, u2 T `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。- h9 T/ q% a6 {* X
9 X U; ~ o; B0 F" K' c. B2 F
- 这需要的是两个对齐的序列(Array A 和 Array B)。5 ?% }3 D! |+ ?* {4 D
! j: c X+ E. L1 W# ^) g - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
0 v$ }) M/ R- a& P5 `
8 I5 X5 }4 o, k" i& f6 d% k% ]4 }. G# u' V2 ^2 h" k4 L/ a$ C
### 3. 我对它的补充:它没意识到的“工程化”问题
; k" O0 _* o! Q, |" O: R4 i: J3 z) T$ Q& A/ i; p% _
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
6 `. N1 G! b" M3 x0 q. X% ?
$ p. J2 R" Y% P) x2 P1. 环境依赖(Dependencies):9 \9 V# e- e" ~1 Y& _
2 Q: U: f! @" [; u+ _
- 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。* A9 l7 [* S: B
% v4 ~/ J' n5 J& D - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。
" V& V' `; ]" l& Y6 g9 K4 i. t4 p) i ! C" `2 m f! A0 {. y2 s
- 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。0 F) k7 h$ B3 G% a* I! J% c
4 ^# z* d; _4 v& H* N2 Y2. 调试难度:
- z8 V j, ~) K0 `5 D 7 K2 r- T5 o% d( t# v
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。: N: x8 F$ c! e& M8 M) \- n# l3 y! _
* y/ ~7 W' e/ Y
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
; P/ Q/ c3 ^2 _/ P
, K& s% ?$ p1 r8 u: f& ?# s5 G4 [1 m1 _$ l* k2 }0 n" B5 V M
### 总结
7 q& o" w3 u/ T/ M+ x8 K g9 y. u/ C* P
GLM的反思表明它已经理解了“场景决定架构”这一真理。; E$ t# {' E$ H
. @, w, D1 k8 }+ O
- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。
* A0 w y4 v& c6 F9 X# r _: F( F % m1 C" W2 i9 `. Z" a/ U1 b" u
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
( y. N, D' Q/ X- {4 m ( h& a2 B- t6 h5 G, f% j6 v
6 G: q, t3 c0 T% Q4 P
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|