激进微风的 Illumination Software Creator

作者:Mike Diehl

如果您可以创建一个程序而无需编写任何代码,那不是很酷吗?而且,如果您的程序可以在 Linux、Mac、Windows、Android、Windows Phone 7、iPhone 和 Flash 下运行,那不是很酷吗?这将非常酷,借助激进微风 (Radical Breeze) 的 Illumination Software Creator (radicalbreeze.com),您就可以做到这一点。

Illumination Software Creator (ISC) 是一个图形化 IDE,允许您拖动代码块并将它们连接起来以创建应用程序。图 1 显示了用户界面的外观。它非常简单明了。要创建一个程序,您只需将代码块拖到画布上并配置该块。然后,您将输出连接到输入。代码块被分类,以便于查找。点击代码块允许您为给定的块设置各种参数。变量(出现在左下方面板中)有三种类型:文本、数字和文本文件。

Radical Breeze's Illumination Software Creator

图 1. Illumination Software Creator 的用户界面

一旦使用 ISC 创建了一个应用程序,它就可以针对前面提到的任何架构。

默认情况下,ISC 创建一个针对 Python/GTK 环境的程序。这是功能最全面的目标,并允许使用 ISC 开发的程序在 Linux、Mac 和 Windows 上运行。此目标允许窗口具有各种尺寸,并支持文件 I/O 和 shell 脚本访问(在主机系统上可用时)。

Android 目标创建一个 Android 项目,带有完整的 Java 源代码,适合导入到 Eclipse IDE 中。由于我不是 Eclipse 的常用用户,因此我在正确配置 Android SDK 时遇到了一些困难。但是,我能够查看 ISC 生成的 Java 代码,然后让 Android 手机模拟器工作。我确信一旦软件下载完成,Eclipse 的常用用户将在几分钟内启动并运行。

另一方面,iPhone 目标创建一个带有原生 Objective C 源代码的 iPhone 项目。但是,由于 Apple 的许可政策,此项目目录必须移动到实际的 Apple Macintosh 硬件上,才能针对 Apple SDK 进行编译和链接。

最后,Flash/Flex 目标生成一个目录,其中包含一个 .swf 文件以及一个嵌入 Flash 对象的 HTML 文件。命令行 Flash 播放器 swfdec-player 在 Flash 架构的限制范围内,毫无错误地运行了我的测试应用程序。例如,Flash 不支持文件 I/O,因此我的应用程序尝试打开文件选择窗口的操作无声地失败了。但是,示例 Flash 应用程序在我的 Web 浏览器中完美运行。

正如您所看到的,重新定向 ISC 会使其为给定的目标生成本机代码,而不是简单地链接到专有的运行时环境。此外,使用 ISC 生成的应用程序应在其部署的任何目标上以相同的方式运行。每个代码块,尽管用不同的语言编写,但在每个目标上产生相同的结果。但是,您使用 ISC 创建的应用程序窗口默认大小适合每个目标架构;这可以防止大型窗口在移动设备较小的屏幕上被剪裁。您可以将此视为类固醇上的面向对象编程——不仅代码块的实际实现被封装,而且目标架构也被封装。

到目前为止,我一直在用相当通用的术语谈论代码块。那么您可以使用哪些类型的块呢?当然,最重要的块是 Window 块。此块创建一个应用程序窗口,您可以在其中放置按钮、标签、表单字段和文本字段。此块本质上创建了应用程序的“面孔”。您可以根据应用程序的需要创建任意数量的窗口并打开和关闭它们。您还可以创建消息框和确认框。此外,还有一些块允许您获取和设置各种窗口控件的值。

原生的文本操作块相当有限。有连接、搜索和替换块,以及转换为大写和小写的块。这是 ISC 中一个令人惊讶的弱点,但可以解决,正如我稍后展示的那样。

ISC 没有提供通用的数值表达式求值器,而是提供了实现各个算术运算符的块。在这里,您会找到加法、减法、乘法、除法和余数。您还会找到一个在给定范围内提供随机数的块。但是,我在这里谈论的是整数算术,以及所有固有的局限性。即便如此,实用的程序应用程序在浮点处理器出现之前就早已编写出来了。

ISC 中只有两个逻辑块:if/then/else 块和一个简单的 do/while 块。尽管听起来可能很有限,但这两种块应该足以实现我能想到的任何算法。但是,如果 ISC 具有表达式求值功能,这些块将更加强大。

ISC 可以被称为“强类型”环境。数字变量必须显式转换为文本格式,然后才能在字符串操作中使用,反之亦然。考虑到底层变量实现必须在 Python、Java 和 Objective C 环境中以相同的方式工作,这在某种程度上是有道理的。

Run Shell Script 代码块允许应用程序在具有底层 shell 解释器的架构上运行本地 shell 脚本。实际上,这意味着 Linux 和 Windows。这开启了简单地忘记 ISC 中的跨平台功能,而仅仅使用 ISC 在另一个深奥的 shell 脚本前面放置一个友好的界面的可能性。我被告知,ISC 的许多用户是系统管理员,他们使用 ISC 创建用户友好的系统管理工具,供其他员工使用。

由于 ISC 的许多目标架构根本不支持文件 I/O,因此 ISC 宣传的文件功能相当有限。您可以创建文件打开和文件保存对话框。但是,读取和写入文件是基于一次处理整个文件的。本质上,您读取文件,处理它,然后再写回它。当然,所有这些在 Flash 等不支持访问本地文件的目标上根本不起作用。

早些时候,我提到 ISC 的许多限制可以被解决或减轻,这就是自定义代码块的用武之地。看看图 2。在这里,您可以看到自定义代码块定义屏幕。ISC 用户就是这样创建新类型的代码块的。从左上角开始,向下工作,请注意您可以命名和分类一个新的代码块。然后,您必须为该块选择一个目标,这就是有趣的地方。您实际上可以为您打算支持的每个目标架构实现相同的代码块。因此,如果您打算仅支持 Python 环境,则只需要用 Python 写出代码块即可。但是,如果您想支持其他目标,则需要为每个目标独立实现您的块。这样,同一个块可以在您的应用程序中使用,并且将自动使用适当的实现。自定义块甚至可以保存到自己的文件中,以便在其他项目中使用。

Radical Breeze's Illumination Software Creator

图 2. 自定义代码块定义屏幕

继续,请注意您可以为您的块定义最多两个“输出”。自定义块仅接受一个输入,但您可以定义该输入的名称。这实际上是有道理的,因为“输入”实际上并没有接受任何“输入”。它只是一个连接点。自定义块定义窗口中心的其余部分是重点,也可能是工作量所在。您可以在这里编写实际实现您希望块执行的功能的代码。请记住,您必须为您打算支持的每个目标架构,用该目标的本机语言编写代码。作为您的代码需要是什么样子的提示,您会获得当前选定目标的示例代码。

窗口的右侧部分描述了该块可能具有的最多三个副作用。代码主体中完成的任何计算的结果都可以发送到变量,供应用程序的其余部分使用。修改哪些变量是在您将生成的块拖到画布上并配置它时确定的。似乎没有任何用于修改其他变量的可扩展 API。

到目前为止,我试图指出我在 ISC 中可以找到的尽可能多的限制,但公平地说,ISC 正在快速成熟。当我开始评测这款产品时,我收到了 2.0 版本。我发现这个版本稳定且可用,但它完全缺乏自定义块功能。自定义块功能出现在 2.2 版本中,该版本显然是在几周后发布的。我被告知 3.0 beta 4 版本(在您阅读本文时应该已经可用)将具有许多新功能。将有一个适合编写游戏的初步图形功能。将有一个定时器块,它会定期“触发”。但我个人最感兴趣的功能是基于 SOAP 的 Web 服务客户端块。这将允许 ISC 应用程序通过互联网实时访问数据和高级功能。这些功能将大大扩展可以使用 ISC 创建的应用程序范围。

ISC 如此迅速地发展是令人震惊的。考虑到每个代码块、功能和错误修复都必须在至少三种不同的编程语言中以相同的方式实现。每个目标架构都施加了自己的限制和做事方式。为了使 ISC 成为一个有用的工具,它还必须尽可能多地公开每个目标平台共有的功能。这是一个真正雄心勃勃的项目,而该项目只有两年历史这一事实简直令人惊叹。

激进微风还计划托管一个用户创建的块的存储库。在您阅读本文时,您将能够访问此存储库并下载其他用户创建的自定义块。根据我在用户论坛中读到的内容,我预计网络块和 SQLite 块会很早出现。不会有任何保证给定的块将在所有受支持的目标上运行。但是,由于您将下载该块的源代码,因此可以相当容易地添加缺少的功能和目标。

我被告知学校计算机部门是 ISC 最大的用户之一。学校正在使用 ISC 来教授编程课程。虽然我恰好是结构化编程的粉丝,而 ISC 对结构化编程的支持不太好,但我可以看到 ISC 可以提供一种让年轻学生对计算机编程产生兴趣的方法。毕竟,学生使用 ISC 编写的任何项目的结果都可以在他们的手机上运行。这可能是一个巨大的吸引力,尽管我不寒而栗地想到普通高中年龄的孩子可能会产生什么样的应用程序。

ISC 看到的另一种常见用途是作为一种“快速启动”程序,允许组织在桌面环境中快速原型化应用程序,然后将其移植到移动环境,而无需过多的额外投资。即使公司最终放弃 ISC 并转向另一个 IDE,让 ISC 自动生成应用程序的大部分代码也可以将交付日期缩短几个月。

只需稍加考虑,还可以创建一个基于 Flash 的非功能性演示程序,并将其发布在网站上作为销售工具。潜在客户可以在 Web 上与演示小程序互动,并确信该程序将在他们的移动设备或工作站上以相同的方式运行。

“那里有一个应用程序”一直是 Apple 非常成功的营销工具。但是,我经常发现自己说“我需要一个应用程序来做这件事”,而且我认为我并不孤单。使用 ISC,即使是初学者程序员也可以生成有用的应用程序,并在他们的移动设备上运行它们。简单的游戏和列表管理器是首先想到的。但是抵押贷款计算器和成本估算软件也很容易用 ISC 生成。借助 ISC 的 3.0 beta 4 版本及其 Web 服务功能,实时销售点和库存跟踪应用程序变得容易在各种平台上实现。拥有一个在工作站和任意数量的移动设备上行为相同的程序将减少培训费用,并且定制应用程序的大部分开发都可以在内部完成。

当我承诺评测这款产品时,我形成的印象是 ISC 将解决我所有的跨架构开发问题。好吧,它没有,但它确实解决了很多问题。与其投入精力成为几种不同架构的专家,我可以让 ISC 编写我的大部分代码,如果不是全部的话。而且价格仅为 49.59 美元,我想不出您怎么可能会出错。ISC 实现了他们所说的功能,而且非常酷。

Mike Diehl 是新墨西哥州阿尔伯克基的合同程序员和顾问。Mike 与他的妻子和三个年幼的儿子住在一起,可以通过电子邮件 mdiehl@diehlnet.com 联系。

加载 Disqus 评论