前两天我请二哥对博客提意见, 他讲了网站上APL平台太大, 不太容易让人真正搞懂, 并且缺乏具体的点抓住开发者.
我根据这个意见, 计划写系列文章, 阐述各个层次的开发者如何利用APL平台, 以使大家更了解APL平台.
作者设计APL平台主要动机是为C++程序员找到一种正确的C++做前端产品的发展方向( 在保持C++的高效执行效率的情况, 而又能够满足前端应用变化无常的UI需求,
并且做到快速高效的开发响应, 克服C++在这部分的缺陷. ), 因此作者讲解的第一篇文章主题是: C++开发者 利用APL平台能有什么价值和作用.
好, 不讲废话, 直接上菜( 作者为 C++程序员写app设计的架构 ), 如下图:
架构解释:
传统的C++程序 app 包容的只有 硬编码(hard code)页面支持, 当页面展示需求要变化的时候(通常是你把产品做的七七八八, 客户才会真正告诉你他UI有什么需求), 开发工程师需要较长时间处理这个问题,
并发布新的exe,dll, 安装包之类, 以使产品升级. 如果采用APL平台, APL平台提供了两种 (动态页面+app数据层)的处理技术:
1. SCADA(组态)页面:
SCADA是电力监控产品的术语, 这种技术在 监控行业, 自动控制软件等等, 都是类似的做法, 通常叫组态也行.
这种技术也是: 页面描述 + 脚本事件处理, 跟HTML的原理也差不多, 不过SCADA应用到 要求比较特殊的行业中(特别是实时系统).
当然作者的SCADA页面 并不参照任何行业的规范, 是基于APL平台下, 用 apl脚本描述和处理事件的 一种组态技术.
2. Web页面 + javscript的APL接口 页面:
作者在 javascript中对接了 APL接口, 以使 Web页面摆脱 B/S应用框架 的束缚, 而使Web页面获得了app中数据层的 API调用的处理能力. 如果我们把这个功能放大一点,
假定作者精力无限旺盛, 在APL平台把OS层次的接口全部封装进去, 那么Web的前端开发者, 完全可以开发出 架构在APL平台之上的 WebOS那样的东西.
那C++程序员用 APL平台能有什么优势呢?
1. 可以保持 hard code的页面.
2. 需要把数据层对接到 APL平台, 然后可以用 SCADA页面 或者 Web页面 完成 动态需求页面开发.
可以向Web那样直接在 服务端发布或者更新页面.
总之, 一句话, APL平台为 C++产品 获得 快速和动态的前端页面开发能力 提供了比较容易改造的兼容性解决方案.
再分析清晰一些, 以下具体讲解 哪些情况下 同志们无需考虑选择APL平台 和 哪些情况下同志们可以考虑选择APL平台.
以下情况, 出现任何一条都无需考虑 选择APL平台, 而应考虑选择其他方案:
1. 你的应用有非常强的 跨OS需求.
假定你的应用 需要跨越window, linux, 各个手机OS...
我想需要使用 java或者纯Web技术才行, 或者你得准备多个平台的开发人员才行.
目前APL平台还仅仅支持window平台, 虽然作者的设计上也是希望APL平台能跨越各个OS, 跨越PC和手机, 无奈作者能力有限, 有想法没计划.
2. 你不是C++的开发者, 或者你觉得用其他更高级的语言开发能替代你现在C++产品.
APL平台是为 C++ 和 apl脚本语言 无缝结合 而设计的.
3. 你的产品 完全没有动态页面的需求.
你现在的产品UI已经完全达到和满足用户需求, 无需改进.
那这种情况下APL平台已经帮不到你.
以下情况, 同志们可以考虑选择APL平台:
1. 你现在的产品是项目方式在 复制和变异, 你在项目复制时候, 因为需求变动, 花费在UI调整上的成本太高.
这种情况下, 比较适合采用动态页面技术. APL平台的 SCADA技术 或者 支持apl接口的 Web页面, 将会降低你在UI调整上的开发成本和时间.
2. 用户在 UI上面 总是需求在变动 或者 不断有新的页面, 你现在hard code的方式完全跟不上用户的需求.
这种情况下, 只有动态页面技术 才能在时间和效率上到达要求.
3. 你的C++产品越来越庞大, UI工作越来越多, 你已感觉控制它越来越困难, 而你新招聘的程序员很难掌握这个庞大的产品开发.
你正在考虑是否 开始采用别的更高级的语言来替换它, 而又在犹豫整个转换的风险.
APL平台是 一种 基于抽象数据, 把C++的代码和模块从紧密偶合变成松散偶合的设计思想.
同时又把 开发工作分为了 C++核心开发工作 和 动态页面工作( 描述性和脚本性 开发工作. )
这种情况下大幅降低了你对产品外围的 人员技能要求.
我觉得把 庞大的C++产品 转为支持 APL平台方式的产品, 比转为其他语言风险低.
好了, 在文章的结束, 附上基于APL平台的实例( 深思(DeepThink)浏览器) 的系列画面, 以使大家更多感受这个平台能做到什么.
1. 深思(DeepThink)浏览器中 用 SCADA画面实现的 本地音乐播放的应用:
2. 深思(DeepThink)浏览器中 用 SCADA画面实现的 桌面应用管理:
3. 深思(DeepThink)浏览器中 用 SCADA画面实现的 人机对弈的 小游戏:
4. 深思(DeepThink)浏览器中 用 SCADA画面实现的 华容道 小游戏:
5. 深思(DeepThink)浏览器中 用 SCADA画面实现的 人机对弈的 五子棋游戏:
6. 本地搜索 ---- 基于 APL接口的 Web页面:
目前APL(抽象编程语言)平台还在alpha开发阶段, 作者希望更多的开发人员能够了解和喜欢APL(抽象编程语言)平台, 如果你想了解更多APL(抽象编程语言)平台的信息和体验一下
APL(抽象编程语言)平台中的开发和应用, 请在此文章后留下您的电邮, 作者会把此包发给您, 多谢!
更多APL(抽象编程语言)平台内容, 请参见作者博客:
smartfish_liu - 博客园
http://www.cnblogs.com/smartfishliu/
paul
2013-3-30