作者回复: 在涉及纯计算效率的问题上,js确实是要差一些的,要不然也不会专门再弄出一个BigInt类型出来,以及还有所谓的TypedArray。但是,如果仅仅是说能不能做游戏服务器,开发游戏应用代码,那么坦率的说:1、没问题,2、效率还错,3、开发挺快的;4、网络实现也很简洁……但是如果游戏需要处理传输层的编解码,等等与计算效率相关的情况,那么(前面已经说过了)就得换方案了。
你提到多线程问题,对于最新的Node.js来说,原生多线程也是内置的了,但并不比传统开发工具下的简单。——所以除了语言或工具的习惯性之外,它也并没有什么优势。另外,在线程操作这个层级上,大家提供的都是差不多的核心操作或API,所以使用复杂度,面临的问题集之类的也差不多。只不过,相对于其它语言或应用环境,Node.js缺少在多线程基础上的开发库,这方面基本为0。
最后,还是从纯语言的角度上来回答你的问题。事实上决定它合不合适写游戏的,根本之处(从语言的角度上来讲)与你所提的绝大多数特性都无关。如果游戏规模大一些,那么就不适合直接用JavaScript来开发了。在任何的、包括游戏开发在内的大型的应用开发中,JavaScript最大的缺陷其实是缺乏静态类型声明与检查。在动态类型体系下开发大型程序几乎是一种灾难,即使你再能控制类型的使用、团队的编码习惯等等,都很难避免。
因此如果你非得在这种场景下使用JavaScript,我非常建议你考虑TypeScript,哪怕是Flow也行。当然,最终运行的执行环境仍然可以是Node.js,这就是个效率问题了,而与语言无关。
作者回复: 裂墙推荐。^^.
https://github.com/aimingoo/my-ebooks#程序原本
老实讲,比这里用js来讲的内容要易读得太多了。这里讲js吧,我还得注意“js/ecma到底如何实现”,或者这个特性那个特性什么的。而《程序原本》里只讲本质就好了。^^.
作者回复: 谢谢支持✊
作者回复: 函数式语言特性并不是js独有的,它是一种被广泛认可的语言特性。但在函数式特性方面,Eich没有太强调他在早期语言设计中受到何种影响。
现在的tc39中的成员们,从整体趋势上来看,是更认可js中的函数式特性,而否定其中的oop特性的。
所以,有时候感觉这门语言(的特性)已经开始变得怪怪的了。:(
作者回复: 按浏览器上的执行效果理解就对了。
NodeJS加载的文件是运行在一个模块中,因此function Foo()的代码中的"return this;"并不能得到global,从而导致“Foo().getName();”这一行不能得到global.getName出错。
作者回复: 加油!
作者回复: ^^.
完全赞同楼上观点
作者回复: 如果是这个目的,那么不太适合。因为这个课程的内容,讲工程应用的较少,对代码风格也缺乏讨论。
这个课程更多的是构建语言的学习与认知的体系,而不是提供应用开发的技能,二者目的不太相同。
作者回复: 写一个项目,或者重构一个项目。从实际工作下手,是最有效果的。
另外,你的头像超亲切。呵呵,我曾用这个图做桌面约一两年~ :)