我是如何放弃C ++走向Python的?


我是如何放弃C ++走向Python的?


人们说用Python编码是如此简单,即使是6岁的小孩儿也可以做到。 这是我在开始使用Python编写代码时想到的想法。 我当时已有4年程序开发经验,主要在Linux上用C ++编写,基于QT库。 但是,我最初编写了糟糕的Python代码。

我从C++转Python已经有3年了,我认为是时候总结一下我在这段时间取得的进展。 回顾过去,我不仅改变了我的主要编程语言,还改变了我的工作环境和我对代码的思考方式。

我不会详细介绍C ++和Python之间的细节和差异,因为网上有很多资源,而是描述我自己的经验。 我希望这篇文章对于经历与我有相同或者相似经历的人们有所帮助,少走弯路。

C ++像潜水,Python像浮潜


C ++感觉就像潜水一样,你可以潜入大海深处去探索海洋的神奇奥秘 ,它很美,但需要更多的学习和练习,总的来说,你可以潜入很深,但是潜水所覆盖的面积并不是那么大。 Python有点像浮潜 ,只要你把头伸进水里就能看到美丽,但是你不会走得更远。你在浅水区游泳,可以很容易地游得很远。从这个描述可以清楚地看出,每种语言都应该在正确的地点和时间使用。

深入C ++幸存

C ++更严格,会对你的错误进行更严厉的惩罚。在你的编码过程中,几乎很难避免段错误。因此,使用 C++ 编程需要开发者深入了解计算机、编译器和编程语言。随着学习过程的深入,你可以看到很多美好的东西,比如编译过程和内存管理。

作为一名C ++程序员,我更关心各种语法的运用。我总是知道我在哪里分配内存以及我是如何释放内存的。我写的程序更独立,因为我更喜欢知道我的代码中发生了什么。主要的想法是,其他人写的代码不太可靠,更容易出错,并且可能会破坏你的内存使用量。

我的主要日常工具是Vim,有许多用于编写代码的插件,用于调试的GDB和用于分析我的内存使用和错误的Valgrind。我用g ++编译并编写了自己的Makefile。那时候,我并不认为IDE会让我受益,但宁可放慢速度,也不会让我失去对代码的影响。回想起来,我非常依赖编译器来查找我的类型错误。

在Python中浅泳


转换到Python时需要学习的第一件事就是如何放手,你不知道底层发生了什么,内存被分配和释放,而且没关系。我们还鼓励您使用由其他人编写的代码,这些代码将打包到库中,因为它可以节省您的时间并帮助您更快地编写代码。这并不意味着您需要编写狗慢的代码并依赖于未维护和无功能的库,但重点肯定是不同的。

当我开始用Python编写代码时,我首先用Python编写C ++代码。它奏效了,但我没有从语言中获益。当我开始以更“Pythonic”的方式编写并开始使用库以及更高级的概念(如生成器,装饰器和上下文)时,我的编码得到了改进。

作为一名Python开发人员,我倾向于首先考虑解决手头问题的库。 Python拥有丰富的图书馆生态系统和支持它的社区。有几乎可以做任何事情的图书馆。以下是我每天使用的一些方便的:NumPy用于数值计算,OpenCV用于计算机视觉,json用于读取json文件,SciPy用于科学计算,sqlite3用于数据库。

我的日常工具是带有IdeaVim插件的PyCharm(是的,一个IDE)。我开始使用它主要是因为它是一个功能强大的调试器,它比默认的Python调试器pdb更友好。我也使用pip来安装我需要的库。除非我真的需要,否则我不再监视我的内存使用情况。

一些实用技巧


如果您是C ++开发人员,并且考虑开始使用Python编写代码,以下是我的建议:

  • 改掉旧习惯 :停止使用C ++编译器作为调试器。不要过度优化内存使用情况。避免编写类似C ++的代码。并且无论如何,尽量不要依赖类型。


  • 养成新习惯 : 开始写Pythonic代码(但不要过度)。保持可读性。使用更复杂的概念,例如生成器/装饰器/上下文。试试PyCharm。
  • 使用C ++和Python公共库 :某些C ++库(如OpenCV和QT)具有Python接口。很容易在Python中使用相同的库,而不是从头开始学习新的库。


  • 不要忘记C++,根据应用场景选择合适的编程语言 - 有时Python太慢或不适合任务。这就是你的C ++知识开始的时候。在Python中使用C ++代码的方法很多(SIP,ctypes等)。


底线


无论其他人说什么,切换到不同的编程语言,尤其是与您习惯的语言根本不同的语言,并不容易。花时间学习,挖掘,发现。但最重要的是,要明白不仅语言应该改变,而且你的编码风格和工作方法也要改变。


分享到:


相關文章: