互联网正在成为一个内容丰富且充满活力的地方. HTML和CSS规范正试图将Web提升到一个新的水平 – 我们正在获得WebSockets支持,这对于全双工客户端 – 服务器通信非常有用,可以实现一些引人入胜的设计模式.此外,我们在JavaScript中有一个WebGL的工作实现,到目前为止我已经有了很多乐趣.
但这引起了一些担忧,至少对我而言.我是桌面程序员,C/C++ / Objective-C – 取决于平台.具体来说,是渲染架构师. JavaScript为我们所有人提供了极好的服务,不是吗?我们使用它来获取与2D线性网站的基本用户交互,响应简单事件并将所有这些与HTML和CSS相结合.
鉴于实时通信和GPU驱动可视化的大门已经向网络开放,这对JavaScript有什么影响吗?我已经看到了对Dart的反应和其他推动JavaScript的尝试. JavaScript是弱类型的,它对我来说听起来像是各种各样的警报(考虑到速度很快的数学库,不必要的运行时检查不是一个有趣的时间).
我已经将很多代码转移到了GPU上,但即使这样,我的内部渲染器也只是cpu限制(HD6990不是问题,更不用说为桌面/嵌入式引擎提供动力的代码了).
所以,这是在前面:
>由于翻译设计,代码是赤裸裸的.渲染技术和解决方案非常值钱.这是我公司的唯一基础并支付账单.混淆不会削减它(如果我错了,请纠正我).我一直在想,为什么没有一个可以由VM处理的字节码形式的中间编译过程?
>它是弱类型的.杂耍矩阵,向量,四元数,数组以及高度交互式应用程序常用的所有其他类型的数据只会通过运行时检查进行处理.即使它最终进入GPU方面,你仍然需要在cpu方面做相当多的工作,这是由JavaScript陷入困境.
>基于原型的范例将抑制从可以推动采用WebGL / WebSockets的主要参与者移植代码的努力. (请记住,很多都是由cpu驱动的).随着越来越多的用户开始要求高保真的2D / 3D内容,基于原型的范例是否会持续存在?
> WebSockets已经被证明是网络游戏(BrowserQuest)的一个美丽的新增功能,更不用说动态网站了,将来会有很多人开发以开发出令人敬畏的内容(我的公司正在运行一个实施的小项目)由WebSockets驱动的3D环境中的小型MMO).
那么,我的担忧是否有任何实际依据?
这些问题有没有新动向?
如果您对该主题提供任何答案,您是否还可以添加一小段个人意见?我知道这不是“Stackexchange的方式”,但它没有坏处,因为所有其他问题都是合法的,答案可以基于事实.
解决方法
>现在所有的Javascript代码都是JIT的 – 不需要中间字节码语言,并且在可能的情况下可能会阻碍可移植性,这是Web的最大优点.像Python,Ruby,PHP等编程语言这样的现代脚本即使应用程序不是作为字节码分发也能很好地工作.不需要字节码步骤,因为无论如何代码最终都是JIT.您可以为JIT提供更多的材料,更好.事实上,对于Java,他们在现代版本中禁用了字节码优化,因为它使JIT编译器感到困惑.
> JIT编译可以优化动态类型问题,但它们永远不会提供静态类型的性能,但最有可能提供足够好的性能.虽然http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript有一些问题,但Javascript实现正在变得更好地解决这些问题.例如,Mozilla Audio团队(似乎更像是演示团队……)正在开发3D演示,只是为了获得优化其Javascript运行时的材料.
>我不明白为什么基于原型的方法与高保真度有任何联系,它们是两个完全不同的东西
>目前像谷歌NaCL这样的替代方法没有得到其他浏览器供应商的认可,而且很可能永远不会,因为微软和苹果不会采用仅谷歌技术而且Mozilla认为NaCL是开放网络的威胁
有关现代JIT编译工作的见解,请参阅PyPy博客http://morepypy.blogspot.com/(虽然不是特定于Javascript).他们详细解释了现代计算机科学对代码应用何种JIT优化.
对于“类似于网络的设计模式可以在3D中实现”,请参阅tQuery,它是jQuery,类似于3D内容https://github.com/jeromeetienne/tquery的框架
干杯,米科