我正在尝试处理一些问题和算法。我知道C ++,但是一位朋友告诉我,如果用Python完成它会更好。因为开发会更强更快 并且编程细节花费的时间更少实际上没有任何解决方案。
编辑2 :我打算从Google代码中使用 python-graph lib,如果您使用过,请提供示例代码。
编辑1 :更快 - 减少时间&&减少编写解决方案的工作
谢谢大家的帮助!
答案 0 :(得分:23)
我认为你正在寻找Python,因为你可以:
但更具体地说......
better
表示开发速度,则选择 Python 。better
表示纯粹的执行速度,则选择 C ++ 。答案 1 :(得分:8)
有点主观,但我投票支持python,因为它有很好的库,并提取了许多你在使用c ++时必须考虑的低级'细节'...
答案 2 :(得分:6)
我的所有算法都是用C ++在大学里工作的,因为我知道它。
如果我必须同时学习一门语言,我最有可能选择Python。
答案 3 :(得分:6)
我的印象是它真的取决于更快的含义。
开发更快:去python。 更快地运行:去C ++。
然而,python可以使用许多外部C库,因此处理时间的差异可能不相关,具体取决于实现的类型。
答案 4 :(得分:5)
在我的大学,“算法和数据结构”课程中的500名学生可以选择他们想要的语言。
Python是迄今为止最受欢迎的选择,我个人很高兴我也选择了它,即使我已经知道C ++。
答案 5 :(得分:4)
与您的朋友达成一致 - 使用Python并将其置于单元测试框架中。
我和科学家一起工作了很多年,他们用Python做了很多算法工作。
下面的例子显示了典型的测试(import语句用于测试的东西),有一些细节可能会为你节省一些时间。
保存和恢复sys.path的业务是这样的,您可以将所有测试放在src目录旁边的目录中,而无需将源安装到主Python模块中。
编写此测试脚本,以便可以将其导入更大的单元测试套件中,或者只使用python thisfile.py运行。
#!/usr/bin/python
"""
VRML Writer tests
"""
import unittest
import os
import sys
if __name__ == '__main__':
global save_syspath
save_syspath = sys.path
sys.path = [os.path.abspath("../src/")] + sys.path
from cgtools.VizValueTools import *
if __name__ == '__main__':
sys.path = save_syspath # RESTORE SYS.PATH
# use some common constants to make tests easier
MINV = 0.002
MAXV = 12.789
class TestColdHotColorGeneration(unittest.TestCase):
def testGeneratesLimitValues(self):
assert generateColdHotColorValue(MINV, MAXV, MINV) == (0.0, 0.0, 1.0)
assert generateColdHotColorValue(MINV, MAXV, MAXV) == (1.0, 0.0, 0.0)
assert generateColdHotColorValue(0, 0, 0) == (1.0, 0.0, 0.0) # cope with weird case where range is effectively one value, should be always top
def testGeneratesLimitValuesWithClipping(self):
assert generateColdHotColorValue(MINV, MAXV, MINV - 1.2) == (0.0, 0.0, 1.0)
assert generateColdHotColorValue(MINV, MAXV, MAXV + 49) == (1.0, 0.0, 0.0)
def testGeneratesMiddleValue(self):
"""
Note to be careful picking values so your value IS in the middle,
to generate pure green
"""
assert generateColdHotColorValue(1.0, 3.0, 2.0) == (0.0, 1.0, 0.0)
if __name__ == '__main__':
# When this module is executed from the command-line, run all its tests
unittest.main()
答案 6 :(得分:4)
我会选择python。如果你真的需要性能,那么你总是可以编写C / C ++扩展并在python中使用它们。
答案 7 :(得分:3)
Python中的算法很好(尽管由于全局锁定,你只能飞一个OS调度的python线程);但是,当涉及数据结构+算法时,您需要固定的复杂性保证,这种情况下您将Python与C混合。
我想我所说的内容更适用于长时间运行的计算。您可以在python hashmap原语的顶部模拟数据结构。
答案 8 :(得分:2)
我也投票给python。算法时,我们倾向于研究算法本身,而不是语言,低级细节。基本上,我们在抽象层面上工作。使用python,我们不太可能被侧面跟踪。 但如果您对C ++非常熟悉和熟悉并且可以自由地使用它来表达您的想法,那就使用它吧。
答案 9 :(得分:1)
如果使用C ++意味着STL是公平的游戏,我会说它值得认真考虑。 STL是一个很棒的库,结合了结构,迭代器和算法。我喜欢Python的建议,但如果我能使用STL,我会重新考虑C ++。
答案 10 :(得分:0)
请记住,Python被编译为字节码,然后在VM中进行解释。因此,性能并不比C ++更好(更快)。