学完C++后,我应该学习Python吗?

7

我目前正在学习C++,希望学习另一种编程语言。
在工作中,我使用C# + ASP(实际上我刚开始学习它),但是我想找一些“不那么微软”的强大的语言。
我听说Python是一种流行且功能强大的语言,比C++不那么复杂。但许多人提到他们从Python转回C++/Java很难,因为他们开始用Python的思维方式,习惯了无需内存管理等特性。 你有什么建议?


1
你可能想把标题中的争论部分去掉... - GregD
1
我不担心C++中的内存管理问题。智能指针是解决方案。让shared_ptr<>或auto_ptr<>决定何时删除,这样我就不需要操心了。 - David Thornley
3
顺便说一句,Python确实会让你变得懒惰。经过6年的Python编程后,我不会再尝试使用C ++,因为手动内存管理会让我很沮丧。 - S.Lott
是的,S.Lott说得对。一旦你学会了Python,你就再也不想回到C/C++的辛苦和泪水中了。 - Ber
2
可悲的是,我在90年代写了类似智能指针的代码。然后我学习了Java并意识到C++太麻烦了。然后我学习了Python并意识到Java太麻烦了。我知道内存管理的工作原理。我不想再编写它了。 - S.Lott
显示剩余5条评论
17个回答

30

其实并没有对错之分。但我认为你从学习Python中会受益更多。由于C#和C++之间的相似性,通过学习Python你将会得到不同的思考方式。你学习的思考问题的方式越多,无论是哪种语言,都会使你成为一名更优秀的程序员。


9
从使用一种更为静态的语言转向动态语言的好处在于改变你的编程范式——这不仅仅是变得“懒惰”,更是意识到实现事情的新方法,这将使你在任何语言中都更加优秀。

4

我在学完C/C++、Java和C#之后,学习了Python。Python是一门很棒的语言,它的简洁性和一致性提高了我的编程水平。它还帮助我更清晰地思考代码背后的算法。我可以继续谈论它给我带来的好处,但我想总结一下学习它的原因->

学习新语言不会削弱你的编程技能,反而会增加它们,并通过教你在每种语言所需的“思维框架”之间转换来保持你的敏锐度。

所以,走出去学习Python吧。你的代码将得到改善。

P.S.
1.如果你忽视了对C++(或其他任何语言)的维护和保养,你将失去它们的技能。这完全取决于你。

2.程序员(聪明的)懒惰是一种美德。


4
许多人认为在学习C++之前先学习Python会更有益。
  • Python的语法障碍要低得多;
  • 调试更加友好;
  • 有大量的库可供使用,就像内置电池一样。在Python中轻松尝试网络爬取、XML等。而在C++中进入门槛要高得多。

当然,学习C/C++仍然很好,因为它与机器的联系密切。但是新程序员可以通过在Python中探索学到很多东西。


2

我不认为“Python会让你变懒”(标题很不错!)。
相反,在编程和生活中,了解多种语言都是很重要的;我认为你会发现Python很有趣,并且与C++或C#有足够的区别,以至于这些语言不会混淆在你的脑海中...


2
Python与C++互为补充,并且很容易与C++集成。(作为这一说法的证据,来自Boost的C++大师使用Python。)
正如你所说,Python可以让你获得一个跳出微软环境的视角。但即使在那里,如果你需要将Python与微软工具集成,也有IronPython可用。

1

学习更多的编程语言无论采用何种方法,都可以使你成为一名更好的开发者。此外,在使用Python的C API编写应用程序的高性能部分时,你的C++(或至少C)经验将非常有用,因为这可以让“原始”的C和C++代码与纯Python代码混合在一起。

我仍然每天使用Objective-C(1.0...内存管理之前)和Python编写代码。这种多样性实际上很有趣,而不是令人困惑;它保持了事情的新鲜感,避免了枯燥无味。


1

挑战自己,提升技能。尝试使用一种函数式编程语言。


1

这取决于你想要编写的应用程序类型,例如对于需要访问数据库的网站,我会选择Ruby(和Ruby on Rails框架),对于需要大量并行处理的金融应用程序或应用程序,我会选择函数式编程语言,如Haskell、OCaml或新的F#。即使你不经常使用这三种语言,它们也会让你成为更好的程序员。顺便说一下,C#在最新版本中添加了越来越多的函数式编程特性。我会学习Python用于安全和漏洞类型的应用程序。


1

我按照这个顺序学习了C/C++,Java,Python和C#。

实际上,我最终经常使用的是C++和Python;我发现Java和C#之间的差距太小,以至于我不太需要经常使用它们(至少对于我所做的事情来说)。

我也认为在接触Python之前,我并没有真正理解C++函数对象和boost::bind


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接