好久不更新这里的Blog了。
最近的我的工具链发生了一些变化,这里说明一下:
以前我所用的LuaJIT/C++的组合基本暂停使用了。原因: LuaJIT的性能虽然非常好,但是很多时候,足够快就行了,不一定要追求最快。
C++实在是给人很大的心智包袱,尤其是设计的时候。虽然Boost简化了很多造轮子的工作,但是编译实在是太慢了。多好的CPU都没啥大的帮助。
现在用主要是Python系的工具链,包括一些国内比较罕见的先进模块。具体用啥这里就不透露了。
这里说一下,工具的层次,我觉得,
C++/Java的想法是:造一种通用的语言,然后用很多库来扩展。
但是这个思路是很有局限的,主要的问题出在,统一的大语言的设计不是那么简单的。大语言总有不适合的时候。
这就是原来我想用Lua/LuaJIT帮助C++解决的问题。
但是,慢慢的我发现,Lua的地位比较难堪的地方,在于LuaJIT虽然是最快的JIT引擎之一,但是LuaJIT 居然 和C++通病相连:
1) 缺少库
2) 缺少语言级设计支持,或者说,在语言层面支持过多的设计(FP/OO/OB...),导致设计包袱过大,不利于初级程序员使用
3) 没有一个好的社区,Lua社区的主导人物,坚持认为Lua不适合做通用语言,活生生的掐死了 Lua的Web服务器项目。
4) 没有统一的ABI(抽象二进制接口),这也导致的了库的匮乏和社区的不团结
================================
选择Python的原因:
1) 库多
2) 做设计容易,初级程序员容易掌握
3) 社区活跃
4) 最近几个重要的关于语言间合作的项目取得突破性进展,大大简化了C/C++库和Python的合作
5) 协程的支持(这个原来是Python的弱项)
6) 由于最近几个项目的进展,Python的源码保护不再是一个问题
----------------------------------------------------------------------------
这也意味着我彻底把 动态语言 和 静态语言 的“体位”颠倒过来。以前是由C/C++为核心,驱动LuaJIT。Lua只是作为扩展。即所谓:“静上动下体位”。
现在是Python为主,只在极端必要的时候,考虑用C/C++替换hotspot的模块来提升性能。即所谓:“动上静下”体位。
写这些不是想引起 无聊的口水战,只是想说,手里有一把锤子把世界上的东西都当成钉子的想法不可以有。
合适的工具做合适的事情最重要。
在一些场合,LuaJIT/C组合依然有不可比拟的优势。
区别这些并依据不同的项目条件作出合适的技术选型是我孜孜不倦追求的能力。