我将介绍以下内容:什么是Rust?什么是蟒蛇?什么时候用Rust什么时候用Python为什么Rust可以代替Python什么是Rust?Rust是一种多范式语言,使开发人员能够构建可靠且高效的软件。Rust专注于安全和性能,类似于C和C++,它速度快、内存高效且没有垃圾收集。它可以与其他语言集成或在嵌入式系统上运行。Rust拥有出色的文档、带有有用错误消息的友好编译器,以及包括集成包管理器、构建工具、智能多编辑器支持、自动完成和类型检查、自动格式化等在内的高级工具。Rust由MozillaResearch的GraydonHoare于2010年推出。尽管与Python相比,Rust是一门年轻的语言,但它的社区正在稳步增长。事实上,在StackOverflow的“2020年开发人员调查”中,86%的受访者将Rust列为2020年他们最喜欢的编程语言。乍一看,Rust是静态强类型的似乎有些极端。如您所见,从长远来看,这有助于防止意外的代码行为。什么是蟒蛇?Python是一种编程语言,旨在帮助开发人员更高效地工作并更有效地集成系统。与Rust一样,Python是多范式的并且被设计为可扩展的。如果速度至关重要,您可以使用CPython等低级API调用。Python的历史可以追溯到GuidovanRossum于1991年推出的Python,它以代码的可读性和取消分号和花括号着称。除了可扩展性之外,Python还是一种解释型语言,这使得它比大多数编译型语言都慢。正如您所料,Python具有很高的成熟度,拥有庞大的库生态系统和庞大的专业社区。何时使用Rust用于系统开发、操作系统、企业系统、微控制器应用程序、嵌入式系统、文件系统、浏览器组件、虚拟现实模拟引擎等。当性能很重要时,Rust是一种常用的语言,因为它可以很好地处理大量数据。它可以处理像执行算法这样的CPU密集型操作,这就是为什么Rust比Python更适合系统开发。Rust保证内存安全并允许您控制线程的行为方式以及线程之间的资源分配方式。这使您能够构建复杂的系统,这使Rust比Python更具优势。总而言之,您应该在以下情况下使用Rust:您的项目需要高性能您正在构建复杂的系统您重视内存安全而不是简单性何时使用PythonPython可用于许多应用领域,从Web开发到数据科学和分析,再到人工智能和机器学习,软件开发。Python广泛用于机器学习、数据科学和人工智能,因为它:简单、易于编写且灵活包含大量面向数据的包和库由优秀的工具和库生态系统支持你应该在以下情况下使用Python:您需要一种灵活的语言来支持Web开发、数据科学和分析以及机器学习和AI您重视可读性和简单性您需要一种对初学者友好的语言您更喜欢简单性和语法而不是性能开发速度为什么Rust可以取代Python鉴于Rust的迅速流行和广泛的用例,它似乎几乎不可避免地会在不久的将来超越Python,这里有一些原因。性能Rust超越Python的主要原因之一是性能。因为Rust直接编译为机器代码,所以在您的代码和计算机之间没有虚拟机或解释器。与Python相比的另一个关键优势是Rust的线程和内存管理。虽然Rust不像Python那样具有垃圾收集功能,但Rust中的编译器会强制检查无效内存引用泄漏和其他危险或不规则行为。编译型语言通常比解释型语言更快。但将Rust置于不同层次的是它几乎与C和C++一样快,但没有开销。让我们看一个用Python编写的O(logn)程序示例,并使用迭代方法计算完成任务所需的时间:importrandomimportdatetimedefbinary_searcher(search_key,arr):low=0high=len(arr)-1whilelow<=high:mid=int(low+(high-low)//2)ifsearch_key==arr[mid]:returnTrueifsearch_keyarr[mid]:low=mid+1returnFalse输出:>python-mbinny.pyIttook8.6μstosearch现在,让我们看一下使用迭代方法用Rust编写的定时O(logn)程序:>userand::thread_rng;usestd::time::Instant;usefloating_duration::TimeFormat;fnbinary_searcher(search_key:i32,vec:&mutVec)->bool{letmutlow:usize=0;letmuthigh:usize=vec.len()-1;letmut_mid:usize=0;whilelow<=high{_mid=low+(high-low)/2;ifsearch_key==vec[_mid]{returntrue;}ifsearch_keyvec[_mid]{low=_mid+1;}}returnfalse;}fnmain(){letmut_rng=thread_rng();letmutint_vec=Vec::new();letmax_num=1000000;fornumin1..max_num{int_vec.push(numasi32);}letstart=Instant::now();let_result=binary_searcher(384723,&mutint_vec);打印!("Ittook:{}tosearch",TimeFormat(start.elapsed()));}Output>cargorunFinisheddev[unoptimized+debuginfo]target(s)in0.04sRunningtarget\debug\algo_rusty.exeIttook:4.6μstosearch没有任何优化技术的情况,Rust和Python在同一台机器上执行类似的操作分别需要4.6微秒和8.6微秒。这意味着Python花费的时间几乎是Rust的两倍。内存管理与大多数现代编程语言一样,Python被设计为内存安全的。然而,在内存安全方面,即使没有垃圾收集,Rust仍将Python远远甩在后面。Rust采用独特的内存安全方法,涉及所有权系统和借用检查器。Rust的借用检查器确保引用和指针永远不会超过它们指向的数据。错误检查与诊断一样,Python和其他语言提供错误检查和日志记录机制。但是在让开发人员知道问题所在方面,Rust和Python之间存在一些对比。举一个Python变量错误的典型例子:apple=15print('Theavailableapplesare:',apple)Python输出:Traceback(mostrecentcalllast):File"binny.py",line2,inprint('Theavailableapplesare:',aple)NameError:name'aple'isnotdefinedRust中的类似示例:fnmain(){letapple=15;println!("Theavailableapplesare:",apple);}Rust输出:println!("Theavailableapplesare:",aple);^^^^help:alocalvariablewithsimilarnameexists:`apple`在这里,Rust建议您可能想要导入的变量。Python只是抛出错误,而没有给出如何修复它们的建议。例如:fnmain(){letgrass=13;grass+=1;}此代码会引发错误,因为Rust中的变量默认情况下是不可变的。不能更改,除非它有关键字ou''t。错误:letgrass=13;|-----|||第一次赋值给`grass`|help:makethisbindingmutable:`mutgrass`修复了错误:fnmain(){letmut_grass:i32=13;_grass+=1;}如你所见,现在它没有'不要抛出任何错误。除此之外,Rust不允许不同的数据类型进行互操作,除非它们被转换为相同的类型。因此,维护Rust代码库通常很容易。除非另有说明,否则Rust不允许更改。Python确实允许这种性质的改变。与大多数编译型语言相比,Rust以其速度、保证内存安全、卓越的可靠性、一致性和用户友好性而受到青睐。在编程中,我们已经达到了速度开始变得毫不费力的地步。随着技术的发展,它变得越来越快,试图在更短的时间内做更多的事情而不需要太多的权衡。Rust有助于在不妨碍开发人员的情况下实现这一目标。由于技术试图突破可实现的界限,它还考虑了系统的安全性和可靠性,这是Rust背后的主要思想。并行计算除了速度,Python在并行计算上也有局限性。Python使用全局解释器锁(GIL),鼓励只有一个线程并发执行,以提高单线程性能。这个过程是一个障碍,因为它意味着你不能使用多个CPU内核进行密集计算。社区如前所述,StackOverflow的“2020年开发人员调查”中,86%的受访者将Rust列为他们2020年最喜欢的编程语言。同样,2020年HackerRank开发人员技能报告的受访者将Rust列为他们计划学习的前10种编程语言之一next:相比之下,2019年的调查将Rust排在了榜单的最后,这表明Rust开发人员社区正在快速增长。如该数据所示,Rust正在成为主流开发者社区的一部分。许多大公司都在使用Rust,一些开发人员甚至用它来构建其他编程语言使用的库。著名的Rust用户包括Mozilla、Dropbox、Atlassian、npm和Cloudflare,等等。AmazonWebService还在Lambda、EC2和S3中对性能敏感的组件采用了Rust。2019年,AWS宣布赞助Rust项目,并提供了AWSSDKforRust。公司越来越多地用Rust等更高效的语言替换速度较慢的编程语言。没有其他语言能像Rust那样平衡简单性和速度。总结Rust已经成长为一种常用的编程语言,其采用率也因此增加。虽然Python在机器学习/数据科学社区中占有一席之地,但Rust很可能在未来被用作Python库的更高效的后端。Rust有很大的潜力取代Python。在当前的趋势下,作为应用、性能和速度的首选编程语言,Rust不仅是一种编程语言,更是一种思维方式。本文转载自微信公众号“前端全栈开发者”,可通过以下二维码关注。转载本文请联系前端全栈开发公众号。