作者 | asya f,计算机视觉专家,编程语言铁粉。

译者 | 安翔,责编 | 沭七

转载自 CSDN(ID:CSDNnews)

很多人都说用 Python 编程十分简单,即便是 6 岁的小孩也可轻松学会。我自己最开始使用 Python 编程时也这样认为。那时我作为全职软件开发人员已有 4 年时间,主要在 Linux 平台上基于 QT 库进行 C++ 编程。但是,我最初使用 Python 时编写了很多糟糕的代码。

如今,我已经从 C++ 转到 Python 三年了,我觉得自己有必要总结一下这段时间取得的进展。回顾这段经历,不仅是我的主要编程语言发生了变化,此外,我的工作环境以及我对代码的思考方式也发生了变化。

在本文中,我将主要分享自己的经验,而不会详细描述 C++ 和 Python 之间的细节和差异,因为网上已经有了许多它们的对比文章。我希望这篇文章对于像我一样有着类似经历的人有所帮助。

C++ 像深潜,Python 像浮潜

使用 C++ 就像深浅一样,你可以潜入大海深处探索其神奇的奥秘和美丽,但这需要大量的学习和练习,但总的来说,你所覆盖的面积不会太大。

而Python 则更像浮潜,你只需把头伸进水里,就可以看到美丽的景色,但你无法继续深入。你只能继续在浅水区游动,可以轻而易举地游很远,覆盖很大的海面。从这个描述可以清楚地看出,每种语言都应该在正确的地点和时间使用。

  • 深入 C++

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

作为一名 C++ 程序员,我需要密切关注各种语法。我需要对内存的分配和释放了如指掌。程序的依赖性更少,因为我喜欢对自己所写代码内部发生的事情有所了解。如果使用太多其他人的库,可能会不太可靠,出错之后很麻烦,并且可能会破坏你的内存使用量。

我习惯使用 Vim 来编程,此外会搭配很多插件,比如用于调试的 GDB 和用于分析程序内存使用情况和错误的 Valgrind。我自己编写 Makefile 然后用 g++ 编译代码。

那时的自己并不觉得 IDE 益处很大,我宁可放慢速度也不会让自己失去对代码的掌控。现在回想起来,我确实非常依赖编译器来查找类型错误。

  • 在 Python 中浅泳

从 C++ 切换到 Python 时,你需要学习的第一件事就是要学会放手:在 Python 中你很难知道程序的内部机制,不知道内存如何被分配和释放。你还会经常使用其他人编写的代码,这些代码将打包到库中,因为它们可以节省你的时间并帮助你更快地编写代码。这并不意味着你需要编写速度慢且依赖于未维护和非功能库的代码,但重点肯定是不同的。

当我开始用 Python 编写代码时,我首先按照 C++ 的思路来编程 Python 代码。这当然可行,但我并没有发挥出 Python 的优势。当我开始以更 “Pythonic” 的方式编程并开始使用库以及更高级的概念(比如生成器、装饰器和上下文)时,我的 Python 编程技能才得到显著的提升。

作为一名 Python 开发人员,我遇到问题时首先会看看有没有现成的库可以解决该问题。Python 拥有丰富的库生态系统及其社区。这些丰富和庞大的库几乎涵盖了所有领域。我经常使用的库有:用于数值计算的 NumPy、计算机视觉库 OpenCV、用来读取 JSON 文件的 JSON、用于科学计算的 SciPy以及 SQLite3 数据库。

我最常使用的 IDE 是带有 IdeaVim 插件的 PyCharm。这是一款功能非常强大的调试器,它比默认的 Python 调试器 pdb 更好用。我使用 pip 来安装我所需要的库。除非我真的需要,否则我不再监视我程序的内存使用情况。

一些实用的技巧

如果你是一名 C++ 开发人员,并且考虑开始使用 Python 编程,以下是我的一下小建议:

  • 改掉旧习惯

不要把 C++ 编译器当调试器用。不要过度优化内存使用情况。避免编写类似 C++ 风格的代码。无论如何,尽量不要依赖类型。

  • 培养新习惯

善用 Python 库。编写 Pythonic 代码(但不要过度)。保持可读性。使用更复杂的概念,比如生成器、装饰器、上下文。试试 PyCharm。

  • 使用 C++ 和 Python 公共库

某些 C++ 库(如 OpenCV 和 QT)具有 Python 接口。很容易在 Python 中使用相同的库,而不是从头开始学习新的库。

  • 根据应用场景选择恰当的编程语言

有时 Python 太慢或者不适合某类任务。此时就该 C++ 出马了。在 Python 中使用 C++ 代码的方法很多,有 SIP、ctypes 等方式。

总结

不管其他人怎么说,实际上,从一种语言切换到另一种编程语言并不容易,尤其是新的语言与你习惯使用的语言区别很大时。你需要花很多时间学习、深入、探索。但最重要的是,要明白不仅语言应该改变,而且你的编码风格和工作方法也要改变。

英文:How I went from C++ to Python: a conceptual change

链接:https://medium.freecodecamp.org/how-i-went-from-c-to-python-a-conceptual-change-8bf29d059428

(本文为 AI科技大本营转载文章,转载请微信联系原作者。)

征稿

推荐阅读

  • 用“AI”给吴秀波测面相,发现……

  • 任正非:人工智能就是计算机和统计学

  • 程序员一毕业就年薪 110 万竟然是靠……

  • 程序员锁死服务器失踪,公司解散 600 万项目彻底黄了!

  • 关于云原生,这是最详细的技术知识

  • 一年省下1000亿? 原来零售玩的是闷声发大财

  • 不难!月薪 50K大牛,悉心整理程序员必备技能!

  • 用Python全自动下载漂亮小姐姐的抖音视频!

  • 用Python做一款俄罗斯方块游戏

C++转Python这三年,我都经历了什么?相关推荐

  1. 来深圳这三年我都经历了什么,一个深漂青年的所思所想

    一切都是最好的安排.--题记 今天距离2021年春节还有4天的时间,也是我第一次春节不回家的第一天.讲真还是有点不习惯的,但是,既然做出了决定,就要留在这里,我计划利用这次难得的机会,好好写一下总结, ...

  2. 毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么?纯水贴

    毕业之后,这些年薪 50w+ 的 90 后程序员都经历了什么? 即使是处于薪资链顶端的程序员,年薪(不含期权.股票等)超过 50 万,对他们而言也并不是一件容易事.就招聘平台 100offer 而言, ...

  3. nao机器人拆解_两周年了 Pepper都经历了什么呢?

    (原标题:两周年了,Pepper都经历了什么) 过去的25年,我曾经相信计算机有一天可以像人类的右脑一样工作,右侧大脑掌管表情和感知.我可以骄傲的引入第一个可以读取人类感情的机器人,他在我们制作机器真 ...

  4. Python培训基础教程都教哪些

    根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...

  5. macOS新版本终于删掉自带Python2,这波操作连Python死忠粉都叫好

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 喜大普奔,苹果现已正式推出的ma ...

  6. 学python需要什么基础知识-Python的学习,都需要具备哪些计算机基础知识?

    原标题:Python的学习,都需要具备哪些计算机基础知识? 首先 ,Python 语言可以完全从零基础学习 , 即使没有任何计算机基础.通过系统化的学习过程 , 同时也能掌握 Python 编程. 虽 ...

  7. python正规教育机构-Python培训机构多吗 选择Python培训这些你都知道吗

    Python培训机构多吗 选择Python培训这些你都知道吗 时间:2018-01-10     来源:Python培训常见问题 Python是时下互联网行业很火的语言,根据tiobe最新排名显示,P ...

  8. mysql 线上加索引_MySQL加索引都经历了什么?

    首先介绍一下MySQL的索引: 主流的索引也就分为两类:聚簇索引.非聚簇索引 其实还有什么哈希索引(不适合排序).唯一索引(相同的插入不进来,保证索引的唯一性) 但是我们用的最多的也就是聚簇以及非聚簇 ...

  9. 好家伙,MacOS 新版本终于删掉自带 Python2,连 Python 死忠粉都叫好!

    喜大普奔,苹果现已正式推出的 macOS 12.3 版本,终于把自带的 Python 2 给删了! 此前测试版推出时,就有网友激动地表示: " 终于!虽然我是 Python 的死忠粉,但我真 ...

  10. Python 经典模块可能都学过,10道题测试你会不会用?

    Python 作为 2021 年度最受欢迎的编程语言,备受众人瞩目,也很受新手小白喜爱.除此之外,它在很多领域都发挥其作用,比如大数据.无人驾驶.Web 开发等等. [敲重点] 蓝桥云课即将在 202 ...

最新文章

  1. python爬虫抓取图片-怎么用爬虫批量抓取网页中的图片?
  2. python基础知识资料-Python基础知识梳理 - 第02部分
  3. ylbtech-Unitity-CS:Hello world
  4. 音视频技术开发周刊 | 238
  5. 《深入浅出数据分析》第十章第十一章
  6. 46什么是session
  7. python 计算每日累计_一颗韭菜的自我修养:用 Python 分析下股市,练练手
  8. python中for循环运行不起_python中for循环不能正常工作
  9. jq 鼠标指向隐藏显示区域
  10. Sublime 使用笔记(九):汉字乱码问题的解决方法
  11. 2021年最新3d材质贴图素材大合集来咯
  12. python如何打开excel表格_python怎么读取excel表格
  13. openssl的x509命令简单入门
  14. php图片翻转,php识别翻转iphone拍摄的颠倒图片
  15. vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息
  16. first season ninth episode, 所有人的感恩节都很糟糕
  17. 去哪儿攻略app v3.9.2 官方iphone版
  18. Java基础(一) 八大基本数据类型
  19. mac 安装 qt5 for tsmuxer
  20. 单例模式的适用场景包括:

热门文章

  1. ORB-SLAM2从理论到代码实现(五):ORBmatcher.cc程序详解
  2. OpenCV录制视频
  3. 二维前缀和+差分 HDU6514 Monitor
  4. 2.27 MapReduce Shuffle过程如何在Job中进行设置
  5. Java核心技术第五章——2.Object类
  6. 使用Python命令创建jenkins的job
  7. Android驱动学习-内部机制_回顾binder框架关键点
  8. 20170215学习计划
  9. 循环语句——7月23日
  10. [Unity3D]Unity3D连衣裙实现游戏开发系统