0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从C++转到Python三年,总结一下这段时间取得的进展

电子工程师 来源:lq 2019-01-28 09:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

很多人都说用 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 等方式。

总结

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    10

    文章

    1966

    浏览量

    40031
  • C++
    C++
    +关注

    关注

    22

    文章

    2133

    浏览量

    77498
  • python
    +关注

    关注

    59

    文章

    4892

    浏览量

    90430

原文标题:C++转Python这三年,我都经历了什么?

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Rigaku携手imec启动三年联合研发

    ,将与全球顶级半导体研究与创新中心imec(总部:比利时鲁汶)启动项为期三年的联合研发项目,共同推进面向下代半导体的先进计量技术开发。
    的头像 发表于 05-20 10:05 149次阅读

    使用VectorCAST/C++的AI辅助测试功能

    2026版本开始,VectorCAST/C++推出首批AI辅助测试功能,旨在帮助开发团队解决单元测试过程中的两个核心难点:
    的头像 发表于 04-27 14:37 419次阅读

    手搓C++离散小波变换DWT程序

    关于小波变换,我们当然可以选择速度更快地方式来使用它。和python相比,C++编译后的代码在对同组参数配置并且处理同组数据,在没有优化的情况
    的头像 发表于 04-22 14:15 164次阅读
    手搓<b class='flag-5'>C++</b>离散小波变换DWT程序

    C++音视频实战-FFmpeg基础到工程-多路H265监控录放开发

    pan.baidu.com/s/1g64x9D_jp9ufk4uBpQBmvA?pwd=497f  未来安防底层核心:C++ 音视频实战, FFmpeg 到多路 H265 监控开发 站在2026
    的头像 发表于 04-20 15:49 624次阅读

    C++与lua联合编程

    手工业”。然而,这两种内存管理机制截然不同的语言,如何在个进程内进行高效的数据交换,直是企业级开发中的痛点。(看讠果aixuetang。xyz) 经济学的视角来审视,夏曹俊老师《C++
    发表于 04-19 16:27

    2025震有科技在前沿技术领域取得突破性进展

    时光回溯,2025是通信行业技术迭代与场景深耕的关键之年。对于震有而言,这一年更是我们深入线、攻坚克难的“交付大年”。核心网到接入网,
    的头像 发表于 02-10 15:15 729次阅读

    C语言与C++的区别及联系

    并没有错。 C++开始被本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)发明时,起初被称为“C with Classes”,即「带类的C」。 很明显,它是在
    发表于 12-24 07:23

    上海光机所在多模激光器的模场维时空演变研究方面取得进展

    图1.维时空光场分布图。(a)部分相干光;(b)空间不相干时间相干光;(c)空间相干时间不相干光;(d)时空相干光。TN表示横模数量,LN表示纵模数量。 近期,中国科学院上海光学精密
    的头像 发表于 12-19 06:41 394次阅读
    上海光机所在多模激光器的模场<b class='flag-5'>三</b>维时空演变研究方面<b class='flag-5'>取得</b><b class='flag-5'>进展</b>

    CC++之间的联系

    1、语法兼容性: C++完全兼容C语言的语法,这意味着任何有效的C语言程序都可以直接在C++编译器编译通过。 2、底层控制:
    发表于 12-11 06:51

    中国星CSR新三年战略收官 扎实履行社会责任

    责任新三年战略”成果论坛上,组扎实的数据充分展示了其近三年履责成果——在乡村振兴方面,向五个帮扶村投入资金数千万元,带动村民收入实现至少翻番;在科技教育领域,为近40万青少年搭建了
    的头像 发表于 11-25 10:57 522次阅读
    中国<b class='flag-5'>三</b>星CSR新<b class='flag-5'>三年</b>战略收官 扎实履行社会责任

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程,而且这样做还有不少好处。借助WiringPi
    的头像 发表于 08-06 15:33 4611次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    理想汽车连续三年获得MSCI ESG全球最高评级

    近日,国际指数公司MSCI公布最新批全球企业2025ESG(环境、社会和治理)评级,理想汽车连续三年获得MSCI ESG评级“AAA”全球最高评级。
    的头像 发表于 08-04 17:20 1490次阅读

    C++Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富的库和资源而被
    的头像 发表于 07-24 15:32 1223次阅读
    <b class='flag-5'>C++</b> 与 <b class='flag-5'>Python</b>:树莓派上哪种语言更优?

    曙光存储连续三年蝉联教育存储市场份额第

    在赛迪顾问最新发布的《中国分布式存储市场研究报告(2025)》中,曙光存储连续三年蝉联教育存储市场份额第,面向AI打造的教育存储方案,正在成为高校数字化、智慧化转型的数据底座。
    的头像 发表于 06-28 16:15 2454次阅读

    跟老齐学Python入门到精通

    础的学习者介绍门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。 获取完整文档资料可下载附件哦!!!! 如果内容有帮助可以关注、点赞、评论支持
    发表于 06-03 16:10