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++
7009 次点击
所在节点    Python
61 条回复
acheng
2013-12-02 09:14:14 +08:00
@wodemyworld 今年在MIT学习了一周 他们py matlab 用得较多,我还是坚持用C++搞定了小组的项目。 py 的缩进 不习惯。。。 我想学习py主要用来搞定网络方面的程序。至于计算方面,还是调用lapack靠谱,不知py读取文件的效率如何呢

看来这里牛逼人挺多啊 我以后再也不装了
est
2013-12-02 09:32:05 +08:00
C/C++ python 都靠边站。做算法的,VC++6才是主流。Turbo Pascal 都能爆你们三条街。
ispinfx
2013-12-02 11:44:56 +08:00
@Ricepig 嗯。我俩针对的回复的句子有所不同。谢指教。
ling0322
2013-12-02 13:52:08 +08:00
可以参照一下 http://radimrehurek.com/2013/10/parallelizing-word2vec-in-python/ 用Python+C实现的word2vec比谷歌纯C实现快了2.8倍

感觉Python速度快,喜欢先用Python测试效果,最后再用C++实现(
luikore
2013-12-02 16:10:17 +08:00
靠谱老师都会跟你说: 用你喜欢的语言.
语言的性能差异在使用者的资质差异面前就是个无穷小量.
Ricepig
2013-12-02 17:44:20 +08:00
@wodemyworld 我其实没有怎么提到效率问题,我强调的是C/C++在“当前”业界的普及状态,作为一种大家都懂大家都用的公共语言。这点是python无法做到的。以后的事情以后再说。i

你得考虑大家(同行、评审、同事)懂不懂,和现有的一些资源能不能对接

就这几点来说,python劣势是很明显的。

再重复一遍:python提供的语法便利性,在你需要从底层实现一个高效的算法的时候,并没有它作为“粘合剂”时那么大。有的时候,科学研究,一般偏向于“核心”,“底层”,而不是那么偏向“粘合剂”
wodemyworld
2013-12-02 19:10:14 +08:00
@Ricepig 不在企业供职,不知道researcher算是哪个业界的,我狭义的理解为在做科学研究的人员。。。。。

你说的可能是企业吧,在企业老板说了算,让你用哪个就用哪个
Ricepig
2013-12-02 20:43:08 +08:00
@wodemyworld 我说的就是研究人员,你看一下paper里的代码,除了伪代码,基本都是类C代码(当然要去除语言方面的paper)。

企业是另一回事情,但是在科研的时候,和大家用差不多的语言、环境,能够更容易获得认同吧。

除非真的牛到藐视众生的程度,否则还是需要用大家都熟悉的东西吧。

最后,无论是R还是Matlab,c和c++对接都很方便,但是其他语言就不一定了。
wodemyworld
2013-12-02 20:57:03 +08:00
@Ricepig 在国内这种大环境下,你只能”哎“,重数量不重质量的paper,好像回到了高考,必须得用判卷老师熟悉的解题方法

科研这条路只有极少数人走到最后,自己”学“东西最重要;paper里用的什么语言真心没人关心,能看懂就行,谁也不会把整个代码往上贴,除非你是做“工程”的
Ricepig
2013-12-02 21:08:09 +08:00
@wodemyworld 国外不是也一样么,你用评审不熟悉的语言,评审会质疑你。

科研这条路,不是“学”东西最重要,而是自己有新东西最重要。

Paper里语言还是比较重要的,论文是不是能被评审理解。

不会把整个代码向上贴不代表不会贴代码,这点区别我想应该区分清楚。
Hualin
2013-12-02 23:40:16 +08:00
不要在意用什么工具,重要的是用这个工具做了什么。这话题吵着吵着就开骂了,敢问都发了几篇有意义的论文,看我能搜着你的宏图巨作不 呵呵呵
cadmuxe
2013-12-03 10:41:19 +08:00
看应用场景啦。听起来楼主是学cs的,研究算法什么的? 老师那么说是有道理的。毕竟用c能接触更底层。但是直接扩展到researchers 那就不好说了,什么自然语言处理,生物学,等等专业的研究人员,很多都用python。简单易用么。
maxiaojun
2013-12-13 00:08:27 +08:00
有些C/C++使用者讓人無力吐槽,你們告訴我C++怎麼split一個std::string好嗎?

另外,在從前的從前,有人寫了1萬行C++的代碼,結果處理第100個數據的時候就segmentation fault了⋯⋯
maxiaojun
2013-12-13 00:23:22 +08:00
認真點回答,除了系統底層的research,我覺得一般來說用high level languages肯定更容易抓住問題的重點啊。畢竟C/C++暴露的細節對程序的性能,安全性等可能很重要,但是和算法沒啥關係啊。舉個膚淺的例子,有幾個算法會關心整數是int還是long long?

有些算法研究者乾脆只管證明,連實現也懶得搞。反過來說明語言不是什麼太大的問題。

當然社區也是很重要的因素,從全球來看,Python的社區并不差啊,用的人有的是,工具有的是。C/C++雖然使用人數很多,但似乎各自為政、不成社區,當然工具也不少。當然MATLAB是另一種以商業軟件為中心的社區。
gundamlh
2013-12-13 20:07:06 +08:00
@acheng 你在美国什么学校?
acheng
2013-12-14 03:01:49 +08:00
@gundamlh 垃圾学校 不提也罢
wangyongbo
2013-12-16 22:37:16 +08:00
搞研究的都好 牛逼啊。膜拜啊,五体投地。
chenzhao
2014-09-17 20:27:02 +08:00
哪个老师?
freeznet
2014-09-17 21:20:37 +08:00
@chenzhao 额~raymond啦~
chenzhao
2014-09-17 21:50:45 +08:00
@freeznet 估计是因为他们比算法的时候用py容易出现很大波动,倒可以理解。

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

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

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

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

© 2021 V2EX