网友:c++与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。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值