Python不适合researcher用么

2013-11-30 14:22:12 +08:00
 freeznet
昨天交了一门课的final project,主要是对一个算法A的研究和implementation,然后为了起对比效果,所以用python实现了算法a,同时和实现了一个类似的算法b
然后昨天做简短的presentation的结束后,老师说他觉得python是不适合用来做research的,推荐今后的coding都使用c/c++
由于我用python的时候也考虑了一些问题,就选用了pypy来跑,不过还是不明白为什么一定推荐用c/c++
6987 次点击
所在节点    Python
61 条回复
FrankFang128
2013-12-01 09:08:15 +08:00
楼主有点断章取义
binux
2013-12-01 09:19:28 +08:00
@acheng 链接库,网页库。。
wuxqing
2013-12-01 10:17:12 +08:00
python + c/c++ 就可以了
9hills
2013-12-01 11:04:41 +08:00
@acheng 上千台机器的hadoop 跑起来的,用机器资源换速度。

很多时候重点是开发速度。c实在是太慢了

不过纯粹速度上来说,pypy也很快,不能以老眼光看python
acheng
2013-12-01 11:06:56 +08:00
@9hills 你那是有硬件资源啊。。。。 普通的人 比如楼主搞科研 哪有那么多资源 哈哈
notte
2013-12-01 11:26:14 +08:00
cpp有雄厚的资源积累,research很多都是交叉学科的,相互之间沟通用通用的语言最好,像数值分析有Numerical.Recipes (C++)就没有python。
大数据处理也不是比谁的数据bit大,得看你要用那数据干什么,像混合整数非线性规划导入上GB的数据用c++也得算N年。
matlab的工具箱多,科研界很多新算法都是文献一出就附上matlab的工具箱了,这样后面的人看到文献后马上就可以用。
话说楼主你应该看文献少吧,多看看别人都用什么,做research不是在工具上标新立异,而是在思想上。学术界跟工业界是两码事。
acheng
2013-12-01 11:30:00 +08:00
@notte 行家 你说到点子上了。

我处理8G的数据 i5戴尔台式4G内存 跑3天3夜。
wodemyworld
2013-12-01 16:41:05 +08:00
@acheng 别动不动就说什么语言是屎,nb你也写个python出来啊,不懂别瞎bb,以前youtube也是python写的,也没见效率低啊,自己能力挫别怪运行时慢

numpy都是c语言实现,代码都是高度优化的,做科学计算一点问题没有,性能很高,你如果说numpy效率低,请你用c++实现和numpy一样的算法,然后比较一样两者效率,你就用cpython运行时就行,连pypy都用不着

通常不用管语言层面的效率问题,不要把科学研究整成写代码的工作,算法才是核心,我就用python+c,Cpython运行时执行效率低的方法用C语言实现,然后用python调用,如果纯C写,编写代码时间就多了去了
sumrin
2013-12-01 19:34:50 +08:00
伟大的C屌 BS 你们用python !!用ASP 路过
Ricepig
2013-12-01 21:22:30 +08:00
老师说的很对,目前来说在research领域基本还是C/C++是主流,而且很多软件的第一扩展语言都是它们。

从另一个角度看,你如果是项目负责人,你可以规定别人全都用python,但是在你还是螺丝钉的时候,就不要要求其他人都迁就你了。也就是说,你可能还没有牛到可以左右方案(语言)选择的层次,所以,忍忍吧少年。

最后,python提供的语法便利性,在你需要从底层实现一个高效的算法的时候,并没有它作为“粘合剂”时那么大。如果只是调用某个库,那是另外一回事。但是作为科学研究来说,C/c++的库我想也是比python的库多吧。
Ricepig
2013-12-01 21:23:48 +08:00
@wodemyworld 这位兄台,说法不是很有说服力啊。我不养猪我还不能说猪肉不好吃了?
ispinfx
2013-12-01 22:57:38 +08:00
@Ricepig 是不吃猪就不要说猪肉不好吃了
Ricepig
2013-12-02 00:58:24 +08:00
@ispinfx 你的类比更不贴切一点。我的类比中,用“养猪”类比“创造语言”,用“吃猪肉”类比“使用语言”。我回的贴中,逻辑是“你在创造不出python之前,就不能说python不行”,所以我说“我不养猪就不能说猪肉不好吃了”

供你参考。
acheng
2013-12-02 01:50:52 +08:00
@wodemyworld 试问你处理的数据量级是? 我以德服人 就不骂你了
RIcter
2013-12-02 07:49:59 +08:00
@acheng 喜闻乐见黑我大python。话说你为什么说py是屎,我还说cpp是屎。真无趣。
wodemyworld
2013-12-02 08:52:09 +08:00
@acheng 我做神经算法,训练data规模,120亿关联数据

你不要提德,你算以贱服人,见东西就咬的那种
acheng
2013-12-02 08:57:21 +08:00
@wodemyworld 牛逼人啊 神经算法 怎么感觉你也神经了 我只是说py是屎而已 你却骂人 如果你骂C++是屎 我也不会骂你是贱人的 我打算学习py了 大侠 对于新手来说 学py2 还是py3 呢?
wodemyworld
2013-12-02 08:58:29 +08:00
@Ricepig 我已经说了,通常python+c,真正遇到效率问题的时候核心算法改为c代码;
c库多是因为c语言比python早出来好几十年,并不是c语言有多么让人离不开,现在大学里都用matlab了,效率还可以而且学起来很方便,你要说非得追求效率,等你把一个算法用c写出来的时候,人家用matlab连paper都出了,如果你的算法可以并行执行,那么还得做分布式计算,如果你用c去手工实现,等你把分布式框架都做完了,人家早就毕业了,怎么省事怎么来,做科学研究的人不是十分必要的话,不要往码农上面靠,没好处,着眼点就不对
acheng
2013-12-02 09:02:43 +08:00
@wodemyworld 有道理 不过我觉得用C/C++把基础库打好了 后续科研 不需要花很多时间去当码农了 只是起步阶段确实比matlab慢几拍 但是过了那个坎儿之后 顿时会觉得还是比matlab高端大气上档次 如果只是用matlab 面对海量数据的时候 那叫一个慢 有想法也难以实现
wodemyworld
2013-12-02 09:06:26 +08:00
@acheng 你说py是屎,那我和导师用的全是屎了?创造一门语言不是你想的那么简单,存在即有他存在的道理,我同学在MIT他们在学校学习的编程语言就是python(最早是lisp),那你认为MIT那些教授们选择python是因为它屎么?自己不懂可以问,不要不懂装懂说某某屎

ps1:“神经算法”没写清楚,是人工神经网络训练算法

ps2:建议学py2,还是有很多库尚未迁移到py3(例如Gevent),另外一些在py3还有bug;平时建议py2+C混用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/91255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX