6

为什么 Python 程序员有必要学习一下 C++?

 2 years ago
source link: https://oicebot.github.io/2019/05/22/why-python-programmer-should-learn-cpp.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

发表日期:2019-05-22  原创

为什么 Python 程序员有必要学习一下 C++?

—— “免得他们整天xjb造轮子,一点 common sense 都没有”…… 这只是原因之一

作者:欧剃


在如今这个时代,计算机领域中,各种技术瞬息万变,不断更新迭代。随着人工智能、机器学习等先进技术的兴起,近年来,Python 程序员的数量已经大大超过 C++ 程序员。然而,正如之前提到过的,你永远都不应该在编程语言上“从一而终”,你必须了解一门第二,甚至第三语言。因为只有你了解了不同工具的特性,以及它们擅长解决的问题,你才能更高效地在日常工作中运用它们。为问题选择正确的语言/工具/解决方案,将能大大减少解决问题所需的工作量。

此外,它还可以扩展你的视野,让你置身于舒适区之外,保持不断汲取新知识的动力。学习更多语言的另一个原因是,这能训练你习惯跳出一种语言或范式的框架来思考问题。一旦你习惯于跳出特定语言的框架之外来思考编程问题,你将不再受限于它。

那么,为什么非得是 C++?

000.png
不,不是这个原因,虽然我觉得博主说的有道理(图片来源:新浪微博)

Python 和 C++ 相对互补

有人说,Python 就像是浮潜,你只要戴好面罩,把脑袋扎进水里,就能看到清澈明亮的海底。你能轻松地涉猎许多不同的方向,也不太容易捅出什么大娄子——甚至就算万一把事情搞砸了,你也能快速搞清问题所在,不至于把小命送掉(笑)。但只依靠 Python,你很难再潜入更深的底层。

从这种意义上说,使用 C++ 就像是深潜,它会带你进入编程那神秘而梦幻的魔法海洋——那里隐藏着宝藏,也潜伏着危机。你需要更多的知识、不断的练习才能达成目标,并最终将丰厚的回报收入囊中。

因此,如果你已经掌握了 python,我强烈建议你学习 C++。

再学 C++ 到底有什么好处呢?

1. 熟悉计算机底层原理

相对 Python 而言,C/C++ 是一种更加“机器层面”的语言。因此,C++ 对程序员的要求更加严格,它需要你对计算机、编译器和编程语言有更深入的了解,它也会对你的错误报以更严厉的惩罚。

但这种严格是有回报的。

首先,许多其他的编程语言实际上是用 C 来实现的,比如 Python 最常用的解释器就是 Cpython。所以,学习 C++ 的过程,你将会学到更多程序运行机制方面的知识,让你今后学习其他语言的时候更容易理解。

其次,在真正成为专业程序员之前,先学习用 C++ 编程,就像在成为正式执业医生之前,得先理解基本解剖学一样。如果你想成为一名真正的专家,你就必须了解计算机系统和软件是如何协同工作的。

001.jpg
(图片来源:pixabay.com)

2. 培养良好的编码习惯

学习 C++ 是一种富有启发性的体验,它将带来许多有益的附加作用,让你懂得如何编写出更有效率的代码。

在学习使用 C++ 的过程中,你需要更关心代码语法的细微调整,和一些特殊案例的细节。比如,你必须保证自己总是知道该在哪里分配内存,以及何时释放内存。此外,你还得操心指针、别名、生命周期等一堆大大小小的问题。

在这种情况下,你将迫使自己培养出良好的编码习惯,遵循良好的风格指南,来规避许多奇奇怪怪的错误——说到底,如果你没有见过几次“段错误”,并从中学到教训,就根本不算学过 C++。

002.jpg
连POS机都会 Segmentation fault 呢(图片来源:维基百科)

3. 增加对业务链上下游的熟悉

诚然,Python 在许多大公司中占有举足轻重的地位,但它并不总能覆盖到 100% 的业务链。

目前,C# 被广泛用于 .NET 平台上的企业级应用开发,它同时也是 Unity 3D 的主要语言,而 Unity 3D 是一个非常流行的独立游戏、VR游戏开发引擎。另一方面,C++ 通常被用于性能密集型桌面应用程序(也包括许多游戏大作)中。它也被微软,甲骨文和 Adobe 等公司用于构建许多大型软件系统。

此外,就算在人工智能、机器学习方面炙手可热的 Python,在遇到无人驾驶、机器人开发等方面,也需要 C++ 出马,把算法移植到底层硬件上,操作传感器等。

003.gif
无人驾驶汽车上的各种硬件设备(图片来源:e-sciencecentral.org

4. 加速你的 Python 代码

众所周知,作为解释型语言的 Python 可不是什么超级快速的语言[来源请求],但它确实非常好用,开发调试起来都更加方便。那么,当你需要快速调用某些算法来处理数据的时候,该怎么办呢?

学习 C++,让你能更好地发挥 Python “胶水语言”的作用。你可以把许多常用的函数和计算模块用 C++ 编写,,然后将 C++ 的方法包装起来,以便能在 Python 代码中调用这个方法。这样一来,你可以获得 C++ 代码的高速度优势,又保持 Python 调用的便捷性与可读性,是不是很赞呢?

5. 增强个人竞争力

根据国际电气电子工程师学会(IEEE)的统计,Python 与 C++ 都是近几年 IEEE Spectrum 的头牌语言,占据了前两把交椅。而对应的职位数量来看,C/C++ 也仅次于 Java。

004.png
IEEE Spectrum 2018 综合趋势排行 Top 5(图片来源:spectrum.ieee.org)

005.png
IEEE Spectrum 2018 就业岗位排行 Top 5(图片来源:spectrum.ieee.org)

所以,不管是备战算法面试,还是进军无人驾驶和机器人开发等新兴领域,C++ 都必然能助你一臂之力,帮助你进一步拓展职业发展方向,增强个人竞争力,迈入顶尖开发者的行列。

那我什么时候开始学最好?

当然是“现在”。

如果你希望给自己更美好的未来,你现在唯一要做的,就是立刻开始行动。给自己一个机会,试一下,踏出你的第一步。

对于没有时间脱产学习,但又希望能有专业导师的指导、督促和代码审阅的同学,我个人强烈推荐优达学城的 C++ 程序设计纳米学位课程。你能在相对自由的时间安排下(每周安排10小时左右),学习到最前沿的硅谷课程,可以在网络教室里和相同学习进度的同学交流,并有真人导师帮你答疑,跟踪你的学习进度,逐行审阅你的代码并提出反馈建议。最棒的是,在课程中你能挑战完成 5 个真实的 C++ 行业应用,充实你的作品集,为个人晋升打下坚实的基础。

别再犹豫啦,让我们在教室里见!


(本文已投稿给 “优达学城”, 作者:欧剃 转载请保留此信息)

标签:UdacityPythonC++

0 comments

Be the first person to leave a comment!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK