python,lua哪个适合做绘图软件的插件脚本语言?

回复内容:
lua,因为:lua 比python 更容易编程,这里更容易编程的意思是指更容易做扩展和嵌入编程,也就是对解释器做事情,lua 的跨语言编程模型非常简单好用,数据交互都是通过栈,而 python 要复杂得多,作为 python 和 c/c++混合编程的专家,我在最熟练的时候要把引用计数处理对也要核对文档,睁大眼睛仔细看好几次。lua 的解释器就是一个数据结构,你可以在一个进程里面造出 很多来,而且彼此是完全隔离的,这在并发、错误处理上都极大得简化了问题,而 python 的解释器是全局的,用了 python,涉及这部分的东西就告别并行了,因为 进入python解释器那里串行化了,如果出现了错误,也比较难以可靠地恢复(lua 只要保护好涉及的资源,把解释器销毁重建一个就好了)lua 的效率比 python 好,如果用 api 兼容的 luajit 那就更好了(最快没有之一的脚本语言实现),做绘图软件的插件,这可能还是一个重要的考虑 事实上 adobe photoshop 就是用 lua 做的脚本
python 的优势在于库丰富。它的语言表现力可以打 80 分,基本合格,给生态系统拖后腿的情况不严重,但语言本身用今天的标准看并不出彩。lua 的优势在于语言本身实现简洁(除了 keyword 比较长):比如 coroutine,还有比较好的 closure 优化。缺点是库比较少。如果是对已有的 c 代码进行 scripting,lua 的缺点就不算缺点。
如果是用c++/qt写绘图软件,然后要找个脚本做插件提高软件的灵活性和扩展性,那必然lua比python好如果是用python/pyqt写绘图软件,然后用c++对性能要求高的部分进行优化,那必然是python比lua好
python。很多专业和开源图像处理软件都是用python做脚本的。
python和lua 哪个适合做绘图软件的插件脚本语言?取决于你期望用脚本语言达成什么目标。如果你只是希望把它做为ui/project配置文件:cmake: given the chance to do the language over, we would have spent some time looking for a nice embedded language that already existed. 【lua】 is the best fit that might have worked.如果你只是打算把c/c++ api封装一下,让用户在你指定的域里做功能定制,那么选择lua。有人提到 adobe photoshop lightroom,从简介上看,其实lightroom干的无非就上面两件事情。是的,lua在游戏行业很流行,而游戏行业用lua做的就是第二类事情。但是,如果你希望你的用户用这种脚本语言定制自己的插件,如果你的用户可能来自各行各业,如果你希望给你的用户足够的自由度想怎么插就怎么插,那么lua不是一个好的选择。出了程序员的圈子,lua的社区并不大,而你需要的是一种能轻松与其他domain对接的编程语言,比如python。maya的脚本语言就是用python,玩法比lightroom多了去了。今时今日,commonjs spec wiki可能是比python更好的选择(node.js是commonjs的一个实现),理由:javascript有丰富的第三方库,涵盖的领域不输pythonv8/node封装c/c++接口更容易javascript的语法比python简单,与lua很相似还可以用html写ui性能比python好了一个数量级,接近luajit(虽然我认为作为插件语言,性能其实根本不是问题)但不是没有代价:集成node.js进desktop app跟简单的集成一个解释器,难度不是一个量级的。。有兴趣可以参考node-webkit · github或者atom shell · github非利益相关:前autodesk程序员,现投身游戏行业。
相当多的专业的三维软件和合成软件的脚本,以及vfx公司的流水线工具们,基本是选择了python,这个也不是随口胡说,是的确有根据的。不信搜搜。
图像处理,python的全局锁(gil)就够让人决定选lua了
这种问题就好比什么语言是最好的语言,只能说哪一个熟练就用那一个
lua,轻。
请搜索:adobe photoshop lightroom

Posted in 未分类

发表评论