在我编程生涯的早期,我开发了一个对性能至关重要的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++不起作用。我们必须在每个操作系统上编译C++代码。正是由于这个原因,C++与Python相比运行速度非常快。由于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添加到传入变量的函数。voidadd_hundred(intx){x+=100;}此代码采用变量x并将100添加到x。在函数内部,对此值的任何更改都将对新变量而不是原始变量进行。调用上面代码的main函数如下:intmain(void){intx=2337;add_hundred(x);return0;}函数执行完后,在函数外,x的值还是2337。所以,为什么我们需要指针?为了理解这一点,您必须了解值类型和引用类型之间的区别。值类型就像物理复制变量并每次为其分配一个新变量。值类型占用更多空间,每个变量都有自己的内存地址。我们可以修改上面的函数来接受一个指针作为参数。这样的修改可以减少程序使用的内存量。并且不会创建不必要的重复变量。以下函数可以直接修改变量的值。voidadd_hundred(int*x){*x+=100;}intmain(void){intx=2337;int*y=&xadd_hundred(y);return0;}下面,我们创建一个指针y并将其传递给一个函数,而这函数会将输入参数x增加100,即使函数外部x的值会发生变化。即函数执行完成后,x的值为2437。我对指针的看法使用指针的原因之一是可以修改被调用函数内的变量或对象。但是,我建议尽可能避免使用指针。在C++中,使用引用优于使用指针,因为您可以轻松地修改被调用的函数,而无需更改调用所表达的语义。指针是一门复杂的学科,程序员经常会因为使用指针而犯内存管理错误。Python是一门面向初学者的编程语言,所以Python中没有这么复杂的类型。最后的建议我有什么建议?Python还是C++?这取决于您需要实施的解决方案。您是否需要跨平台、高性能的机器学习解决方案?如果可以的话,您可以同时使用两者。我强烈建议您应该学习和使用两者,因为它可以拓宽您对编程语言的理解。如果您熟悉C++,那么用Python编写程序应该没有问题。如果你熟悉Python,你应该对大部分编程概念都有很好的理解,而C++可以帮助你进一步理解内存管理、并发、指针等,所以两者都应该学习。此外,您还可以集成Python和C++来实现高级实时分析解决方案。综上所述,C++和Python都是非常流行的语言,强烈推荐大家学习这两种语言。在这篇文章中,我们强调了两种语言之间的异同,以便我们了解何时使用哪种语言。
