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

WBOY
풀어 주다: 2016-06-06 16:22:51
원래의
2668명이 탐색했습니다.

回复内容:

Lua,因为:
  1. Lua 比Python 更容易编程,这里更容易编程的意思是指更容易做扩展和嵌入编程,也就是对解释器做事情,Lua 的跨语言编程模型非常简单好用,数据交互都是通过栈,而 Python 要复杂得多,作为 Python 和 C/C++混合编程的专家,我在最熟练的时候要把引用计数处理对也要核对文档,睁大眼睛仔细看好几次。
  2. Lua 的解释器就是一个数据结构,你可以在一个进程里面造出 很多来,而且彼此是完全隔离的,这在并发、错误处理上都极大得简化了问题,而 Python 的解释器是全局的,用了 Python,涉及这部分的东西就告别并行了,因为 进入Python解释器那里串行化了,如果出现了错误,也比较难以可靠地恢复(Lua 只要保护好涉及的资源,把解释器销毁重建一个就好了)
  3. 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的一个实现),理由:
  1. Javascript有丰富的第三方库,涵盖的领域不输Python
  2. V8/Node封装C/C++接口更容易
  3. Javascript的语法比Python简单,与Lua很相似
  4. 还可以用HTML写UI
  5. 性能比Python好了一个数量级,接近luajit(虽然我认为作为插件语言,性能其实根本不是问题)
但不是没有代价:集成Node.js进desktop app跟简单的集成一个解释器,难度不是一个量级的。。有兴趣可以参考Node-Webkit · GitHub或者Atom Shell · GitHub


非利益相关:前Autodesk程序员,现投身游戏行业。 相当多的专业的三维软件和合成软件的脚本,以及VFX公司的流水线工具们,基本是选择了python,这个也不是随口胡说,是的确有根据的。不信搜搜。 图像处理,Python的全局锁(GIL)就够让人决定选Lua了 这种问题就好比什么语言是最好的语言,只能说哪一个熟练就用那一个 lua,轻。 请搜索:Adobe Photoshop Lightroom
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿