EOS/普元:概述:中国IT业的悲哀
公司引入了普元的EOS作为公司的基础架构平台,今后的所有项目将逐步向EOS的迁移,但对EOS的研究又让我不得不说出以下话:
1、EOS确实够简单,但未免简单过了头:从语言层面看EOS
因为EOS将成为我们的开发语言,所以有必要从语言的层面认识EOS。
去除EOS的图形化外衣,我们看到EOS就是一门以XML表示的类似Basic的脚本语言,这门语言相当简单,因为其语法元素极少,如下:
过程声明 <-> 构件的创建
过程调用 <-> 构件调用
条件语句 <-> 构件图中的IF结点
循环语句 <-> 构件图中的"{" 和 "}"结点
因为语法元素少,加之图形化的编程方式,这就形成了EOS的”入门容易“的优势。
现在让我们理清思绪,仔细考察这门简单的语言,我们会发现这门语言竟是如此简单,甚至连最基本”变量声明与赋值操作“的语法元素都不具备,大家是否会觉得惊呀?这是因为EOS不需要声明变量,EOS提供了一个全局变量给所有的构件使用,这就是EOS大力吹捧的”XML数据总线“。
全局变量和局部变量都不需声明,可以直接使用,那么语言编译器是否可以提供类型检查,或者是否能提供”未用变量“的警告的呢?答案是不能,这些问题必须在运行时才能解决。
进一步沿着语言层面思考下去,我们会发现这门语言”没有类型“,注意我说的不是”弱类型“或”类型检查“。这门语言中所有变量全部都是”字符串“,系统也不能提供格式化的机制实现其宿主语言(java)类型与字符串间的转换。
有人可能会怀疑,既然这门语言这么简单,功能这么弱,那它根本就不可能在实际项目中使用,而我们从普元的宣传和他长长的客户名单列表里头看到的并不是这样的状况,这是为什么呢?其实答案还是在java,因为java是EOS的宿主语言,也就是说我们可将EOS看作类似groovy/jruby之类的扩展语言,当这些扩展语言实现不了某些功能时,我们就可以直接使用宿主语言进行开发,这就与在C语言中使用汇编类似。
好了,现在我们已经清楚EOS实际提供了两个语言层面:一个是简单但功能弱的语言层面,一个是复杂(java复杂吗?)但功能强大的语言层面。这种做法其实和groovy/jruby没什么区别。
讨论了语言,现在可以设想一下这门语言的应用,我设想的EOS应用的最佳方式是将EOS作为一个工具包,以利用EOS的图形化能力给应用提供可视化的配置能力,当然对于以工作流为核心的应用,将EOS作为流程配置的工具也是极佳的应用方式。这样的应用方式就类似于将groovy应用于项目的单元测试一样,因为这些扩展语言因为其某些不足不可以成为应用的基础(核心)语言。
然而,普元公司可不这样定位自己的产品,他们希望自己的EOS作为应用的平台或者核心语言,现在扯上SOA的大旗后,EOS甚至可以作为企业的基础架构,我想问:EOS能当此大任吗?
2、构件?
EOS宣传的”构件“是什么意思呢?其对”构件“的定义是”构之件也”,好象还是不明白吧?
让我们再次从语言层面来看这个问题,EOS中的构件就是过程,其实再简单不过,更准备地说,EOS中的构件就是一个不过参数没有返回值的过程,这样的过程其语义如何准确描述和定义呢?EOS的构件同样无法解决这一问题,那么构件的组装就和过程的嵌套没有什么两样。
甚至于EOS中的构件都算不上是”模块“,因为模块通常包括了一组功能或者说一组接口。而EOS的构件只有一个功能,因此将EOS的构件理解为”接口“也是错误的。然而EOS的产品白皮书以及EOS在市面上的宣传都有意忽略了EOS构件的本质的特征,这些只是为了忽悠的需要,说的和做的根本不是一个东西。当然我们大家都能理解,这就是国情。
3、IDE的作用?
图形化的IDE对我们应用的作用是核心的,本质性的吗?应用甚至企业的基础架构的图形化有这么重要吗?开个玩笑,也许EOS的插件本身就可以用EOS本身来实现,这样这门语言就是自洽的了。
4、EOS与IOC有关系?
EOS和IOC有关系,这个说法比较新鲜。EOS的构件本就是过程式的,何来依赖注入?难道是说EOS能自动注入一个构件所需要的嵌套构件,这就可以称为IOC了?这样说任何语言都是IOC的。
5、EOS的O-X mapping?
O-X mapping?照猫画虎也画得太不象了吧,EOS中何来对象,何来“O”?竟敢也赶这个时髦。
我理解EOS所说的O-X mapping只是将数据库中的记录取出放到其XML总线上,这就叫记录到XML的映射了,只是仔细了解过EOS的数据库操作构件的人都应该明白这个O-X mapping的含义吧。这样的名词只能拿来吓唬一下半懂不懂的经理级人物,李佳不也说这应该叫做X-R mapping吗?
6、EOS与AOP?
EOS有一个组件拦截功能,具体说就是允许为组件配置一个过滤器,以实现组件调用前的处理和组件调用后的处理,这个功能实在是太简单了,达到几乎没有实用价值的地步。这样一个功能也能扯上AOP吗?诸位自己判断吧。
说了这么多,在不断佩服EOS的攻关能力的同时,也不断地为国内的IT技术人而悲哀。在我看来,稍有技术敏感的人都应该能看到EOS作为企业技术平台的严重问题,然而现实是那么多的做了多年技术的程序员/经理/老总们,竟然都那么迷信图形化,那么讨厌代码,轻易做出将EOS做为基础架构的决策。这不是中国IT产业的悲哀吗?
参考资料:
http://www.iteye.com/topic/13888?page=1
http://canonical.iteye.com/blog/33794
http://canonical.iteye.com/blog/33795
http://www.bjug.org/20050524.html
http://www.iteye.com/topic/210475
EOS/普元:概述:中国IT业的悲哀的更多相关文章
- 从SOA到BFV【普元的一份广告文章】
人类对美好生活的追求是一切技术进步的原动力. 简便.快捷.联结……,这些移动互联的价值让它正成为最贴近消费者的力量.人和设备,设备和设备,人和服务,人和企业,企业和企业都发生了连接.诸如微信.携程.大 ...
- 中国IC业“芯”结:IC小国真能赶追韩美日么?
集成电路是关系到国民经济和社会发展的战略性.基础性和先导性产业,是培育发展战略性新兴产业.推动信息化和工业化深度融合的核心与基础.因此,我 国历来就十分重视集成电路产业的培育和发展,在这方面投入了大量 ...
- 普元OA平台介绍
Primeton Portal提供了访问企业信息资源的统一入口,是一个面向企业的内容管理.信息发布和集成展现平台,提供了单点登录.内容管理.信息发布.应用集成.个性化等功能,能够帮助企业快速搭建一个集 ...
- 第一个Jsp页面,基于普元EOS
跨界了.搞一下Jsp,实现MES系统看板一处.
- 普元eos、soa、esb
http://www.primeton.com/support/video.php http://www.primeton.com/products/bps/overview.php http://w ...
- 普元部署多个应用的方法(适用EOS6.5以上版本,且无需governor中添加应用)
在EOS下跑default项目之外的另外一个项目,比如defaultNew 步骤1 安装EOS6.5,安装路径如下:E:\program\eos: 启动EOS Eos默认的应用名称为Default 步 ...
- 【转】2013年中国IT业10大公司
转自:http://www.chinaz.com/news/2013/1217/331446.shtml?zyy 1.最得志的公司:小米 在2013年,再没有一家公司像小米这样志得意满,即便看看所有的 ...
- 普元 BPS表结构参考
BPS表结构 BPS默认采用数据库方式对业务流程的定义以及运行期的流程实例.活动.工作项等进行持久化存储.主要包括BPS流程流转相关的定义.实例.工作项.参与者相关的数据表以及和实际业务流程控制相关的 ...
- 对程序员的不尊重是中国it产业的悲哀。
电脑刚进入中国时,“程序员”三个字是一份令人尊敬的岗位,那个时候中国互联网人才奇缺.程序员的价格也就水涨船高.小的时候电视里到处播放着电脑培训学院的招生广告.一说到程序员,给我们的印象都是白领,高薪的 ...
随机推荐
- IIS 8.5 伪静态去掉index.php thinkphp 3.2.2
因为测试都是在win下开发的 win8.1企业版 II8.5 首先安装 Thinkphp 3.2.2 URL Rewrite Module 2.0 http://www.iis.net/downlo ...
- .net3.5后新增的 BeginInvoke EndInvoke 异步操作
protected void Main() { //首先定义一个方法的封装..后边的LongTimeMethod是被封装的方法.. Func<int> longTimeAction = n ...
- MongoDB设置访问权限、设置用户(转)
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...
- [CentOS]添加删除用户
摘要 在安装CentOS的时候,我们只设置了root,类似windows的超级管理员.当然我们在工作的时候,为了安全考虑,不可能对外开发root,一方面是从安全的角度,另一方面也是方便管理. 添加删除 ...
- [Asp.net mvc]jquery.form.js无刷新上传
写在前面 最近在自己的网盘项目中想用ajax.beginform的方式做无刷新的操作,提交表单什么的都可以,但针对文件上传,就是个鸡肋.在网上查找了发现很多人都遇到了这个问题,大部分都推荐使用jque ...
- _fastcall
* 1楼 __fastcall具体含义 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就 ...
- JavaScript 学习笔记 -- String.trim + format
最近仍在IE6徘徊,低版本的浏览器没有实现JavaScript 的trim() 和 format(). . 主要是这两个使用的比较多,先整理出来: 1.trim() -- 去除字符串中开始和结尾部分, ...
- Ali相关面试题
接到的电话面试,人比较随和,当时IOS有一段时间没怎么碰了,因为近期一直在用C++,QT做IM.很多回答我都扯到了C++上,所以可能没戏- -! 回想一下,大概有如下几个问题:(都是很常见的问题) 1 ...
- git学习教程
猴子都能懂的GIT入门 http://backlogtool.com/git-guide/cn/ 廖雪峰的Git教程 http://www.liaoxuefeng.com/wiki/001373951 ...
- data_quick 进度
20131118 加入xml对L8卫星波段控制: 纠正波段顺序 QVProc20131125.7z: 完成L8的增强 以后的程序会添加ZY3号解析模块 QVProc20131126.7z: 新增 粗 ...