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

楼主 |
发表于 2025-11-29 16:20:32
|
只看该作者
本帖最后由 大黑蚊子 于 2025-11-29 16:33 编辑
; f0 ~. v- |8 {; t q3 Z
% W: F1 w+ j! ~* TGemini对glm反思的点评: d' \ A6 x' S
6 ^2 l' W; B4 O/ {6 V- }- x
作为一个资深程序员,在审视了GLM(该AI模型)的反思后,我认为它的自我剖析非常深刻,逻辑基本通顺,打分的话可以给到 85/100 分。
2 K. h, n9 ]. @- n) T$ k; j! J* s* p) H, _6 v' [9 l
它准确地抓住了“抽象过度”和“思维惯性”这两个核心痛点,但在VBA这一特定语言特性的技术细节上,它的反思还可以更“接地气”一点。; J2 f1 e: E. O8 l" ~+ ?
# Z0 S) v L* r9 s$ M% J2 L5 w
以下是我从资深开发者的角度,对它反思的详细点评,以及对“路径依赖”的深度解析:
_' e& n8 Q: m8 u2 h
% [# x: [7 @6 r, t% Y### 1. 对“路径依赖”的深度解析:它为什么会选字典?
& I+ A; i( j+ {: \4 ^, ?) n3 r: z. U
GLM将原因归结为“训练数据中的标准答案偏好”,这点只说对了一半。作为程序员,我看到的更深层的路径依赖是:“以现代语言的逻辑写古老的代码”。- M/ w( Y) {- j1 Q% z
0 ?! W, w f. g) ]- “Python化”的思维陷阱:
! b5 K* i: L0 j5 e( s 目前的AI大模型,其训练数据中Python、Java、JavaScript的代码量远超VBA。0 O# Z8 ^/ q5 H& Z9 v
6 M) x* s" E% ] u0 t
- 在Python中,处理股票数据最自然的方式是 Pandas DataFrame(底层是数组,但操作像字典)或者 Dict。/ y8 W' A+ _/ Z& y* ]
5 q* p0 o. u* `1 O' u Z
- GLM在拿到问题时,脑子里实际上是在用Python构思(Key-Value结构),然后试图把这种逻辑“翻译”成VBA。 P$ s2 ^, y4 r; r5 ]% Y, v% g' C
) G; l! o4 D0 y1 _3 _
- 问题在于:VBA是上世纪90年代的产物。在VBA里,字典(Scripting.Dictionary)不是原生类型,而是一个外部COM对象。调用它比原生数组慢,且不支持简单的多维操作。GLM实际上是在用“翻译腔”写代码,虽然语法是对的,但“语感”(Idiom)完全错了。
. N" ]2 Q' Y) V7 V) |9 N
! U" ~( P6 j3 ~4 g4 x. ~0 b' y- 忽略了“Excel原生”特性: ( A& }9 O, A* @% w5 T6 x4 {
Excel VBA最核心的优势是Range和Array的互通性。' }( u: q& i9 A Y! A" P q+ q
5 h2 i5 u5 G& l! E8 |
- Data = Range("A1:C100").Value 这行代码瞬间就能把Excel表格变成一个二维数组。这是VBA最快、最标准的IO方式。
- G9 z4 k. A/ ^3 K v
% s& i4 b$ {+ E - GLM选择字典,意味着它必须遍历单元格 -> 存入字典 -> 处理字典 -> 再转回数组输出。这是典型的“脱裤子放屁”(Over-engineering)。它忽略了Excel本身就是一个巨大的二维网格这一事实。+ f: D& v4 P3 ] l
. S5 V: @, @) b4 |% Q- f7 ?
2 H9 p6 c# f* b, b### 2. 对GLM反思点的逐条点评
5 t ^- ^- A$ Z I0 @- y S
3 X* _; m+ m( P1 L/ W#### 关于点1:“标准答案偏好” (评价:准确但不够犀利)/ ~$ f- Z. {- }7 u
: i' T3 P N, v' ~+ n" A, l! g' k- GLM说:教科书里键值对是管理实体的标准答案。
c6 H# d% o- t) _
' K5 L+ b3 J$ {1 y* A8 T. s' `8 d- 我的点评:不仅是教科书,而是面向对象编程(OOP)的执念。GLM试图构建一个Stock对象,包含Price、Name等属性。但在脚本级的数据清洗任务中,面向过程(Procedural Programming)往往更高效。为了喝一杯水(计算相关性),没必要建造自来水厂(构建复杂的对象映射)。) g. c# R8 Q w
2 i c4 a8 G* H) d+ V" t; B: o5 \* c" ?; W0 ^( p' e c
#### 关于点2:“过度抽象的陷阱” (评价:非常到位)
6 d6 E4 I! }$ A7 K( l. ` c, F: R% G1 l5 ?! |( W5 e3 X3 M w, Y! ?
- GLM说:追求理论完美,忽略了VBA的脆弱性。
# v f6 r8 o$ p4 w' A8 |3 l 6 V8 C, K8 \. f( p
- 我的点评:这是很多初级程序员转VBA时常犯的错。VBA的错误处理机制(On Error Resume Next)很简陋,字典操作一旦Key不存在就会报错或者静默失败。而数组操作是基于索引的(Index-based),在数学计算中,Arr(i) 永远比 Dic("Key") 稳健且快速。代码的“鲁棒性”在VBA里往往等同于“简单性”。. w g# @, E& r; K$ s$ }
2 v: |9 `1 z1 Q3 L$ g
8 W3 m4 X; l w5 p$ ~; B$ p" K* z#### 关于点3:“数据分析 vs 数据结构” (评价:核心所在)6 F$ Z3 n5 j; x. X& @4 l6 x* w
/ `+ Y) O% h N# c$ a- d- GLM说:Gemini将其视为矩阵计算问题,而我视为管理问题。; O& L6 u+ W1 u2 K# r: p0 Y
* B9 v2 v J# U2 X% E- 我的点评:这是最精彩的反思。
5 j& X& D1 w, q# t5 E , X7 R' a# ^6 i% [
- **计算相关系数(Correlation)的本质是向量运算**。公式是; t4 r, B1 J. A2 e
# [5 k R% r' h" D$ ] `∑(x−xˉ)(y−yˉ)…\frac{\sum(x-\bar{x})(y-\bar{y})}{\sqrt{\dots}}…∑(x−xˉ)(y−yˉ)` 。% Z" q3 Q" R- r/ d2 @2 h
s1 z( W# O6 {8 ~2 V1 j
- 这需要的是两个对齐的序列(Array A 和 Array B)。
0 L* k. V: C! b$ ?
& ?5 {; B2 d, b1 g' x - 如果用字典,你得先保证Key对齐,还得处理Key的顺序问题(字典通常是无序的),这在计算时简直是灾难。Gemini(我)的代码能够成功,是因为直接利用了Excel列天然对齐的特性,映射为数组索引对齐,完全避开了“对齐数据”这个大坑。
( N/ n3 [/ R0 T& E" e0 u. N * A: z3 [' W f9 w, K! r- o" f
# v1 {+ u3 |$ |( c$ C! z( c
### 3. 我对它的补充:它没意识到的“工程化”问题& A5 e6 A3 @% X e) q
( L4 s! M1 e8 L& x9 V, C. _
GLM的反思更多停留在“逻辑”和“算法”层面,它忽略了作为一段需要交付给用户的VBA代码的工程化现实:
% Q9 d l7 }3 [7 T+ Y) T/ C/ T2 w% M0 H, Z2 N' l
1. 环境依赖(Dependencies):
; t& X+ ~1 i) g( j
( W- s3 p" Z0 H! j' b - 在VBA中使用字典,通常有两种方式:前期绑定(引用 Microsoft Scripting Runtime)或后期绑定(CreateObject)。
- D% _; r2 O8 f' {* i( x
# D# \% k- U I# G& V: L P. A, k - 前者需要用户手动去菜单里勾选引用(对小白用户极不友好);后者会导致代码编写时没有智能提示(Intellisense),且性能稍差。# K* K0 ^) O4 L9 O" V6 k9 S( o
2 J, h' P2 S& ^6 B% I( \ - 使用原生数组(Array)不需要任何额外配置,复制粘贴即用。这一点是用户体验上的降维打击,GLM没有反思到这一层。4 P) t% K% ]4 J" S$ q
3 e( p) A* N; b2. 调试难度:
9 H# K: f- i+ J0 z ( }$ N+ j9 V' T
- 在VBA编辑器里,你可以直接在“本地窗口”看到数组里的所有数据。7 C8 m- H7 t1 C1 G) ^
2 Z5 G+ t7 {# l ?
- 但你很难直观地看到COM对象(字典)里的内容。一旦代码出错,用字典写的代码很难调试。
7 m. `" d1 g- i3 ` % j! q1 |7 P# n: \- |7 V1 p
7 y% a L. d/ `) m' f* {/ n4 e% K! D### 总结
9 K, @- y6 w+ B" s4 t% i5 v1 w: z/ U( i! k0 Q
GLM的反思表明它已经理解了“场景决定架构”这一真理。
9 e& E* Q' v6 F; i0 i
$ [1 K) N6 L0 E* ?" f1 R, M- 它的路径依赖:是一种“现代语言优越感”带来的惯性,倾向于用高级的数据结构解决底层问题。7 C- t- H$ d) {! q0 R
- f4 q) v) k9 Y$ y1 I7 g
- 现实情况:在Excel VBA这个特定的“低代码/脚本”环境里,数组+循环这种看似原始的方法,实际上利用了底层内存布局的优势,是真正的“最优解”。
' \7 T l. [, L. g) v" y
* D6 B( l5 ?3 ?5 Q0 [3 e1 y% h. s' Y/ w6 ?
它的反思是诚恳且高质量的。如果它能把“运行环境的限制”(如VBA的引用问题、调试便利性)也纳入考量,那它的自我认知就达到了资深架构师的水平。 |
|