龙听期货论坛's Archiver

龙听 发表于 2018-4-14 08:52

为什么不直接用C++开发CTP

pyctp,c++ ctp,还有c# ctp,我都用过一点,不过都是只做了一小部分工作。
在我看来,各种语言核心逻辑部分的代码量都差不多。区别在于基础库的完善程度和语言本身带来的开发调试效率差别。
即使对c++很熟悉,开发效率依然比不上c#,因为将来做策略开发,会频繁的修改程序,然后运行,而c++的编译速度太慢。另外,c++语言和开发环境决定了其调试的代价过高,综合下来,c++开发ctp的效率要远低于c#。
我自己的感觉,用C#开发,绝大部分时间是用于业务逻辑,而C++很大一部分时间是用于解决语言和环境直接、间接带来的问题。
从效率方面来看,经过我的简单测试,相差不大(不超过20%),因为stl和boost范式鼓励在栈上创建对象,对象复制的开销很显著,而C#中传引用的方式则没有这个代价。此外C#中创建对象的代价要小于c++堆中创建对象的代价。
当然,相对与C++,c#的限制要多一些,比如跨平台(mono相对不成熟),c#模板、运算符重载的约束比较严格等。总的来说,我倾向于C#。
对于Python,我在写复杂系统的时候感觉比较吃力,尤其是在做面向对象的架构时(面向对象机制不完善,也没有函数重载)。没有静态类型检查,时间长了,代码反复修改之后,不知道会有什么陷阱。而且因为动态类型,编辑器的自动完成和提示也很弱,以前的函数要什么参数要看着代码想一会才能想起来,很影响开发效率。
所以,我现在又回到C#了。
我的建议是,除非对C++及开发环境用的很顺手,并且积累了完善的基础工具库,否则用C++的代价很高。

龙听 发表于 2018-4-14 08:54

百度上面的一个回答,现在我也是晕的厉害。基本上可以确定的是CTP接口用的是C++写的、然后自己的策略是用C++,c#还是Python 的区别。 当然窗体还是C#好一些,python的不了解,有懂这个的可以在这里贴一下情况。

页: [1]