APL平台对C++开发者的价值和作用-程序员宅基地

技术标签: ViewUI  ui  前端  c/c++  

    前两天我请二哥对博客提意见,  他讲了网站上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

  

 

     

 

 

 

     

 

 

 

    

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/smartfishliu/archive/2013/03/30/2990247.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30432579/article/details/96322352

智能推荐

Odoo2021最新实用教程之——Odoo Studio 在线开发工具实战入门指导-程序员宅基地

文章浏览阅读4.7k次。Odoo Studio 作为Odoo企业版中的核心模块,能让odoo使用者通过此设计器快速、高效地构建新模块以及方便地进行已有功能地调整。但目前缺乏与Odoo Studio有关的中文指导资料,本文通过文字与视频结合的方式讲解Odoo Studio的实战操作,希望帮助有需要的朋友快速掌握这个工具。即使你最终可能不用企业版,但通过odoo企业版在线试用提供的这个在线开发工具也能帮助你对odoo的原理更快的了解。 Odoo的在线开发工具是Odoo企业版提供的强力设计工具,本实战..._odoo studio

五个好用的网络协议分析工具_network packet analyzer-程序员宅基地

文章浏览阅读4.7k次。Network Packet Analyzer,是一种网络分析程序,可以帮助网络管理员捕获、交互式浏览网络中传输的数据包和分析数据包信息等。这里给出了5个最好的网络数据包分析工具,具体如下:  1. Wireshark  相信大家都很熟悉,就不多介绍了。Wireshark网络嗅探器是最受欢迎的免费网络嗅探器之一,它能够在Unix系统和Win系统下运行。  下载:http://www_network packet analyzer

三极管的开关功能_三极管作为高侧开关-程序员宅基地

文章浏览阅读1.9w次,点赞2次,收藏8次。自己以前也发过一篇博客,上面表明了两种电路,但是没有这个全,现在推荐给大家很好的理解三极管的开关功能,下面以8个实例图片,生动的阐述三极管作为开关的功能。期待大家回复讨论分析各个电路。1、低边开关2、高边开关3、基极电阻4、非门电路5、与门6、或门7、H桥8、振荡器..._三极管作为高侧开关

服务器崩了只剩下数据文件恢复oracle数据库_oracle只有数据文件能恢复数据库吗-程序员宅基地

文章浏览阅读1.5k次。一、必须安装相同版本号的数据库。二、最好app的路径也为相同的盘符。三、安装完毕以后命令停止数据库,shutdown immediate 并查看服务里面是否也是停止状态,将服务里面oracle开头的服务全部停止。四、将崩之前的app下的数据文件直接覆盖替换新安装的文件。五、启动服务,看是否能登陆进入用户并查询是否有以前的用户(如果能登陆成功)。六、如果不能正常启动,用自己服务器的init.ora配置文件启动,路径app\Administrator\admin\orcl\pfile教程如下;如还_oracle只有数据文件能恢复数据库吗

linux查看用户口令生存期,BVS安全检测之检查Linux是否口令生存周期-程序员宅基地

文章浏览阅读2.5k次。口令生存周期的配置文件为 /etc/login.defsvim 打开该文件,命令模式下输入 /PASS_MAX_DAYS 找到该配置信息的位置我的Linux操作系统默认显示的是99999,说明我当前用户密码的生存周期为99999天默认配置如图:PASS_MAX_DAYS为密码最长使用时间,多少天后会有提醒PASS_MIN_DAYS为密码最短使用时间,意思是多少天内不能修改密码PASS_WARN_A..._pass_warn_age什么意思

银联 php hex2bin,【密码学】银联有卡交易中密码的加密流程(php版)-程序员宅基地

文章浏览阅读180次。最近在做一个有关银联有卡交易的程序,在研究接口时,发现一个有趣的现象。对于密码加密,银联对不同语言有不同对待:Java版demo最全;NET版本被有意屏蔽(没有放开测试,不知是否正确);PHP版本直接找不到任何有关的踪迹!基于我们程序基本是PHP语言,所以不得已需要自己写这个模块,来完成密码的加密工作。学习加密实现原理理论先行,实践验证,这个方法论屡试不爽!在这里找到一个资料:密码键盘介绍四:Pi..._php sm2加密银联接口

随便推点

Vue框架整理:全局组件、局部组件、特殊组件创建方法_vue 特殊组件-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏3次。vue的组件也是需要注册后才可以使用的,注册有全局注册和局部注册两种;全局组件注册后,任何vue实例都可以用:<div id="v1"> <first-component></first-component></div&a_vue 特殊组件

lat_mem_rd 内存延迟测试工具原理,lmbench编译时llseek链接不到问题解决-程序员宅基地

文章浏览阅读5.6k次。命令介绍:LAT_MEM_RD(8) manual page是lmbench中的一个工具,它的主要作用是测试内存访问的延迟。命令使用方法:lat_mem_rdsize_in_megabytesstride [stride stride...]如: lat_mem_rd 128 64 1024即: size是128MB,stride分别为64Byte 1024Byte,如果不指定stride,默认值是512,可以指定多个stride,一个命令进行多次测试。..._lat_mem_rd

类似液体loading效果-程序员宅基地

文章浏览阅读173次。直接上代码,有注释index.html<!doctype html><html lang="zh-CN"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0

vxworks之符号表_vxworks sym-程序员宅基地

文章浏览阅读5.7k次。符号表初始化 符号表用于建立符号名称、类型和值之间的关系。其中,名称为null结尾的任意字符串;类型为标识各种符号的整数;值为一个字符指针。符号表主要用来作为目标模块加载的基础,但在需要名称和值关联的任何时候都看使用。 运行系统中一般存在两个符号表结构sysSymTbl和statSymTbl。sysSymTbl为目标机的系统符号表,通过程序或tShel_vxworks sym

ruby sleep函数及常用的方法_ruby sleep-程序员宅基地

文章浏览阅读1.2w次。1) sleep方法。 ruby中也有定时器,sleep相当于js中的setTimeout函数,不同的是sleep后的参数单位是秒,不是微秒。另外,js中的setTimeout是另起一个线程,不停止主线程继承往下执行,和ajax类似,ruby的sleep方法却是会阻止当前线程往下执行的。2)ruby的函数中return是可以省略的,如果省略,方法中的最后一个语句的计算值会是返回值。====_ruby sleep

培训班面试一个月入职了一家外包公司(谈谈感悟)_外包公司岗前实训-程序员宅基地

文章浏览阅读5.3k次,点赞4次,收藏6次。在北京培训了java半年左右时间,今天第一天上班,如果现在让我选的话,我可能还是会选培训班,同班的同学有的到现在还没有找到工作,有的已经收到了5-6个10k+的offer了(其实要我说培训班出身的程序员找工作真的和实力没关系,有的本科,年龄大一点的,简历好造假很好找,应届生年龄小很难找,但是10k+的有很多人干不来,不过现在还没有辞职)。我是应届生,垃圾本科,在大学学的是食品专业,毕业室友一个考..._外包公司岗前实训