c++/cli已经出现了一些年头了. 我想, 这个东西的产生, 遇到了很多人的联合绞杀, 很多人好像毒蛇猛兽一样去看待之.
至于欧洲工业协会由于英国代表的反对票, 标志着微软把c++/cli纳入标准的一次惨痛的失败.
不过, 我还是很喜欢c++/cli的, 哈哈哈, 我这个人的风格就是喜欢乱中有序, 乱世乱了敌人. 何况, 软件的本质是为了完成显示需求, 做出功能. 何必去管他所谓的纯洁性, 一致性.
1. 如果是一个短期的工程, 完成之即可. 完成都不用维护, 为何不用最简单, 最直接的方式, 减少错误, 提高开发效率. 这个时候可选的东西很多. 但是, 还是有有很多牛逼兮兮的人, 非要使用c, 或者c++, 就算是c++, 也非要像一个权力狂一样, 仔仔细细的控制每一个细节, 恨不得把一些关键的代码用汇编写一遍, 那才叫happy, 才叫一个酣畅淋漓. 但是, 现实往往不会这么美好. 假使你非常聪明, 把c,c++,汇编理解的比我牛逼100倍, 那么好, 我相信你写的代码绝对完美, 不论效率, 结构, 还是算法, 代码量, 都是一个最佳配比. 可是当一个变更过来的时候, 也许你实现预料到了, 能够承受, 一顿小改; 如果没有预料到, 肯定是一顿大改; 累的死去活来. 更何况比我强100倍的人, 恐怕世界上也寥寥可数(虽然我还是相信有这样的人, 比如anders, 卡马克那些神人, 他们是和上帝做朋友的吧).
2. 如果是一个大型的工程. 我们也未必就能认定, 混合代码编程, 比单独的代码编程的维护成本要大.
总而言之, 我是十分赞成以及喜爱, 把各种编程语言融合在一起, 让各自做各自最擅长的事情. 计算机技术发展到今天, 大融合的趋势也是十分喜人. 比如.net平台, 突然发现, 好多语言都变得亲切起来, cts让大家都说同一种语言, 正所谓书同文,车同轨, 这事多么方便啊.
好比过去, 人们其实早就发现c, 或者c++写代码是那样的让人痛苦, 即时是一个很小的程序, 也一样有一种杀鸡用牛刀的感觉. 摸一把小刀出来不就可以了. 所以, 有了胶水语言, python, perl等, 程序员发现人生有了盼头, 活活, 我可以活下去了, 不用再为了仅仅是从一个文本里面挑出一些文字出来, 而去main{.///} gcc.. link, ...运气稍差, 还得debug, oh shit.... 而且, 当需要在另一台机器上运行的时候, 还得从新来一遍...
然而, 胶水也不总是这么方便的. 我们知道为perl或者python写一个c的模块是多么的艰难, 虽然是写完之后就一劳永逸了. 但是写的过程可以发现, 如果没有swig, 这仍旧会是一个非常恶心的事情.
现在, 有了.net, 您的生活从此不再黑暗. 当然, java的兄弟们也一样. 比如ironpython和.net框架之间的无缝结合, jython和java的无缝结合. 这是比502还要牛逼的胶水啊, 以前的那种胶水在这面前, 曾经十分顺眼的结合处, 一比之下变得异常丑陋, so ugly...
我是python的铁杆fans, 虽然恨不得全部用python去完成了. 比如我就死活很不喜欢javascript, 真丑陋的语言, 实在向不出来同样是脚本语言, 居然能有这么丑陋的. mit不是已经把scheme撤了, 换上python了吗. 浏览器的大哥们, 求求你们了, python吧....
但是我们还是得知道, 这个不现实, 何苦呢. 有些事情还是c,c++,java.c#等比较合适, 尤其是比较复杂一点的大型框架, 用前者写起来, 心里底气足一点.
我想, 如果我是一员武将的话, 如果我去征战, 我的战马肯定要挑一匹最强的,因为很不幸, 它需要背很多武器.