`
歆渊
  • 浏览: 307932 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

面向能力方法的实现-XPL还是StandinPattern

阅读更多

进一步规划Ablever中面向能力的实现方式以后发现, 原来通过Ablet/Caplet和通过替身模式是两种完全不同的实现方式. 前者是要实现一个可以扩展的编程语言 eXtensible Programming Language, 主要在编译阶段实现能力逻辑的引入, 而后者是允许开发者还是用已经熟悉掌握的程序设计语言(java)来编写代码, 而在运行时通过动态生成替身类和对象实现能力逻辑的附着. 在最终理想的Ableverse系统中这两者方式应该兼而有之, 互补短长.

但是目前阶段不可能在短期内把这两种方式同时形成发展完善, 特别是XPL, 她需要相当数量的程序员用户群在相当长的时间内不断完善和改进模式和语法才能有竞争力, 但是从头开始的话, 要吸引这么多不错的程序员放弃他们已经熟悉掌握的基本语言, 化额外的时间和精力来习惯和忍受一个不成熟, 又没有方便开发的IDE的新语音的话, 想想都是不太可能的事情, 更别说让他们喜欢和出力发展这种语言了.

Standin模式似乎更容易实现和容易被接受一些, 但同时似乎也不如XPL强大和灵活, 有些调用似乎要用很拙劣的代码来表达, 让人不是很舒服. 但是比起完全从头学习和接受一门新语音来说, 我觉得她还是会比XPL更容易被接受, 只要她实现的功能够强大, 而且比其他框架和设计模式更简单.

XPL还有一个问题, 就是它可以基于, 也非常倾向于通过freemarker来实现, 而freemarker至今还没有考虑过对模板的预编译和编译结果的二进制存储, 当然, 这对于一种面向web的模板语言来说是天经地义的事, 她根本不需要考虑这些; 但是对于XPL来说, 这意味着她会没有编译形式的能力支持软件发行方式, 这在性能上的损失其实微不足道, 因为只不过稍稍降低了一点编译速度, 对运行没有任何影响, 但是对于商业能力提供者的版权保护会是一个大问题, 如果他不得不以源代码的形式发行能力库, 那么就意味着恶意者进行反向工程的难度比反编译没有经过混淆的java类还要容易. 这对平台本身的广泛应用是非常不利的. 这个问题最终可以通过对freemarker加入预编译模板的功能来解决, 而这实际上增加了XPL方式付诸实现的成本代价.

而且考虑到最好尽快商业化的问题, XPL的进程可能还是需要再推迟一些, 如果用替身模式能先完成 比较有商业价值的产品出来, 首先运作起来以后, 就可以有更大的人力物力投入到XPL上来了, 这样会是一个比较好的商业过程. 从XPL做起的话也不是不可以, 但那需要更长的孕育期, 做起来更辛苦, 风险也更大.

分享到:
评论

相关推荐

    华为 NE05E&NE08E V300R003C10SPC500 特性描述 - XPL

    无论是对新手还是经验丰富的网络管理员,XPL 都提供了更丰富的配置选项,以实现更精细的网络管理和优化。通过理解并熟练掌握 XPL,用户可以更好地管理和维护他们的网络环境,确保网络的稳定性和安全性。

    华为 NE05E, NE08E V300R005C10SPC100 特性描述 - XPL

    XPL的主要作用是实现路由过滤和路由属性设置,通过调整路由的可达性和其他属性,进而影响网络流量的走向。这种功能与传统的路由策略类似,但设计上更加灵活,以适应不同用户的配置习惯。 XPL与传统的路由策略相比,...

    BigDataGroupProject-XPL

    【压缩包子文件的文件名称列表】"BigDataGroupProject-XPL-main"可能代表项目的主目录或源代码仓库。通常,这个文件夹中可能包含以下内容: 1. 数据文件:原始数据集或者经过预处理后的数据,可能以CSV、JSON、...

    xpl-radio:xPL无线电网关

    xpl-radio Node JS层通过xPL执行mplayer 安装 $ git clone https://github.com/wiseflat/xpl-radio.git $ npm update 用法 您需要先安装 xPL_Hub: : 发送 xpl-cmnd 获取模块的配置 $ xpl-send -m cmnd -c ...

    3dmax模型批量导出xpl2模型过程及脚本

    总之,3ds Max模型批量导出为.xpl2格式的过程涉及到MaxScript的使用,通过编写或修改脚本实现自动化,从而提高工作效率。在实际操作中,了解脚本工作原理、配置正确的导出参数以及验证导出结果是至关重要的步骤。...

    XPL:XPL-扩展编程语言(如XML)

    在压缩包文件“XPL-master”中,我们可以推测这可能是一个XPL的开源项目或者库。通常,这样的项目会包含源代码、示例、文档和测试用例等资源。源代码部分可能会展示XPL如何与XML数据进行交互,以及如何与JavaScript...

    xpl.zip_WK3_xpl_zip

    5. **面向对象编程**: PHP支持面向对象编程,所以`xpl.php`或`xpl_search.php`可能包含了类定义,用于封装数据和方法,提高代码的可复用性和组织性。 6. **错误处理和调试**: 良好的PHP代码通常会包含错误处理机制...

    max或3ds转为xpl

    ### Max或3ds文件转换为XPL流程详解 #### 一、概述 本文将详细介绍如何将3D Studio Max(简称“Max”)或3ds Max(.max或.3ds格式)的三维模型文件转换为Skyline软件支持的XPL格式。此过程涉及多个步骤,包括但不...

    xpl-alarm:Node JS层通过xPL执行mplayer

    xpl-报警 Node JS层通过xPL执行mplayer 安装 $ git clone https://github.com/wiseflat/xpl-alarm.git $ npm update 用法 您需要先安装 xPL_Hub: : 发送 xpl-cmnd 获取模块的配置 $ xpl-send -m cmnd -c alarm....

    xpl-domogeek:domogeek API 的 xPL 网关

    xpl-domogeek客观的Node JS 模块...Hub: : 发送 xpl-cmnd 获取模块的配置 $ xpl-send -m cmnd -c domogeek.request发送 xpl-cmnd 以添加/更新配置 $ xpl-send -m cmnd -c domogeek.config type=schoolholiday url=...

    xpl.rarxpl.rarxpl.rarxpl.rar

    标题中的"xpl.rarxpl.rarxpl.rarxpl.rar"似乎是一个重复的错误,这可能意味着上传时出现了问题。在正常的上下文中,"xpl.rar"通常是指一个RAR压缩文件,RAR是一种流行的压缩格式,用于打包和压缩多个文件或文件夹以...

    XPL PDP-10:PDP-10的XPL编译器-开源

    Brisbey II和RH Hey在70年代中期为PDP-10编写的XPL编译器。 该编译器已通过DECUS发行到公共领域。 此源存储库包括原始DECUS发行磁带中的所有源文件和文本文件,以及将在更现代的计算机上运行的编译器端口。 编译器...

    把X文件转换为xpl的工具

    在3D建模和动画工作中,了解并掌握各种文件格式的特性及转换方法至关重要。`.x`到`.xpl`的转换仅仅是众多数据交换过程中的一个例子,随着技术的发展,可能会出现更多新的格式和转换工具。保持对行业动态的关注,不断...

    华为(信息图) NE系列路由器特性微图 XPL

    XPL与传统的路由策略相比,主要差异在于配置方法、过滤方式和用户体验。XPL提供了段编辑和行编辑两种配置方式,前者适合熟悉传统命令行的用户,后者则简化了配置流程,尤其适合对XPL配置有深入理解的用户。在过滤...

    xpl-prowl:xPL 网关到 Prowl API

    总的来说,"xpl-prowl" 是一个将 xPL 集成到 iOS 设备通知系统的实用工具,利用 Node.js 的强大功能和灵活性。对于熟悉 JavaScript 和家庭自动化的人来说,这是一个很好的项目,可以帮助他们更紧密地连接家中的智能...

    xpl-api:Node.js的XPL层

    xpl-api客观的Node.js的XPL层安装$ npm install xpl-api用法等待XPL消息: var Xpl = require ( "xpl-api" ) ;var xpl = new Xpl ( ) ;xpl . on ( "message" , function ( message ) {console . log ( "Receive ...

    xpl-rfxtrx:rfxcom rfxtrx 的 xPL 网关

    xPL-rfxtrx 是一个基于JavaScript开发的网关软件,专为rfxcom rfxtrx设备设计,旨在实现xPL(eXtensible Protocol for Lighting)协议与rfxtrx硬件之间的通信。rfxtrx设备是一种能够接收和发送无线射频(RF)信号的...

    xpl-sysinfo:Node JS 层通过 xPL 发送系统信息

    xpl-sysinfo Node JS层通过xPL发送cpuUsage、memUsage和diskUsage 192.168.0.1:54876 [xpl-stat/sysinfo.basic: bnz-sysinfo.srv -> * srv/platform/linux] 192.168.0.1:54876 [xpl-stat/sysinfo.basic: bnz-...

    xpl-suncalc:节点JS层通过xPL API执行suncalc

    xpl-suncalc 客观的 节点JS层通过xPL API执行suncalc 安装 $ git clone https://github.com/wiseflat/xpl-suncalc.git $ npm update 用法 启动服务 root@srv:~# node index.js 通过记录器查看xPL消息 root@srv:~# ...

Global site tag (gtag.js) - Google Analytics