1
Livid MOD 人对于自己不熟悉的东西就会排斥,很正常,不过还是为你们老师觉得难过。
|
2
Mutoo 2013-11-30 14:40:43 +08:00
python 绝对是一门 science friendly 语言。有很多很强大的科学库,例如 numpy 。做 NLP 也是一流的。
|
3
9hills 2013-11-30 14:56:26 +08:00
用性能数据打脸
|
4
freeznet OP |
6
oloopy 2013-11-30 17:03:30 +08:00
做个猜测。Python适合research,但是对于某些specific的课程,Python会不利于与其他人交流。如果老师站在学生的角度,非常有可能做出这样的推荐,更多的用common language完成作业,并参与讨论。
|
7
lalalakakaka 2013-11-30 22:32:11 +08:00 2
|
8
freeznet OP @lalalakakaka 所以有推荐用octave咯
|
9
acheng 2013-12-01 00:23:54 +08:00
C++王道 以后你会明白的 当你做research 处理海量数据的时候 你才会发现py什么的脚本语言都是屎
那些numpy 或pypy 都是浮云 |
10
freeznet OP @acheng 并没有拒绝说用c/c++ 只是我觉得使用python更容易实现算法,如果需要处理海量的数据,也自然会选用c/c++,也不至于说脚本语言对于处理海量数据是屎吧= =
|
12
csslayer 2013-12-01 01:30:40 +08:00
ˊ_>ˋ 我这边搞 PL research 的都用 Python 你说呢……
|
13
Kabie 2013-12-01 01:42:50 +08:00
毕竟你们是纯粹的算法课程吧?…………老师估计是担心在算法之外……动态语言本身对性能会有影响……
|
14
9hills 2013-12-01 01:51:42 +08:00 via Android
|
17
davepkxxx 2013-12-01 02:41:11 +08:00
搞 research 还是用 C/C++ 吧,很多 Project 对性能要求很高。
|
20
bombless 2013-12-01 09:07:11 +08:00
我觉得 numpy 这些就类似 matlab 之类的那几款数学软件,是为了给用户提供一个方便的界面来使用
如果整个研究是你自己在做一套系统,那 numpy 这样的例子并不合适 C++ 有模板元编程,运算符重载,类型系统这样很方便的特性 对性能有要求的场合还有 Intel Parallel , C++ AMP 这样的工具 这些都是 Python 所没有的 |
21
FrankFang128 2013-12-01 09:08:15 +08:00 via Android
楼主有点断章取义
|
23
wuxqing 2013-12-01 10:17:12 +08:00
python + c/c++ 就可以了
|
24
9hills 2013-12-01 11:04:41 +08:00 via Android
|
26
notte 2013-12-01 11:26:14 +08:00 2
cpp有雄厚的资源积累,research很多都是交叉学科的,相互之间沟通用通用的语言最好,像数值分析有Numerical.Recipes (C++)就没有python。
大数据处理也不是比谁的数据bit大,得看你要用那数据干什么,像混合整数非线性规划导入上GB的数据用c++也得算N年。 matlab的工具箱多,科研界很多新算法都是文献一出就附上matlab的工具箱了,这样后面的人看到文献后马上就可以用。 话说楼主你应该看文献少吧,多看看别人都用什么,做research不是在工具上标新立异,而是在思想上。学术界跟工业界是两码事。 |
28
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写,编写代码时间就多了去了 |
29
sumrin 2013-12-01 19:34:50 +08:00
伟大的C屌 BS 你们用python !!用ASP 路过
|
30
Ricepig 2013-12-01 21:22:30 +08:00
老师说的很对,目前来说在research领域基本还是C/C++是主流,而且很多软件的第一扩展语言都是它们。
从另一个角度看,你如果是项目负责人,你可以规定别人全都用python,但是在你还是螺丝钉的时候,就不要要求其他人都迁就你了。也就是说,你可能还没有牛到可以左右方案(语言)选择的层次,所以,忍忍吧少年。 最后,python提供的语法便利性,在你需要从底层实现一个高效的算法的时候,并没有它作为“粘合剂”时那么大。如果只是调用某个库,那是另外一回事。但是作为科学研究来说,C/c++的库我想也是比python的库多吧。 |
31
Ricepig 2013-12-01 21:23:48 +08:00
@wodemyworld 这位兄台,说法不是很有说服力啊。我不养猪我还不能说猪肉不好吃了?
|
33
Ricepig 2013-12-02 00:58:24 +08:00 1
@ispinfx 你的类比更不贴切一点。我的类比中,用“养猪”类比“创造语言”,用“吃猪肉”类比“使用语言”。我回的贴中,逻辑是“你在创造不出python之前,就不能说python不行”,所以我说“我不养猪就不能说猪肉不好吃了”
供你参考。 |
34
acheng 2013-12-02 01:50:52 +08:00
@wodemyworld 试问你处理的数据量级是? 我以德服人 就不骂你了
|
36
wodemyworld 2013-12-02 08:52:09 +08:00
|
37
acheng 2013-12-02 08:57:21 +08:00
@wodemyworld 牛逼人啊 神经算法 怎么感觉你也神经了 我只是说py是屎而已 你却骂人 如果你骂C++是屎 我也不会骂你是贱人的 我打算学习py了 大侠 对于新手来说 学py2 还是py3 呢?
|
38
wodemyworld 2013-12-02 08:58:29 +08:00
@Ricepig 我已经说了,通常python+c,真正遇到效率问题的时候核心算法改为c代码;
c库多是因为c语言比python早出来好几十年,并不是c语言有多么让人离不开,现在大学里都用matlab了,效率还可以而且学起来很方便,你要说非得追求效率,等你把一个算法用c写出来的时候,人家用matlab连paper都出了,如果你的算法可以并行执行,那么还得做分布式计算,如果你用c去手工实现,等你把分布式框架都做完了,人家早就毕业了,怎么省事怎么来,做科学研究的人不是十分必要的话,不要往码农上面靠,没好处,着眼点就不对 |
39
acheng 2013-12-02 09:02:43 +08:00
@wodemyworld 有道理 不过我觉得用C/C++把基础库打好了 后续科研 不需要花很多时间去当码农了 只是起步阶段确实比matlab慢几拍 但是过了那个坎儿之后 顿时会觉得还是比matlab高端大气上档次 如果只是用matlab 面对海量数据的时候 那叫一个慢 有想法也难以实现
|
40
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混用 |
41
acheng 2013-12-02 09:14:14 +08:00
@wodemyworld 今年在MIT学习了一周 他们py matlab 用得较多,我还是坚持用C++搞定了小组的项目。 py 的缩进 不习惯。。。 我想学习py主要用来搞定网络方面的程序。至于计算方面,还是调用lapack靠谱,不知py读取文件的效率如何呢
看来这里牛逼人挺多啊 我以后再也不装了 |
42
est 2013-12-02 09:32:05 +08:00
C/C++ python 都靠边站。做算法的,VC++6才是主流。Turbo Pascal 都能爆你们三条街。
|
44
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++实现( |
45
luikore 2013-12-02 16:10:17 +08:00
靠谱老师都会跟你说: 用你喜欢的语言.
语言的性能差异在使用者的资质差异面前就是个无穷小量. |
46
Ricepig 2013-12-02 17:44:20 +08:00
@wodemyworld 我其实没有怎么提到效率问题,我强调的是C/C++在“当前”业界的普及状态,作为一种大家都懂大家都用的公共语言。这点是python无法做到的。以后的事情以后再说。i
你得考虑大家(同行、评审、同事)懂不懂,和现有的一些资源能不能对接 就这几点来说,python劣势是很明显的。 再重复一遍:python提供的语法便利性,在你需要从底层实现一个高效的算法的时候,并没有它作为“粘合剂”时那么大。有的时候,科学研究,一般偏向于“核心”,“底层”,而不是那么偏向“粘合剂” |
47
wodemyworld 2013-12-02 19:10:14 +08:00
|
48
Ricepig 2013-12-02 20:43:08 +08:00
@wodemyworld 我说的就是研究人员,你看一下paper里的代码,除了伪代码,基本都是类C代码(当然要去除语言方面的paper)。
企业是另一回事情,但是在科研的时候,和大家用差不多的语言、环境,能够更容易获得认同吧。 除非真的牛到藐视众生的程度,否则还是需要用大家都熟悉的东西吧。 最后,无论是R还是Matlab,c和c++对接都很方便,但是其他语言就不一定了。 |
49
wodemyworld 2013-12-02 20:57:03 +08:00
@Ricepig 在国内这种大环境下,你只能”哎“,重数量不重质量的paper,好像回到了高考,必须得用判卷老师熟悉的解题方法
科研这条路只有极少数人走到最后,自己”学“东西最重要;paper里用的什么语言真心没人关心,能看懂就行,谁也不会把整个代码往上贴,除非你是做“工程”的 |
50
Ricepig 2013-12-02 21:08:09 +08:00
@wodemyworld 国外不是也一样么,你用评审不熟悉的语言,评审会质疑你。
科研这条路,不是“学”东西最重要,而是自己有新东西最重要。 Paper里语言还是比较重要的,论文是不是能被评审理解。 不会把整个代码向上贴不代表不会贴代码,这点区别我想应该区分清楚。 |
51
Hualin 2013-12-02 23:40:16 +08:00
不要在意用什么工具,重要的是用这个工具做了什么。这话题吵着吵着就开骂了,敢问都发了几篇有意义的论文,看我能搜着你的宏图巨作不 呵呵呵
|
52
cadmuxe 2013-12-03 10:41:19 +08:00
看应用场景啦。听起来楼主是学cs的,研究算法什么的? 老师那么说是有道理的。毕竟用c能接触更底层。但是直接扩展到researchers 那就不好说了,什么自然语言处理,生物学,等等专业的研究人员,很多都用python。简单易用么。
|
53
maxiaojun 2013-12-13 00:08:27 +08:00
有些C/C++使用者讓人無力吐槽,你們告訴我C++怎麼split一個std::string好嗎?
另外,在從前的從前,有人寫了1萬行C++的代碼,結果處理第100個數據的時候就segmentation fault了⋯⋯ |
54
maxiaojun 2013-12-13 00:23:22 +08:00
認真點回答,除了系統底層的research,我覺得一般來說用high level languages肯定更容易抓住問題的重點啊。畢竟C/C++暴露的細節對程序的性能,安全性等可能很重要,但是和算法沒啥關係啊。舉個膚淺的例子,有幾個算法會關心整數是int還是long long?
有些算法研究者乾脆只管證明,連實現也懶得搞。反過來說明語言不是什麼太大的問題。 當然社區也是很重要的因素,從全球來看,Python的社區并不差啊,用的人有的是,工具有的是。C/C++雖然使用人數很多,但似乎各自為政、不成社區,當然工具也不少。當然MATLAB是另一種以商業軟件為中心的社區。 |
57
wangyongbo 2013-12-16 22:37:16 +08:00
搞研究的都好 牛逼啊。膜拜啊,五体投地。
|
58
chenzhao 2014-09-17 20:27:02 +08:00 1
哪个老师?
|