今天尝试封装一个 lua 到 c++ 的绑定,突破了很多细节问题,在快要完成的时候发现走不通,其结果自然是令人沮丧的。在模板和宏的各种技法下挣扎了一个下午,杀死了无数脑细胞,得出一个悲剧的结论。每当要一些 c++ 的奇技淫巧来实现看起来本不属于 c++ 的技术的功能,不管成功与否,我都有一些负罪感。语言本身是因解决工程问题而生,如果在项目开发过程中还需要花大量的时间和语言细节打交道,那么这个语言就是一个开发低效的语言。很不幸,我用了多年的 c++ 就是这么一门语言,我承认,今天这个问题其实是能用 c++ 解决的问题,至少 luabind 里面已经实现,这充分说明了 2 件事: 1 : c++ 太复杂, 2 :我的智力不足以驾驭它。
屁话说了一堆,现总结我现阶段对 c++ 的认识
1 : C++ 太复杂,非常复杂,不管怎么强调都不过分(或者我太笨,非常笨 :D )
2 : C++ 是一门可能很多天只能写出几行代码的语言,因为很多时候你都在用宏和模板做反复的尝试
3 : c++ 是一门可以让程序员说出“这是我写过最为精巧的 5 行代码”的程序语言( Alexandrescu 牛说的,我赞同 + 围观)
4 : C++ 是一门回报小于付出的语言
5 : C++ 两级分化为库程序员和应用程序员,并且 99% 以上的人停留在应用程序员层次
6 : c++ 的设计哲学是:让 1% 的库程序员用尽各种奇技淫巧来为 99% 的应用程序员提高开发效率——看看 boost 吧,一大批标准委员会的牛人在里面
数落了 c++ 的诸多不是,我仍然认为回归到 c 是一种退化。并且,存在即合理, c++ 至今仍是运行效率和抽象能力中最折中的选择。所以,在特定的领域,我只能仍然使用它,但需要记得的是:我们使用语言是解决实际工程问题,切不可钻入语言的细枝末节而忽略工程本身。
屁话说完,本文结束。