已经工作的加瓦呢,是否应该学习掌握 rash 呢?我的建议是赶紧保持学习新语言的心态性,会帮你更好的理解加瓦。如果长期只用一门语言, 不管这个女人曾经多么优秀,最后都难免会陷入孤陋寡闻的境地。就像凤凰家话讲用话来声明变量, 甚至有家外人说我弄错了,他以为我把家外和 js 搞混了。 其实变量类型的自动推断已经是烂大街的东西了,是位科特里, ras 等各种语言早就支持了为家娃,只不过后知后觉的顺应历史潮流而已,为这些家娃人还在 历史内里面梦游,这种拒绝学习的程序员不被淘汰真是没天理了。另外说一句,其实结实 定义变量早就不推荐用发,如果你还在结实中用发定义变量,只能说明你的知识太沉浮了,很多家娃人只知道家娃提供的垃圾回收机制,还动针把它拿出来吹去一番。 如果你学习过其他语言,你就知道自动引用技术的内存回收同样优秀。 如果你在认真学习下 ras 的所有拳击制,你就会忍不住感叹,原来内存回收还能这么的简单高效。总之他 发生之时可以公寓。只有不断的开阔自己的境界,争光自己的知识,才不会说错。 p hp 是最好的编程语言这种笑话。如果你担心袜子的是否会取代家袜,那你不用担心,其实袜子的对标的是 c 语言, 一个应用极为广泛的语言,基本上很难被其他语言取代,因为没人会吃饱的去把那些已经存在的系统用新的语言重新开发一遍,那骂死的是否能够变得像 c 加瓦那样流行呢? 目前暂时看上去还不太可能,除非 ras 也找到自己的应用领域。就像家外的流行并不是因为取代了谁家家,而是因为他找到了自己的应用 领域。后端开发同样,拍摄的流行也是因为找到了自己的应用领域。但 rash 作为一门新兴的极为高效的编程语言,完全有可能在飞速发展的 it 行业找到他独有的应用领域。 目前我比较看好瑞士的在嵌入式互联网领域的应用,那瑞士的就会立马火起来。如果你等到瑞士的真正火起来之后再去学习,那就太仓促了,那时你又只能叫那些提前学习的人大神,然后就在被淘汰的边缘徘徊。 总之,提前投资学习才能不断的把握技术的先进。即使你学习的技术最后没能流行开来, 但你在技术学习上所走的每一步从来都不会白费。
粉丝115获赞509

you know a lot of people use a python because it's really easy to learn, but if you benchmark performance of python versus ruster java it's very slow if you need performance ruster java or better if you need the kind of very tight safety critical stuff that rust provides and you know it's a small focus piece of code where having something go wrong is expensive then rust is a good choice, but you know there's there's no such thing as a one size fits all some of them get close i mean java is pretty good, it's not as easy to learn as python, but it's pretty easy to learn。

you know rusk has i think i justly earned reputation of being hard to learn because it's it's really oriented around safety you know type safety, memory safety, thread safety all of that so if you are doing small pieces of code like a device driver it works really really well if what you need to do is build a large complex system with very complicated dynamic data structures rust gets harder and harder to use and so the question always has to include so what's the domain if you were doing something like building a math library or building a device driver for linux rust is a good choice if i was building a large accounting system something that manages a store or something i would never use rust。

好,大家好,今天啊我们来讲一下 rust 语言,它和 c 加加、贾瓦、 python 的 对比, 那通过对比,我们就是来说明这样一个问题,为何 rust 语言是未来的系统级编程语言? 那我们首先来看目录 这个视频,我们会分四个小节来讲,首先讲一下为什么需要 rest, 然后我们把 rest 和 c 加加、 java、 python 进行一个深度的对比。 第三小节我们在讲 rust 的 优势和应用场景,最后总结展望 好第一小节为什么需要 rust? 就是 说我们现在已经有了很多传统语言了,不管是 c 加加还是加 y 还是勾,那为什么先到这个时候 还优惠出来一门新的语言,那肯定它 能解决传统语言的痛点,而传统语言能有哪些痛点呢?我们先来说一下。首先最主要的问题就是内存安全问题频繁, 大家都用 windows 系统吧, windows 系统过段时间就要升级,这里 缓冲器溢出了,那里控制着饮,用了这个那个的通常都是内存错误。根据微软的数据,大约有百分之七十的安全漏洞源于内存错误, 所以这个内存错误啊,导致这个操作系统出现了很多安全漏洞, 出现安全漏洞就容易被黑客给利用,然后会造成数据的窃取,通信的截断等等一系列的安全问题。所以这个安全问题啊,是一个痛点。 那为什么会出现这种安全问题呢?我们就以微软的操作系统 windows 举例,它用 c 和 c 加加来开发的 windows 系统,那和 c 和 c 加加它有什么特点? 复杂性?这个复杂不是说非常难啊,它复杂就是说 要写出完美安全的 c 和 c 加加代码,对于大多数开发者而言极其困难,他太自由了, 约束太少了。可以这样,可以那样约束少,太自由就容易让作为人的开发者而误用。所以说你要写一段完美安全, 很少有八个的西货西加加代码很困难,除非你是高手级别, 但是高手毕竟是少数,大多数都是普通的开发者,一会出现这个问题,一会出现那样的问题,甚至有些问题都检测不出来。作为一个隐蔽的问题,那这种隐蔽的问题一旦发布到 软件版本中去,那就会形成一个漏洞。 那甲方和 python 最主要的问题就是性能瓶颈, 正因为有这个新的瓶颈在里面啊,他应用场景比较狭窄,一些对性能要求高的领域啊,操作系统的领域啊,内核领域啊,侵入式啊,都没法用,他只能用一些开发信息系统啊,常见的网络 应用软件啊,只能开发这些东西。那它的性能瓶颈呢?主要是因为它用了一个垃圾回收机制机洗这个垃圾回收机制啊,虽然可以自动回收一些没有释放的内存啊,但是它也导致了 系统软件的实时性受到了影响,而且它是解释执行效率比较低,难以满足高性能场景。那传统语还有什么问题呢?除了一个内存啊,一个 执行性能效率不高的问题啊,还有一个病发性容易出错,就是说一旦 现在的那些硬件啊,架构啊,都是多核的,那多线成病发程序那是肯定要用上的。但是这些程序一旦用上了, 如果场景复杂起来,你再应用多线城,那难免会出现一些数据竞争同步的问题,而这些问题调试起来非常难,就是说就算病发的一些 bug 已经出现了,但是你要解决它非常难, 增加了系统开发的心智负担,很累人啊,很多 加班加点的活啊,都是并发多行程,那里出现问题,就是说,哎呀,一个程序,一段代码,在单行程上或者少量的行程上,下面没有问题,但是用户的数量一多,开的行程一多,好,突然就死机了,突然就崩溃了,突然就数据乱了, 这就是传统语言的又一个特点,并发程序并发变成难以调试, 这四个问题是传统语言的痛点。那我们来看一下 rust 它和这些传统语言有什么优越之处。首先我们看 rust 和 c c 加加, 他是达到了一个什么东西呢?安全和信任的平衡。习家家呢,他灵活,但是呢,需要谨慎,谨慎其实也意味着就是你要水平高,对吧?你初学者,就算你再谨慎,该犯的错还是得犯, 因为他是手动内存管理灵活,但易出错, 可能会出现悬空指证啊,空指证啊等一系列的问题和指证的问题,不堪回首。 习家家的好处呢?也有,翻译速度相对较快,生态呢,成熟。就是说用习习家家开发的软件比较多,插件比较多,现成的函数库比较多,这些是它的优点。 那 rust 它能干什么呢?它能达到安全和性能的平衡, 它通过所有全系统在编一期,编一阶段就保证了内存的安全。所有全系统其实是一套规则,所有全规则规定你该怎么样写程序,就该怎么样写程序,否则你连编都通不过。 然后你把程序写的很好,至少没有那些内存问题了,那程序运行的时候就不需要机器,就不需要垃圾回收系统去回收一些 可能没有释放的内存了,因为你在运行的时候是不可能出现没有释放的内存的,因为在变异阶段已经把这些问题全部的给解决掉了。 然后 rust 还有什么好处?它的语法相似于 c、 c 或 c 加加, 那对于广大 c 和 c 加加程序员而言,升级到这门语言没有什么压力,主要是多学了一些所有权方面的规则 语法都是相近的。 好,那我们再看一下 rust 和 java, rust 呢,肯定是系统级的, java 呢,主要主打的是应用级的, 那 rust 和 java 相比,它又又改善了什么东西呢?首先我们看 java, 它是应用层的开发王者,运行在 jvm, java 虚拟机上面,具备自动极细,也就是垃圾回收等内存管理。 那他既然运行在这个虚拟机上面,那他可有一个跨平台的性能非常显著,但是这这个虚拟机呢,也是一个拖累,他 就相当于一个运行环境,你 java 要在某一个操作系统上面运行,你就必须要把这个 java jvm 加 java 虚拟机给装在这个操作系统之上,所以它是非常依赖于这个运行时环境的,非常依赖于 jvm 的, 这也是他的第二个特点。第三个特点呢,他的生态系统极其成熟,开发效率极高,这个很好理解,因为乔亚华是应用层的王者嘛,没有对手,然后也发展了这么多年了, 好多的含现成的函数库啊,现成的软件库啊,现成的插件啊,接口啊,直接拿来用用了,这就意味着 java 程序用不着从头重复造轮子了, 这是他的优点,当然这很正常,你发展了这么多年了嘛,对吧?你这个软件现在肯定要成熟了嘛,这是一个新生语言,是没法比的,这也是非常正常的。 那 rust 它主打的是系统机,在系统级编程,它是一颗星星,它有什么重大特点呢?首先它翻译的代码是原生的机器码, 没有极细的停顿就用不着垃圾回收,性能更加高,性能发挥到极致了。而且它可以直接操作硬件,适用于侵入式和底层开发,这个家伙就 斗不过它,对吧?你可以操作硬件,可以适合于侵入式底层开发。这个是 假如我无论如何做不到,假如你本身还要在虚拟机上面运行的,对吧?你如果要操作硬件啊,超侵入式系统啊,有时候甚至连操作系统都没有, 或者一个简单的操作系统根本装不上那些 jvm 这些虚拟机。 第三个,它静态的二阶质步数 f f i 开销低,与 c 加加无缝交互。 f f i 是 什么意思呢? 我们来简单的看一下解释。 f f i 是 foreign function interface, 就是 外部函数接口。它的作用啊,是让一种编程语言调用另一种编程语言写的函数,比如说 python 调用 c 语言写的数学函数, 这个 python 里面有一个这样的一个库,都是就是这这这么做的。它其实对外式 python 接口,但底层都是 c 语言写的函数, 还有甲方 script 都要用 rest 写的高性能函数, rest 都用 c 语言写的函数,就是说一种语言都要用另外一种语言的函数。简单地说啊, f f i 就是 不同编程语言之间的翻译关桥梁, 让他们能相互调用对方的功能,那开销低。这里的开销啊,指的是跨语言调用过程当中产生的额外成本, 不是被调用函数本身的执行成本,而是搭桥翻译的成本。 比如说 a 调用 b, 你 b 执行什么样的速度,这个不算开销,但是你要把这个 b 这个函数给调出来,通过什么样的机制给调出来,你需要,需要系统提供多少资源,需要多少时间,这就是成本。 它主要包括时间开销,连同语言之间肯定要切换,传递数据,转换数据类型花的时间。 第二个内存开销,你肯定要分配一天内存嘛?为了传递数据,临时拷贝数据,分配内存花的资源, 还有上下上下文的开销。切换两种语言的运行环境,比如说从 python 的 解释器切换到 c 的 原声环境的成本,这是一个操作系统方面的开销。刚才说的内存开销,是我们应用软件方面的要分配的一些内存。 最后举个生活的例子,比如说你让朋友去买东西,朋友跑腿沟通取货的过程就是开销,而朋友买东西的动作是函数本身的执行,他这个不算开销,对吧? 呃,简单的讲了一下啊,就是这个 f f i 是 什么意思?外部函数接口就是一种语言调用另外这一种语言并且的函数,然后它需要一定的开销,那 rust 里面呢?它调用其他的语言呢, 就开销比较低,尤其是它和 c 和 c 加加交互的时候,几乎是无缝交互。 好,我们简单对比了一下 java 和 rust 各自的优缺点,应该说大家都讲的是优点啊, java 有 什么优点? rust 有 什么优点对吧? 主要是一个系统级和应用级的较量。那 python 呢? python 和 rust 呢? python 肯定是解释性语,他的开发效率比较高,开发效率比较高,不是说运行速度快啊,开发效率就是说学起来还难, 那个函数写,写出来是不是很自由啊?这些东西,然后形成的库多不多就对吧,直接拿,拿来就用,生态是否丰富是这个意思。 那肯定 python 这方面是做的很好的,对吧?很多东西都是现成的,什么数学函数就拿来用支付传输的是什么?现成的东西非常多,适合于快速的原型,你能快速的实现一个什么想法,甚至一些非 计算机专业的人,他用 python 也很也可以用的很好。然后 python 也呢,也自动内置了 g c 内存管理也简单,降低了心智负担,就是说永远不知道去手动的管理内存。 但是呢,他的一个缺点就是性能相对较低,不适合对性能敏感的底层开发。 解释性语言嘛,它肯定不如编型编型语言来的开发效率高。那我们相对比 rust, rust 肯定是编编型语言,它性能卓越,运行速度接近 c 或 c 加加,这个速度方面,运行速度方面大大超过了 plus。 然后编辑强制检查内存安全,杜绝空置针的问题。这个就是大家用的内存管理机制,一个又一个 pass 用的机制,但是 rust 用的是编辑强制检查内存安全, 那学习方面呢?这个东西是其实是怎么说呢?是 rust 的 一个 不能说缺点吧,也是只能说一个不足之处吧,学习曲线较陡,就是学起来也入门不容易,因为它规则多呀,但是呢,严格的规则保证了高代码的质量, 正是因为它的规则多,所以它用不着集稀垃圾回收, 而且可以保证内存安全。 但是我相信大家如果真正沉下心来学, 尤其是计算机专业的同学应该是没问题的, 中国人很聪明的。好,我们最后第三啊,第三节来看一下 rust 的 核心优势和应用前景。这个就简单的概括一下了, 那四大核心优势,内存安全,通过独特的所有权系统和借用检查期,在编一期,从根源上杜绝空纸证和数据竞争等内存问错误。这个说的非常好的一个词,就是根源上, 而且是在编一期,不不把问题带到运行期里面去,这就有还有一个什么好处啊, 你用不着经常等软件系统上线了,你出现问题了,要跑到客户那里去调试代码,那才叫痛苦呢。因为客户那里 他的开发环境比较简陋啊,有时候就都只能通过打印的手段来排查问题, 远不如在家里那些丰富的什么扩装个开发环境啊,让你慢慢的单步调试啊,没这个说法的,你客户那里出现问题,你就等着出差加班吧, 所以把问题在编一期就解决掉,真的是其实很人性化。 第二个优势,无畏开,无畏并发,强大的类型系统,保证了县县城安全,让开发者能够轻松编写高效可扩展的并行代码,无需担心并发现境。这个陷阱这个词用的非常好, 有时候病发程序里面啊,往往是看不出什么问题,而且是数据量小的时候,并发症小的时候不发现问题,但是并发症一大的时候就出现问题了,这种问题就是一个陷阱, 对吧?你一旦出现这种陷阱的问题,那你掉进去就爬出来就很困难了。 而 rust 它通过强大的类型系统,可以保证现成安全,减少的数据的那个竞争高。性能也是它。第三个一个特点,坚持零成本抽象原则,无垃圾回收 机制,运行效率可媲美 c 或 c 加加,适用于对性能要求极高的场景,这个性能在很多软件系统应用领域都非常强调, 打个游戏你如果性能慢,一经常卡,卡死你,你也会把键盘给砸掉,对不对? 最后一个又是极简的运行式,就是生成出来的二阶式文件,非常小,而且没有不需要依赖的东西, 运行时呢开销也非常小,非常适用于切入式开发和底层系统的编程。四大特点非常好,总结的非常好,当然以后还有其他的一些小特点,大家慢慢的可以去体会。 那有了这些优势,这些优势其实 虽然不能说是他独有的,但是合在能把这些优势全部合在一起的语言,他就是独有的,独有占用了这么四大优势,其他的语言几乎没有。 那有了这样一个独有的组合出来的优势以后啊,应用领域非常广了啊,操作系统内核天生的可以做,本来就是系统级的开发语言, 浏览器引擎,强调速度,强调性能,强调病发性,对吧?也都可以做的。游戏开发那就对性能要求就更加要求高了,那就更不用说了,区块链和加密货币是安全领域的一个一一个内容,那 你如果出现什么内存泄露,还是那些问题,这个都涉及到一些钱的问题啊,这个黑黑客这个东西天天盯着呢,所以说一定要用安全的语言来开发加密方面的,和钱打架的方面的 软件,还有一个接入式系统和互联网,因为它可直接操作硬件,然后编出来的二极柱文件非常小, 还有网络服务和分布式系统,那这个是对病发的要求非常高,那 rust 也是非常适合的。 其实我觉得除了这么多这这这几个领域啊,其实一些常见的什么信息系统啊,夹哇那些传统理论啊,完全可以做,更加可以做了。你就想想这些 这些刚才说的这几个,这几个领域都是比较难的,其实比较难的高精尖的,说的不好听,有点高精尖的意思,在那个领域在里面了,那你高精尖的都能做, 你难道普通的什么信息系统开发的一个管理系统难道不能做吗?肯定更加可以做了,只是他 不屑讲而已,对吧?我们现在只是讲一下他特别能做的, 那行业的巨头也都是在拥抱 rust, 比如说微软、谷歌、亚马逊 metal、 墨兹拉等公司都在,尤其是这个微软啊,操作系统现在好多代码都是用 rust 在 改写。 好,那我们最后简单的总结一下, rest 呢,就是在自由和安全之间,他选择了后者就是安全。然后呢, 让你感觉不那么自由,有规则约束你,这个规则约束呢,也会让你感觉学起来有些 曲线有点陡,因为规则多嘛,你得记住,哎呦,这个规则要这样写,那个规则要遵守,所以你对学习者而言,他记的东西就多了,所以就会感觉一些难。但是这个 规则学了以后,它是非常大的好处的,那就是换来了安全和性能同时皆备,同时拥有权 衡之道,安全优先。 rust 通过牺牲部分开发自由,换取了极高的代码安全性和运行效率,是追求极致稳定性的首选。 第二种适合的场景,高性能项目,对于需要稳定安全且高性能的系统级开发, rust 提供了 c 或 c 加加级别的性能, 同时消除了内存安全隐患,这是我们总结的第二点。总结的第三点,咱们也实求是地讲成长的代价, 陡峭曲线就是学习的陡峭,学习的曲线比较陡峭,但是严格的编辑检查确保了更高品质的代码输出,这就是成长的代价。 但是我觉得这个代价付出是值得的。以后你如果熟练了用 rust 来开发出来的软件,无论和无论在性能和安全方面,都可以比那些 c 或 c 加加、 java 等开发出来的软件来来的更稳定,性能更高。 最后给大家一句话,也就是很多资深开发者的一些体会,经历过安全漏洞的痛,安全漏洞的痛苦,才能真正理解 rust 的 价值。 初学者可能会觉得 rust 哎哟,学习起来这么难,可能学着学着会不喜欢,但是一个资深开发者,他学着学着会越学越喜欢,因为他一看,哎呀,这个规则就是为了能督促我,能逼迫我 不犯错啊,这个错,我曾经为了这个错误,到客户环境去那里加班出差,这这这种那那种代价,相对于我现在学习的一些代价算得了什么呢? rust 的 未来持续增长,潜力无限,它的生态系统持续完善,越来越多高质量的库户软件被开发,生态日渐熟,社区活跃度极高, 连续多年位居 stack overflow 最受欢迎的编程语言榜首。医用领域也在不断扩展,从底层编程到 web、 区块链等多领域都在渗透,看看 web 都能做了,安全领域,区块链加密也在渗透, 那这些领域其实好多都是一些传统语言,尤其是西西家家的领域 的传统阵地啊,那西它就是变成了西或西家家的有力替代者,因为西或西家家以前也是主要是涉及到一些安全领域啊,系统编程领域的,而 rust 在 这方面它是它的 优势核心领域所在,所以完全有可能以后把 c 或 c 加加给替代掉。 所以现在啊,我觉得这些大学啊,还是在叫 c c 加加的大学啊,可以考虑一下是不是给可以换成 rust 了。我们 经常说,哎呦,这个大学里学的东西更更跟不上工业界的需求, 所以有时候一门新的东西出来,我们还是要努力的去跟上它, 毕竟在安全性极高的基础设施领域, rusty 已经展现出强大的替代潜力。 好,今天的视频我们就讲到这里,我们讲了 rest 和其他的一些传统领域的对比,然后讲了一下应用场景和它的前途,并且最终总结了一下。好,今天我们讲到这里,先再见。