看到大牛用R调用c或cpp,效率提升明显,很是羡慕。

虾米也是追求速度的,尤其是统计模型的估计和需要跑多重循环的那种,比如我遇到最多的是估计多元garch类的,所以也想继续加强下这方面。

C和Cpp都学过,C基础较好,cpp水过地皮干。我想问问一般通过调用cpp完成的事是不是都能通过调用c?如果是,岂不是不用再搞c++了(可以省力气)。

又或者调用cpp相对于c有什么别的优势吗?

请这方面有经验的大侠介绍介绍啊。

这是一个相当纠结的问题 。。。

其实个人感觉自己玩的话 权衡利弊和个人口味以后选一个就行了

不过 如果有老板或者与他人合作或者将来要向某个行业发展的话 那就用他们用的

回复 第2楼 的 nan.xiao:

能不能比较调用c和cpp相对彼此各有什么优缺点

按说我是最早接触C++的人,那时C++还是需要先预处理成C代码的,没有STL, 是在1990年以前,谁知道C++啊?

但是我对C++一直不熟,话说是因为“对象”这个词把我搞乱了,其实台湾的翻译“物件”更贴切;不过最近看到有人说,好像还满牛的一个大人物说的,C++ 很复杂,以至于没有人敢于说:精通。所以我可以自我安慰了。

还有一个叫linus 的人说,拒绝用C++, 是因为有很多不熟练C++的程序员,写出来的代码烂到不能补,我就是他说的那种人。

至少在我看来,没有熟练STL, 不会BOOST, 不能称之为精通,而且对于网络还有ACE, 对于运算还有ROOT, 这么多的范式方法,到底会了几个?精通没有? 

从学术或者数学角度来讲,这些都是浮云,R也不错,只要跑,都能出结果,而且效果还很不错。

回复 第3楼 的 jerryren:

我来一家之言:

C和C++的区别是C++支持面向对象。面向对象的语言的确不是一下子就能上手的,这个需要你改变你通常的面向过程的思维。至于用那种语言取决于你个人的需求,一般来说简单的科学计算不用上C++这种重型武器。但是如果你的代码需要对现实世界进行很多抽象,那么使用面向对象的语言肯定比面向过程的语言更简单。

我个人觉得C++比较混乱,很早以前我试图自学C++未果,后来学了Java后开始了解一些C++了。C++是在程序员们在实际应用中搞出来的东西,也就是很多东西还没有标准化就已经开始应用了,这就是C++让人感觉混乱的原因;Java吸取了C++的经验,所以设计上相对干净很多。C++11标准相对来说比C++03好很多,但是由于兼容问题无法脱胎换骨,只好引入一些新的概念。可想而知,如果你早就懂C++,你会发现C++11很好用(用那帮人的话叫做clean, efficient and productive);如果你是初学者可能会觉得C++更混乱。

Rcpp提供了一个使用C++的好理由。

看来cpp难度真不小,不能好高骛远啊

Rcpp也可以使用c的

应该不存在什么cpp可以做但是C不能做的东西,反之亦然;只是个人喜好而已,就像我们用什么汉字输入法一样。

回复 第6楼 的 sgsong:这个的确很爽

5 天 后

针对有需要效率提高的,调用Java效果会怎样呢?

偶就会Java,问一下。

谢谢。

回复 第10楼 的 foreseer201:

用rJava包就行了,比纯用R写的(R调用C或者Fortran的不算)快多了。而且调用起来很方便,所有Java自带的library里面的函数都可以直接调用,自己的Java code还是得先编译,然后告诉R查找路径,然后再调用。

9 个月 后

从科学计算的角度来讲, C和C++编程差别到不是很大, C++中的面向对象也基本可以不用. 主要看写程序人的水平, 个人觉得C语言对编程人员的要求要高一些.

我要去整个Rgo出来~~我发现Go在计算领域应该也有前途~~坑比C++少多了

回复 第12楼 的 cyinius:复杂数据结构。C++的抽象会好些。但是吧,你去设计对象什么的和面向过程什么的付出的劳动差不多的说。再者,除了ROOT,其它计算库比如GSL什么的那可是C的。

回复 第13楼 的 oldbeggar:Go给我的感觉是很坑的...且不说方言,现在为止也没有稳定下来吧。

对这些语言现在没什么特别的感觉。

倒是想学下函数式语言,Haskell 什么的。

R可以结合Python使用么?不懂,弱弱的问一下

回复 第14楼 的 enthumelon:Go 1.0出来之后稳定多了,国内都有一些Go开发的商业项目了

8 个月 后

回复 第17楼 的 yangyuancn:rpy,rpy2,pyper 三个包 都可以实现在python中使用R. rpy2安装起来很麻烦,建议直接尝试pyper.

还是C吧,我想学C,C到哪里都能用。