在编程生涯的初期周期,我参与过一款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) {
intx =2337;
add_hundred(x);
return 0;
}即使在执行完函数之后,在函数外边,x的值仍然是2337。
那样,为何咱们必须指针?
为了理解这一点,你必要明白值和引用类型之间的区别。值类型就好似每次都从理学上复制变量并赋给它一个新变量。值类型占用的空间更加多,况且每个变量都有自己的内存位置。
咱们能够修改以上函数,让它接受指针做为参数。这般的修改能够减少程序占用的内存量。况且还不会创建不必要的重复变量。
如下函数能够直接修改变量的值。 void add_hundred(int *x) {
*x += 100;
}int main(void) {
intx =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都是非常流行的语言,我非常举荐所有人都来学习这两种语言。
在本文中,咱们重点介绍了这两种语言之间的类似点和差异性,以便咱们理解何时运用哪种语言。
|