Python PK C++,究竟谁更胜一筹?
C++中的内存管理需要手动完成。 理由很充分。C++的设计主旨就是打造一种高性能的编程语言。负责管理内存并从内存中删除不使用对象的垃圾回收会影响应用程序的性能。 最重要的是,垃圾回收在本质上是不确定的。你无法保证对象删除后是否仍在内存中。 Python是一种对开发人员非常友好的编程语言,因为我们不必担心忘记释放内存。 并发 对于受I/O或CPU约束的应用程序,程序员常常喜欢在代码中创建多个线程,并通过同时运行这些线程加快计算的速度。 不管我们的计算机中有多少个核心,Python只允许我们一次执行一个线程。这是Python的全局解释器造成的限制。这会给需要多个CPU的应用程序造成问题。 但是,我们可以在Python中创建多个进程。 另一方面,C++允许我们实现多线程应用程序。 C++有指针,但Python没有 谈论C++,怎么能不提指针? Python中没有指针,至少没有开箱即用的指针。但是,C++中有指针。 首先,让我们来解释一下指针是什么。 假设有一个变量。这个变量是一个整数,值设置为5。那么,变量与它的值是一个意思,比如x = 5,x是变量的名称,值为5。 在C++中,变量是通过值传递给函数的。 那么问题在于,这些值保存在哪里? 变量的每个值都保存在计算机的内存地址中。你可以使用C++的运算符&访问变量的内存地址。指针是一个变量,指向了值所在的内存地址。 指针能够提高程序的效率。 在标识符之前使用运算符*,就可以声明一个指针。如下所示: int* y = &x 上述,我们创建了一个指针变量y,这个变量保存了变量x的内存地址。 假设你有一个函数接受变量作为输入(参数)。这个值的变更意味着在函数内部创建一个新变量。请记住,这在C++中会占用大量的内存,变量是通过值传递给函数的。 具体来说,首先我们创建一个将传入变量加100的函数。 void add_hundred(int x) { x += 100; } 这段代码接受一个变量x,然后将x加100。 在函数内部,任何有关这个值的修改都会针对一个新变量,而不是原来的变量。 调用上述代码的主函数如下: int main(void) { int x = 2337; add_hundred(x); return 0; } 即使在执行完函数之后,在函数外部,x的值仍然是2337。 那么,为什么我们需要指针? 为了理解这一点,你必须明白值和引用类型之间的区别。值类型就好像每次都从物理上复制变量并赋给它一个新变量。值类型占用的空间更多,而且每个变量都有自己的内存地址。 我们可以修改上述函数,让它接受指针作为参数。这样的修改可以减少程序占用的内存量。而且还不会创建不必要的重复变量。 如下函数可以直接修改变量的值。 void add_hundred(int *x) { *x += 100; }int main(void) { int x = 2337; int *y = &x add_hundred(y); return 0; } 下面,我们创建了一个指针y,并传递给一个函数,而这个函数会将输入参数x加100,即使位于函数外部的x值也会发生变化。也就是说,在函数执行完成后,x的值为2437。 我对指针的看法 使用指针的原因之一在于,你可以在调用的函数中修改变量或对象。但是,我建议尽量避免使用指针。 在C++中,使用引用比使用指针更好,因为你可以轻松地修改调用的函数,而不会改变调用所表示的语义。 指针是一个复杂的主题,程序员会经常因为使用指针而造成内存管理错误。Python是适合初学者的编程语言,因此Python中没有这种复杂的类型。 最终的建议 我有什么建议?Python还是C++? 这取决于你需要实现的解决方案。你是否需要跨平台、高性能、机器学习的解决方案? 如果条件允许的话,你可以同时使用两者。 我强烈建议两者你都应该学习和使用,因为这可以拓宽你对编程语言的理解。 如果你熟悉C++,那么毫不费力就可以用Python编写程序。 如果你熟悉Python,那么应该对大多数的编程概念都有很好的了解,C++可以帮助你进一步理解内存管理、并发和指针等,因此二者都应该学习。 另外,你还可以将Python和C++集成到一起,实现高级的实时分析解决方案。 总结 C++和Python都是非常流行的语言,我非常推荐所有人都来学习这两种语言。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |