最近写一个工具,对语言和工具的选择,犹豫了很久。
基本要求是,要有图形界面,简单的人机交互,比如按钮,图片之类的。要访问网络,http 和 ftp。而且最好能够跨平台。
GUI 的话,MFC 我最熟悉。可是太 low level 了,一个小工具,用不着花那么多精力去写那些 low level 的功能。可是只支持 Win。
C# 的话,GUI 写起来跟容易,至少缩放窗口的话,控件位置可以自动计算了,用不着自己写代码了。可惜同样不能跨平台。
Java 嘛,我很不适应它的 GUI。而且虚拟机太耗内存,不喜欢。(除了开发 android,别的时候,能不用 java 就不用)
对于计算没什么特别的要求,都是些简单计算,再加上网络访问,自然就想到 html+js,这样 GUI 和跨平台都没问题。
花了好久写 css,还有 js,然后发现一个致命问题:js 不能跨域。这个,因为之前没做过 js 开发,没想到这个问题,白白耽误了很多时间。
找了很多解决方法,还想到做成浏览器插件。可是w3c 还没有 web application 的标准出来,所以还不能跨浏览器。
貌似可行的就只有做个本地代理。用 python 最方便了。但如果这样,还不如从一开始就 python 了,html 和 js 根本不需要了。GUI 的话,用 wxPython 就好了。
所以就决定用 python 了。
然后是画图工具,有 gnuplot 和 matplotlib 两种选择。Google 了一下,发现用 matplotlib 的比较多。但是缺点:要安装一大堆第三方的库,包括 numpy。而我并不需要 matplotlib 的人机交互功能。而且 gnuplot 也支持用 wx 的输出。现在还不清楚它的 GUI 能不能跟 wxPython 交互。就算不能,也满足我需求了。而且 gnuplot 是个轻量级的小工具,并不需要安装一大堆东西,正合我意。
零零碎碎说了这么多,总的意思就是,根据需求,来选择用什么语言,什么工具开发。