显示标签为“scripting”的博文。显示所有博文
显示标签为“scripting”的博文。显示所有博文

2008年3月18日星期二

PyCon 2008总结

PyCon 2008前两天开了, 但国内的Python社区似乎都没有见到什么人关注(至少在CPUG的Planet of Woodpecker.org上没人提到这个, Google了一下也没有多少中文信息, 倒是台湾的Python社区有网友说起,并且参会了)。

Planet Python上看到一篇PyCon 2008 notes, 详细地说明了一下他参加的几个主题的内容,推荐!
  • Using Python To Teach Object-Oriented Programming in CS1
  • MPI Cluster Programming with Python and Amazon EC2
  • Applying Expert System Technology to Code Reuse with Pyke
  • Rich UI Webapps with TurboGears 2 and Dojo
  • State of Django
  • High performance Network IO with Python + Libevent
  • Plenary: Twisted announcement: they have a foundation
  • Plenary: You *can* Fool All of the People All of the Time
  • Plenary Keynote: Intellectual Property and Open Source
  • SQLAlchemy 0.4 and Beyond
  • Managing Complexity (and testing)
  • Using Grok to Walk Like a Duck
  • Case Study of Python Application Development Humanized Enso
  • To RE or not to RE Parsing text in Python
  • Plenary: Making Client-Side Python Suck Less
  • Plenary Keynote: Snake Charming the Dragon: the past, present and future of Python and Mozilla
  • Plenary: OLPC Update
  • Consuming HTML
  • nose: testing for the lazy coder
  • Introducing Agile Testing Techniques to the OLPC Project

2008年2月25日星期一

小看了Lua

虽然我一直对于脚本语言比较偏爱,但也一直没把Lua看上眼,认为它功能太弱了,只能“螺蛳壳里做道场”;而喜欢这个东西的似乎也都是搞C++的那些喜欢研究语言技巧的人。

但今天无意翻了一些wxLua,对这个东西有了兴趣,然后又顺便看了一些Lua本身,发现这个东西以前还真没意识到它的价值。

先拿wxLua来说,wxWidgets有不少脚本语言的binding,从wxPython, wxRuby到wxJS, 其实差别都不是特别大,但wxLua有些不同,至少它在使用模式上很适合于这样一种情况:快速开发一些小的程序(其它方面我还没来得及考虑,暂且不提)。

一 方面,适合这种情况的东西很少: 虽然可以用wxPython快速开发,但对于做一个程序来说,发布起来比较麻烦(py2exe还是有些够折腾的);Visual Basic和Delphi这类工具,可以快速开发,发布程序也方便(抛开VB程序采用的ActiveX库不谈),但它们是商业软件,同时又是庞然大物。所 以我看见一些同事用Excel的VBA来开发一些简单程序,也有比较geek的人学习AutoIt

另 一方面,wxLua自己也做得很适合这个。从规模上而言,wxJS比wxLua大不了多少,但wxLua将脚本解释器、wxWidgets对象全都做到了 一个可执行程序中,不需要任何动态库;它还提供了一个wxLuaFreeze工具,可以将Lua脚本跟这个解释器绑定到一个文件,用法相当简单,并且还可 以采用UPX这类工具对最终程序进行“透明”压缩。

这样来看,lua算是一个非常好的胶水语言(glue language), 在表现上可以嵌入在程序中完全隐形,同时带给程序的累赘也少(至少我们的产品目前采用Active Scripting就必须得将可脚本化的对象包装成COM对象,这个工作量可大了去了)。

不过,“五行拳”(Programming in Lua中文翻译版中引用了一段金庸《碧血剑》里的文字,意在比喻“极寻常的拳术",只要练习得好了,”每一招均是含劲不吐,意在拳先,举手抬足之间隐含极浑厚的内力”)也有一点点不爽,比如我现在想在wxLua的脚本代码中操纵COM对象,就得仔细琢磨怎么将LuaCOM的代码合进来才行,回头要另外一个功能又要合代码,这种情况可能还不如py2exe方便了(不过还没琢磨过Lua的代码,不知道何如这些特性简单不)——但“需要什么才加什么”这种方式也挺不错的。

2006年1月31日星期二

GUI程序的RAD和脚本化?

在我赖之混饭吃的那个项目上,这个大版本碰到一个比较棘手的问题, 那就是: 业务功能太多,虽然都不是很复杂,但总工作量却相当之多,加上项目组有2/3是新入职不到一年的同事,所以我们一直想把核心功能和业务功能分开来,后者用脚本来写。

但UI怎么办呢? 当然是要求有一些常用控件的,而且有事件响应能力,脚本中也要求能够操纵这些UI元素。基于俺个人多年的爱好,最好是能够同时编辑UI和事件处理代码(我认为没有这个功能就不能叫RAD:-)。


比较理想的是像Excel/Word那样用VBA(该项目是在Windows上用MFC开发的),但似乎这方面的例子和文档都比较少,也拿不到VBA的试用版来评估一下。

从目前看到的一些东西来看,Windows下比较接近我们的需求的是Script Builder, 它是基于Delphi的,可以直接使用ActiveX或者Delphi编写的package,支持ActiveScript(也就是说可以使用 VBScript, JScript, Python和Perl了)和DelphiScript。如果我们自己的项目是用Delphi开发的,把这个集成进去应该是件很酷的事情。(这个东西实际 是基于以前见过的Dream Scripter,只是UI表现上做得更加接近了我们“用脚本写程序”的想法而已。)

再看一些其他的GUI toolkit吧:

  • gtk有一个glade来编辑界面,然后我们可以在pygtk/python-glade或者gtk-perl/glade-perl来写响应代码,没法直接编辑界面代码(毕竟glade不是针对具体哪种语言的) P.S 刚刚在Planet Debian TW上看见yungyuc介绍一个新东东Gazpacho,说是"看起來是 Python+GTK 的 IDE",我还高兴了一阵,拉下来试试却发现只是一个改为完全用python写的一个glade而已。当然,我们可以以此为基础再来扩展。
  • wxWidgets有个wxGlade, 是模仿Glade的,不用多说。
  • Qt有Qt-Designer来编辑UI, 但这个东西也是跟glade差不多;同时它还有个Qt Script for Application,使得可以通过Qt Script(基于JavaScript)来操纵UI,不知道这两个东西是否可以接合,不过这已经很不错了。
  • SpecTcl是一个tk的界面设计器,不过它可以直接生成脚本(tcl甚至perl, python, ruby)
  • Java方面我用过JBuilder, 对于Borland的这种方式,用最近最红火的郭德纲的话说:“ 这个杭子,我做兴!”,简直" 要了亲命了"。只是因为java的烦琐,一个用JBuilder编写的略微复杂的界面,其创建UI部分的代码,基本上是不可手工维护的。至于Eclipse上UI设计器,还没玩过,不瞎说了。

说了这么些,有朋友会问,到底你们用的哪种?呵呵,记住我们的程序是用MFC写的,也没有买Qt这样的界面套件。最后我们用了用友华表的 Cell控件做模板来模拟UI,上面也可以放些按钮、下拉框什么的,虽然显得很不专业,但总算能对付过去。

想 想也知道为什么这种东西没有基于MFC的: 要在脚本中操纵UI控件(当然是说比较自然的方式,比如MainForm.Statubar1.SimpleText = "hello, world", 不是我见一些高手在tcl里面用c代码封装SendMessage来操纵的那种),这显然要求界面库有良好的RTTI,以便宿主程序能够很方便地将界面控 件对象加到脚本解释器当中去,否则脚本中怎么操纵它们。MFC有这些个嘛? ──除非完全自己手工来折腾。

补充:

1. 忘了gambas了,这个接近于Visual Basic,UI是用Qt写的。

2. mozilla的XUL应该是一个很不错的选择,而且传言很快将加入python支持,只是比较耗内存(似乎也没界面编辑器)。

2004年11月6日星期六

Fw: Scripting your Delphi Application

"In this paper I'll show you how to use the Microsoft ActiveScripting technologies to achieve everything we've just mentioned. While there is more to these technologies than can be covered by a single paper, by the end of this paper you'll know more than enough to start planning how you can use this technology in your application."

Full story: http://www.delphidevelopers.com/learnbooks/Scripting_your_Delphi_Application.htm
PDF created by pdfFactory: Scripting Your Delphi Applications.pdf
AXS_FAQ: Microsoft Active Scripting Frequently Asked Questions