欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

势头强劲的PythonPK强大的C++,究竟谁更胜一筹?

时间:2022-10-09 18:05:41 | 浏览:2045

一直以来,在 TIOBE 编程语言排行榜中,简单易用的新贵 Python 和老将 C++ 是强劲的竞争对手,不过 C++ 和 Python 都是非常流行的编程语言,对于开发者而言,在选择语言利器时究竟有何参考标准?本文将基于两种语言的关键性

一直以来,在 TIOBE 编程语言排行榜中,简单易用的新贵 Python 和老将 C++ 是强劲的竞争对手,不过 C++ 和 Python 都是非常流行的编程语言,对于开发者而言,在选择语言利器时究竟有何参考标准?本文将基于两种语言的关键性能对比,带领大家深入不一样的 Python 与 C++。

作者 | Farhad Malik

译者 | 弯月,责编 | 屠敏

以下为译文:

在编程生涯的早期阶段,我参与过一款C++数学优化应用程序的开发,这个程序对性能的要求很高。至今我依然记得那段艰难的经历。

在那个项目中,我遇到了一些概念,比如指针、并发和垃圾回收,刚开始的时候这些概念非常难以理解。

然而,如果你问我对C++的看法,那么我会很高兴地向想要构建实时应用程序的人推荐C++。

C++是一门非常强大的编程语言。

最近,我一直在从事有关机器学习和数据科学解决方案的架构和实现工作。我选择的语言是Python。我承认也很欣赏这种语言的简单性和强大性。有些程序员认为Python是一种原型编程语言,当然他们有自己的正当理由。但是,我会毫不犹豫地向想要构建数据分析应用程序的人推荐Python。

Python是对开发人员非常友好的编程语言。

本文的目的

C++和Python都是非常流行的编程语言。本文将重点介绍两种语言之间的相似点和差异性,以便我们理解何时使用哪种语言。

这两种语言有很多差异和相似之处,但本文只介绍我们必须了解的关键性功能。

首先,两种编程语言有很多相似之处,所以学习起来也不难。

Python是解释型语言,而C++不是

C++的工作方式是,首先将写好的代码保存到扩展名为.cpp的文件中。

然后编译.cpp文件。编译器将C++代码转换为原生代码。然后执行这些机器代码。因此,C++非常靠近硬件。

所以,C++的速度非常快,非常适合实时应用程序。关键在于C++应用是“原生”应用,这表明编译器是依赖操作系统和处理器的组件。

编译器依赖机器,因此C++也依赖机器。

但是,这意味着代码只能在与编译代码的编译器相兼容的操作系统(和处理器)上运行。具体来说:

  • 如果在Windows机器上用Windows编译器来编译代码,则会生成Windows机器代码。

  • 如果使用Linux编译器来编译cpp代码,则编译后的代码只能在Linux机器上运行。

有时,有些C++模块/软件包并不能与所有操作系统兼容。

另一方面,Python是一种解释语言。Python的工作方式是,首先在安装Python软件包的位置创建一个虚拟机。

然后将写好的python代码保存到.py文件中。

然后再通过CPython,将Python代码编译为Python虚拟机的字节码。

那么,这个Python虚拟机就像C++一样是依赖于机器的,但是Python代码却不是。

当你想执行字节码时,这些代码就会在运行时被解释。因此Python不依赖于机器。

Python字节码依赖于Python虚拟机,而Python不依赖于机器。

需要注意的一点是,我们可以在一个操作系统中编写Python代码,然后将其复制到另一个操作系统中,就可以运行。但C++不行。我们必须在每个OS上编译C++代码。正是这个原因,与Python相比,C++的运行速度非常快。

由于Python是一种解释型语言,因此它的运行速度比C++慢。

编程约定

首先,我们来看一看易用性。

Python是一种高级语言,而C++是一种低级语言。Python具有可读性、简单、直截了当,而且学习起来很简单。

这是一大优势,因为这意味着采用Python的开发人员越来越多。而且这个特性还可以迅速地将Python应用程序推向市场。

由于易用性和大量的库,Python成为了数据科学和机器学习项目的首选编程语言,而且在Web开发中也越来越受欢迎。

Python非常适合于测试新概念和想法。

然而,有时也因为这个原因导致程序员将Python视为一种原型语言。但话又说回来,这种观点的理由也很充分。在实现Python时,我们始终应该遵循最佳的软件原理和实践。

对于刚接触编程领域的人来说,Python是一门伟大的语言。

另一方面,C++起源于C语言。它是一种功能强大的语言,因此很复杂,因为它可以执行很多低级任务。

开发人员需要遵守C++中大量的约定和规则。

C++广泛用于游戏开发、后端服务器应用程序以及分布式交易应用程序,这些系统都要求快速执行任务。此外,C++具有极强的可移植性。

下面,我们来谈谈语法。

1. Python编程十分依赖于空白和制表符(缩进)。一切都是对象。所有类的属性和方法都是公有的。在C++中我们可以利用访问修饰符隐藏类的属性/方法,Python却做不到。

我感觉刚开始的时候很难适应Python的缩进和格式。

2. 我想,大多数开发人员都知道Python中没有分号或大括号。你可以编写整洁的列表推导。Python中的布尔表达式也没有括号。另一方面,C++非常依赖于括号和分号。适应C++的语法需要一定的时间。

3. C++是一种强类型语言,每个变量的类型需要预先声明。而Python是动态类型,我们不需要指出对象的类型。这种动态特性常常会让我们遇到意想不到的结果。Python程序员需要保证以正确的方式或在正确的上下文中使用对象,因此既有积极的一面,也有消极的一面。

在执行Python代码时,我们会遇到运行时错误。如果在生产运行时中遇到类型错误,就很尴尬了!

值得一提的是,为了实现可以在运行之前就发现问题的Python解决方案,许多开发人员花费了大量时间和精力。

内存管理和并发

在介绍管理内存的方式之前,首先我们应该注意,这两种编程语言都支持面向对象的编程和继承。

当程序员在程序中创建对象时,这些对象会占用内存。当不使用对象时,程序将通过垃圾回收清除掉这个垃圾。

垃圾回收的方式工作是不确定的。

作为Python程序员,我们无需担心如何以及何时地清除内存。Python会通过智能垃圾回收自动为我们处理内存。C++中没有这样的垃圾回收,你必须自己动手管理内存。

C++中的内存管理需要手动完成。

理由很充分。C++的设计主旨就是打造一种高性能的编程语言。负责管理内存并从内存中删除不使用对象的垃圾回收会影响应用程序的性能。

最重要的是,垃圾回收在本质上是不确定的。你无法保证对象删除后是否仍在内存中。

Python是一种对开发人员非常友好的编程语言,因为我们不必担心忘记释放内存。

并发

对于受I/O或CPU约束的应用程序,程序员常常喜欢在代码中创建多个线程,并通过同时运行这些线程加快计算的速度。

不管我们的计算机中有多少个核心,Python只允许我们一次执行一个线程。这是Python的全局解释器造成的限制。这会给需要多个CPU的应用程序造成问题。

但是,我们可以在Python中创建多个进程。

另一方面,C++允许我们实现多线程应用程序。

C++有指针,但Python没有

谈论C++,怎么能不提指针?

Python中没有指针,至少没有开箱即用的指针。但是,C++中有指针。

首先,让我们来解释一下指针是什么。

假设有一个变量。这个变量是一个整数,值设置为5。那么,变量与它的值是一个意思,比如x = 5,x是变量的名称,值为5。

在C++中,变量是通过值传递给函数的。

那么问题在于,这些值保存在哪里?

变量的每个值都保存在计算机的内存地址中。你可以使用C++的运算符&访问变量的内存地址。指针是一个变量,指向了值所在的内存地址。

指针能够提高程序的效率。

在标识符之前使用运算符*,就可以声明一个指针。如下所示:

int* y = &x

上述,我们创建了一个指针变量y,这个变量保存了变量x的内存地址。

假设你有一个函数接受变量作为输入(参数)。这个值的变更意味着在函数内部创建一个新变量。请记住,这在C++中会占用大量的内存,变量是通过值传递给函数的。

具体来说,首先我们创建一个将传入变量加100的函数。

void add_hundred(int x) {
x += 100;
}

这段代码接受一个变量x,然后将x加100。

在函数内部,任何有关这个值的修改都会针对一个新变量,而不是原来的变量。

调用上述代码的主函数如下:

int main(void) {
int x = 2337;
add_hundred(x);
return 0;
}

即使在执行完函数之后,在函数外部,x的值仍然是2337。

那么,为什么我们需要指针?

为了理解这一点,你必须明白值和引用类型之间的区别。值类型就好像每次都从物理上复制变量并赋给它一个新变量。值类型占用的空间更多,而且每个变量都有自己的内存地址。

我们可以修改上述函数,让它接受指针作为参数。这样的修改可以减少程序占用的内存量。而且还不会创建不必要的重复变量。

如下函数可以直接修改变量的值。

void add_hundred(int *x) {
*x += 100;
}int main(void) {
int x = 2337;
int *y = &x add_hundred(y);
return 0;
}

下面,我们创建了一个指针y,并传递给一个函数,而这个函数会将输入参数x加100,即使位于函数外部的x值也会发生变化。也就是说,在函数执行完成后,x的值为2437。

我对指针的看法

使用指针的原因之一在于,你可以在调用的函数中修改变量或对象。但是,我建议尽量避免使用指针。

在C++中,使用引用比使用指针更好,因为你可以轻松地修改调用的函数,而不会改变调用所表示的语义。

指针是一个复杂的主题,程序员会经常因为使用指针而造成内存管理错误。Python是适合初学者的编程语言,因此Python中没有这种复杂的类型。

最终的建议

我有什么建议?Python还是C++?

这取决于你需要实现的解决方案。你是否需要跨平台、高性能、机器学习的解决方案?

如果条件允许的话,你可以同时使用两者。

我强烈建议两者你都应该学习和使用,因为这可以拓宽你对编程语言的理解。

  • 如果你熟悉C++,那么毫不费力就可以用Python编写程序。

  • 如果你熟悉Python,那么应该对大多数的编程概念都有很好的了解,C++可以帮助你进一步理解内存管理、并发和指针等,因此二者都应该学习。

另外,你还可以将Python和C++集成到一起,实现高级的实时分析解决方案。

总结

C++和Python都是非常流行的语言,我非常推荐所有人都来学习这两种语言。

在本文中,我们重点介绍了这两种语言之间的相似点和差异性,以便我们理解何时使用哪种语言。

原文:https://medium.com
/fintechexplained/from-python-to-c-a-thorough-comparison-9244b32d63f4

本文为 CSDN 翻译,转载请注明来源出处。

相关资讯

零基础学Python:Python五种Python解释器分享给你

不论你是Python新手零基础入门Python还是对于Python有了一定的经验积累,这里跟大家分享5个Python计时器,希望伙伴们有能用得上的!Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分

Python之父:Python4.0可能不会来了

机器之心报道编辑:力元、蛋酱2020 年 1 月 1 日,Python 官方结束了对 Python 2 的维护,意味着 Python 2 完全退休,进入 Python 3 时代。之后,关于 Python 4 的发布排期也成为了社区的热门议题

python入门之python简介

一、python了解python 是脚本语言。python 是一种面向对象的解释型计算机程序设计语言。语法简洁清晰,特色之一是强制用空白符作为语句缩进。优点:跨平台、胶水语言、开源免费、丰富的库 。缺点:运行速度慢、代码不能加密、场景、数据

最新的python,整整16个G,附零基础入门Python思维导图

思维导图是整理知识的一种非常有效的手段,这里分享几张 Python 基础学习的思维导图,可以帮助自己巩固下基础,有需要的小伙伴可以加紧时间收藏哦!获取方式:

什么是Python?为什么要学习Python?

第一期计算机等考二级程序设计科目的学习,我们从简单易学的Python开始,今天,就让我们揭开它神秘的面纱!我们先看三组数据:第一组呢是TIOBE指数排行,可以看到我们的Python在今年三月份排在了榜首的位置,相比去年的三月份,Python

Python:是!“用Python的,全是假程序员”!HR:太真实……

都说Python什么都能做,本来我是不信的!直到我在CSDN站内看到了一件真事儿:一位博主贴出了自己10分钟用Python搭建小说网站的全过程!全程只用了2步操作,简直太秀了!!……第一步:爬取小说数据库第二步:用Python的热门框架Dj

封神级Python开发核心知识点笔记!一篇带你学透Python

之前老看Java岗的一个朋友炫耀他的一份Java核心知识点笔记,当时,我内心毫无波澜,只有一点点酸……其实Python开发也有很多知识点,我一直一来就想要一份Python核心知识点笔记来帮助自己查漏补缺,后来想想,既然一直没有找到让我满意的

明年至少令Python提速2倍?Python之父给出爆料

去年 11 月,退休失败的 Python 之父 Guido van Rossum 在推特上宣布,退休生活太无聊,从而加入了微软开发者部门。微软自然支持优秀人才的发展,所以赋予了 Guido van Rossum “自由选择项目”的权利,Gu

Python入门教程:超详细1小时学会Python

小编贴心提醒,本文阅读时间9分钟1.Hello world安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。我们写下一句著名的程序语句:并按回车,你就能看到这句被K&R引

想学习Python不知从何学起?一份超详细Python入门资料,干货满满

Python是近年来非常火热的一门编程语言,Python 语言最大的特点就是简单,该特点主要体现在以下 2 个方面:1. Python 语言的语法非常简洁明了,即便是非软件专业的初学者,也很容易上手。2. 和其它编程语言相比,实现同一个功能

python入门基础教学,再不学python就晚了

经过了前一段时间的python学习,那么今天我们来学习一下字典,首先来看一个简单的字典:在python中,字典是一系列键-值对,每个键都与一个值相关联,例如前面的color和age就是键,yelllow和23就是他们分别对应的值对1.访问字

学习Python你一定要知道的知识Python解释器的作用和分类有哪些

之前已经讲解了Python解释器的下载和安装,现在就讲下解释器的作用和分类,在讲解任何Python代码之前我们得先知道解释器概念和作用,因为解释器扮演的角色是非常重要的。一、解释器的作用****作用:运行文件(运行代码)****Python

如何在PythonIDLE中查看Python中turtle库中所有方法及用法

在IDLE中点击help中的Python Docs找到“Python Docs”然后就进入Python文档的界面,在左边找到“搜索”按钮,并点击。找到“搜索”按钮在搜索框中搜索所需要的库名称或者函数名称,就能含有该关键词对应的文件。你会在这

7步搞定Python数据可视化,大牛出品教程,Jupyter、Colab版都有

郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI做图表,谁不会?打开Excel,自动就可以生成各种各样的图表。但你看这些图表呢?结合真实地理数据,展现美国每个县的失业率。全球自然灾害统计,类型、规模、时间,一目了然。甚至还有可爱

分析Python3中的bytes和str类型

从例子可以看出,s是个字符串类型。Python有个内置函数bytes()可以将字符串str类型转换成bytes类型,b实际上是一串01的组合,但为了在ide环境中让我们相对直观的观察,它被表现成了b’xe4xb8xadxe6x96

友情链接

网址导航 SEO域名抢注宝宝起名网妈妈知道币圈股票证券网陶瓷文化网中华家谱族谱网保健品排名网潮州新闻头条网三只松鼠资讯网瑞士旅游网便利店加盟网陀螺山旅游网酒楼资讯网常德新闻头条网设计师学习网草莓种植网泰国榴莲资讯网茶具百科网
c语言中文官网-零基础c++从入门到精通pdf、c语言编译器、C/C++开发工具、c语言入门自学零基础、c++入门自学、c/c++软件下载、c语言编程软件、c语言自学免费网站、c语言零基础自学视频教程、c++手机编程软件、c语言入门程序设计、初级编程视频教程、c语言在线编程平台、C语言线上作业网站。
c语言中文官网 chuxinxin.cn ©2022-2028版权所有