以下是引用csyx在2022-3-20 23:46:38的发言:
有位前辈跟我说,不必浪费时间再造轮子。他老人家说 vfp2c32 中就有个函数叫 CreateCallbackFunc,这个 fll 可以到 github 上去搜索下载
一个用类来表达“结构类型”的话题,引来不少编程方面的讨论,感到有点意外和惊喜。
首先非常感谢 csyx 的关注和提出的问题,虽话语不多,但寓意深远。所以,很有必要对此问题展开一下讨论。
先说些看似与编程无相关的闲话,放松一下心情。再就编程方面说说自己的观点和看法。有点啰嗦,考验你的耐性了。
首先提到这位“老人家”,有话说“不听老人言,吃亏在眼前”,老人家的话一定要听进去,尤其是长辈的话。
记得做学生哥时听过一个关于两个数学家的故事,这两位数学家叫什么名字记不起来了,权当其中一位叫“高斯”吧:话说很久以前,有位数学家为解开一道数学难题,花了整整40年,难题终于被解开了,他兴奋之余,将解题过程和答案整理好寄给大数学家高斯。高斯收阅后即时回信,那位数学家收到高斯的回信,打开看后即时倒地不起了。据说回信内容是:我早在40多年前就解开这道难题了。这个故事大概内容就是这样,一笑过之。
相信不少FOX友是在新中国的前30年出生读书长大的,记得那句“造船不如买船,买船不如租船”被批判的洋奴哲学吗;还记得这30年之后的改革开放初期,曾经飞越过青藏高原的“运10”大飞机制造厂下马改造波音飞机的零部件;更还有的是又过30年之后,自己的大飞机又出厂起飞了,真是30年河东,30年河西。
法无定法,讨论问题不持肯定或否定态度。
“不听老人言,吃亏在眼前”,此言用在编程方面而论,这个 fll 会起到立杆见影的效果,搞钱来得快,不吃眼前亏。但是不是有 fll 用就可以安枕无忧、搞钱无尽呢? 如果是商品化的官方的 FLL 有保障性就好,否则就难保证出来的软件生命力有多长久,甚至是来历不明的 FLL,更有可能存在安全方面的问题。开发软件,这些问题都要得到重视,否则由此造成损失怕到时欲哭无泪。
经常也会见到使用 FLL 的人提起:以前用得好好的,系统更新了就不好使了。这是很正常的事,操作系统也没有百分百的兼容。但问题是此时一定要找到新版本的 FLL 支持,否则就如上术据说“欲哭无泪”,损失真是可大可小的。所以,在个人的立场上说,在欣赏人家美丽 FLL 的同时也要学点化妆技术来不断妆扮好自己,当感觉自己妆扮得比人家更美丽时,那种满足感不是能用时间或金钱换得来的。所以,“不必浪费时间再造轮子”,也是有局限性的,就如“运10”下马是为更快搞到钱,使老百姓先富起来,是历史的必然,好为现在大飞机重上天的技术储备提供支持。
说到写 Callback ,记得是好几年前了,在某论坛发表过一个贴是有关VFP多线程问题的,某论坛现在好象连自己发表的贴也查看不到了,是什么时候发表的无从证实。当时是用汇编写了个简单的函数接口给VFP作为线程过程接口来使用VFP的COM(支持多线程的COM)来运行VFP代码,使VFP也有多线程的能力。老实讲,这个多线程只是停在示例上,还真没实际应用过,因为没遇上必要性的机会。
VFP混合编程,目前常见类型有 DLL、FLL 和通过COM接口、脚本接口,如 JS、VBS 和 VBA 等。现在编程可真是门派林立,胶水式的编程语言成后起之秀,真是要集各门派之长方可成武林盟主。
无论是 DLL、FLL 还是之前回复的在VFP过程嵌入ASM,说到底原理都是一样的,都是在VFP进程里载入DLL、FLL、ASM的代码。也许有人当初认为在VFP过程写ASM有点不理解,我也说是另类,皆因写VFP的对ASM有兴趣的极少。编程方面肯定要优先考虑用DLL或FLL,易读好理解易调试好用开发高效;在PRG里体现ASM好处只有一个,短小精干,明码示众,源码开放,无安全性问题,缺点就不说了,就一句“乜都难”。
[此贴子已经被作者于2022-3-21 14:41编辑过]