我的研究方向是人工智能和算法,游戏。但是我又需要做一些演示程序来演示算法的效果。为了更快捷地做出一个用户界面,以往我是用mfc来实现的,但是当程序逐渐增大的时候,总是会觉得使用mfc会很难管理而且不够便捷。常常听说。net非常便捷,所以希望使用。net来实现界面,用c++来写高效的算法内核。所以这几天不断查询一些有关。net 的资料。现在大概有一个头绪了,使用。net来编写windows窗体程序有三种方法:c++托管(好像也叫c++、cli),还有c#,还有VB。net。
对此,我有几个问题,希望高手指教~~1,c++/cli真的可以达到vc6.0的底层控制能力,而不影响c++的性能优势吗?2,c++/cli属于。net的一种语言,好像也要转换成中间代码才运行,(相对于标准的C++)多了一个步骤会不会对速度有很大的影响(假设是用来写算法的核心,因为一个算法的核心也许被循环执行几十万次)3,c++/cli能否兼容过去使用C++开发的类,就是说能否重用过去写的代码,实现移植4,使用c++/cli开发的类是否能够比较容易地被。net的其它语言所重用?5,有人提到过使用C++和C#混合编程,这是如何实现的,而这种混合程度又有多高?比如能否在调试的时候逐条语句地调试,当程序运行到c++的程序段的时候会跳到该语句,当运行到C#的程序段的时候,又可以监视C#里面的每一条语句?

解决方案 »

  1.   

    你还是先用用.net再说吧。没有用过.net编过程说更多也是枉然。。===================
    难道你不知道 影响 程序性能的代码 只占 程序代码的很小一部分。
    而大部分代码,尤其是做界面的和响应事件的代码最需要的快捷的开发C#并不能完全在性能上超过C++,这个是没用办法的,由其原理所决定。但是:
    1,你能够确定你用C++编写的性能就最好吗?不同人写的代码性能还相差甚远呢!
    2, 你用C++全用来写算法了吗?不是吧,我看你大部分都是写和核心算法无关的东西
    3, 当代码大小超过一定的时候,怎样维护和修改代码就是一个很严重的问题,构架不好的语言很难对代码进行修改和维护,当然这也不是绝对的,只是说.net中可以更方便而已。
    好了,现在谈谈算法。
    偶一直也是研究算法的,但是我并不认为语言环境和算法有任何关系,语言环境你选择最顺手的就行了,其实没用那种语言环境是十全十美的。算法最根本并不是仅仅依赖于语言吧。而是在于你吧?对于极少量的,影响整个程序的核心代码和算法,.net中也是提供优化方法的,例如你可以不用原有类库,使用自己编写的unsafe函数。在这种情况下,和C++的性能差距就小很多,在可以接受的范围之内。
      

  2.   

    the question is easy,but i don't like the title.
      

  3.   

    upup 问题简单,标题太难!!我只取其中一点问题给你解释一下。
    你不用担心那几十万次的重复运算,因为代码在载入时就会被编译为本地代码,所以相对信息来说,影响不会太多。记住,我说的是纯科学技术,你调用了其它的不算
      

  4.   

    谢谢各位的指点,至于帖子的题目,恩,的确不太好,不过不用这样的题目的话又不能得到任何的回答,呵呵,我想大家会理解的吧~~经过一段时间的学习,现在对C++/CLI有一定的认识了。
    但是也有一些困惑,比如opengl本身是C++写的函数库,可否使用C++/cli方式正确的编译?
    而运行的效率又能否达到原来的opengl的效率呢?
    另外关于unsafe函数的编写具体是怎么样的,据了解,如果需要调用manage DX的话也需要设置成允许unsafe,这个unsafe具体指的是什么呢?