百科问答小站 logo
百科问答小站 font logo



怎么看静态类型语言(java,flutter/dart,swift)纷纷往aot&jit双模式发展? 第1页

  

user avatar   xtlisk 网友的相关建议: 
      

原因之一是技术发展更加细化了,需要去更多方向上发展,做更好的组合,来榨取更多价值

理论上说,java这种静态类型一开始就可以很适合AOT模式的,(GC之类的问题其实并不必须VM,也可以VEE,像Go这样),只要不嫌麻烦在各种平台上搞对应编译器(或者通过其他代码中转,如java->C),但因为某些原因并没有直接做成这样,当年微软的VJ似乎就这么干,然后被起诉了。。。

直接解释执行性能是个问题,如果不AOT,那么就JIT,然后大家发现JIT也就是“慢热”了一点,实际效果可能比AOT还好,因为JIT可以做到AOT做不到的一些动态优化,于是干脆就解释+JIT这个架构搞定,综合性价比最高

不过随着应用和需求的发展,JIT的一些弱点(比如上面说的慢热之类)也显现了,这时候就引入AOT来补足,也是挺自然的事情

但并非所有解释+JIT的架构都可以引入AOT来解决一些问题,例如你提到的pypy,基本就没有AOT的价值,这很大程度是Python语言本身特性决定的

反过来说,题主提的C++、Go这种一般以“AOT”形式实现的语言,难道就不能再进一步引入JIT来优化性能么,其实是可以的,说不定将来也会是一个趋势


user avatar   aetherus 网友的相关建议: 
      

所谓的十年风水轮流转呗。

早期的计算机由于性能真的不行,所以需要程序能尽可能的吃尽计算机的性能,运行效率才能被人接受。所以那时候的语言都专注于运行效率,用得多的基本都是 AoT 编译型语言。

在摩尔定律还适用的年代,计算机的性能不断提升,内存也越来越大,再加上 Ruby 的出现,让人开始关注开发效率,运行效率反而被一定程度地忽视,反正我写的程序这一代计算机跑不动,下一代就能跑动了。而开发效率并不会因为CPU性能提升而成正比地提升,所以这个阶段比较流行的是那些关注开发效率的解释型语言。

现在摩尔定律已经不适用了,CPU运算速度很难再往上提。在各种新兴语言都已经让开发人员敲得足够爽的情况下,关注点自然又会回归到运行效率,但是开发效率和语言的表现力又不想放弃,所以很多解释型语言开始搞 JIT 编译器,而在这个阶段的全新语言也会考虑 AoT,只要工具链做的够好,AoT 在开发效率上也一样高效。

说白了,计算机领域就是个在贪婪和怠惰这两种原罪的相互作用下不断发展的领域。贪婪是技术革新的第一推动力,而怠惰指明了革新的方向。


user avatar    网友的相关建议: 
      

低情商:是的,已经结束了。

高情商:diy的时代暂停了,只不过我们暂时不知道重新开放的期限。




  

相关话题

  既然有 HTTP 请求,为什么还要用 RPC 调用? 
  SecureRandom的nextInt()继承自Random,为什么他就比Random安全? 
  为什么很多人都说 Java 和 C++ 不适合用 vim 开发? 
  如果当时 Sun 没有起诉微软,而微软继续保持对 Java 的热情的话,Java 的现状会是怎样? 
  强类型语言的优缺点是什么? 
  为什么总有一些人推荐计算机学生把重点放在高数和线代? 
  为什么有的GIF图片只会播放一遍,而有的会重复播放? 
  如何理解 Golang 中“不要通过共享内存来通信,而应该通过通信来共享内存”? 
  JAVA语言的优缺点是什么? 
  一个文件分发服务器,要支持多个(几千个)请求下载,文件比较大,用java socket,ftp还是http支持? 

前一个讨论
古代的皇帝,为什么非要用太监伺候自己,而不用美貌的宫女呢?
下一个讨论
如何看待腾讯旗下的新游戏白夜极光国际服没有中文?





© 2024-05-17 - tinynew.org. All Rights Reserved.
© 2024-05-17 - tinynew.org. 保留所有权利