CSDN博客

img nixe

欢迎加入 NIXE 小组

发表于2001/9/4 16:58:00  438人阅读

欢迎加入 NIXE 小组
该小组旨在为大家提供交流与学习的机会,特别是针对基础性的,倾向算法和工程计算以及软件体系结构方面的知识。
该小组完全是非商业性的,本着开放,自由的原则公开所有的工作成果,并欢迎大家使用,参考。
小组没有核心,成员不必履行任何形式上的手续,没有特殊的义务,唯一的要求是不准以小组的名义谋取商业利益,不得从事有损小组形象的活动。

--孟欣 2001,9,1。
--陆悦 2001,9,1。

目前,小组成员有两人,都是刚毕业的大学生,在校期间曾共同开发过一些项目。
下面是将要公开的一个:

Mathaider 是针对矩阵的并发解释程序,该软件为仿真,数据可视化,复杂算法实现
提供了高效的平台。并且由于其灵活的扩展机制可以在非常广的范围内满足用户的需求。
我在CSDN发布该软件并公开全部源码,出于下面目的:

1.大家可以通过阅读源码了解解释器的实现,软件体系结构规划,计算机图形学,Win32 平台的基础知识以及很多算法方面的技巧。

2.在中国实践 linux 的自由开发方式。

3.如果有可能,将她做成好用的软件(当然还是free的)。

4.结交朋友。

5.在中国实践分布式运算服务。(知道美国的‘探索地外文明’计划吗?他们拥有世界上最大的超级计算机---上千万台联合工作的PC)

顺便说一下如果您以最终用户的角度看她,会令您失望的,她现在没有什么插件支持,
几乎什么都做不了,仅仅会一些标准编程语言会做的。(像星际神族的航母但是没小飞机)

下面是简介

历史开发
最早的想法是1999年产生的,当时编写了一些针对实验课程的辅助软件,恰逢当时正在选修Matlab,它的设计思想给予了我很大的启发,于是决定将通用的算法独立出来作成一个解释器核心,以便供给其它程序使用,但不久问题就暴露出来了。当别人想添加其它功能时,必须理解源代码,然后在其上改动编译,这样一来不便于使用,二来产生了许多互不兼容的版本,难以作到代码复用,为此重新设计了架构,采用类似COM的接口机制将应用程序-解释器-插件完全分开,将扩展组件功能的任务交给使用者来实现,这就是MACORE的雏形(Matrix Array CORE)从那时到2000年底该组件一直在同学之间自由使用,同时也根据他们的意见作了许多改进。从MACORE12升级到了15,但同时我也深感再继续升级维护他己超越个人能力的范围。所以将其封装在一个用户界面内作成应用软件的样子和大家见面。希望大家多多帮助将它作好。成为好用实用的自由软件。这就是你现在所见到的MATHAIDER15.3。
性能与特点
A高效率:
 像MATLAB一样MATHAIDER内部数据是以矩阵或数组的形式组织的,所有运算都 是成批的处理,这样就尽可能的减少了解释器扫描语句的次数,并为一些算法的并行化提供了可能,举个例子,在求定积分时可以先作一个等差数组,再对该数组解释运算,然后取它的平均值即可,这样作一个中等复杂程度(6次函数调用)中等精度(1000个结点)求积分时,时间代价比常规算法小将近一个数量级(时间代价分析用的是程序员大本营提供的一个高精度计时器程序)而且这种计算方式可以使程序所访问的指令和代码局部化(因为每一次都是在用相同的一段指令访问相邻地址上的数据)尽可能的减少页面失效的几率。对于具有大容量缓存的系统,它们可能都会被系统优化到缓存中。此外还使得MATHAIDER有利用现代CPU单指令多数据流指令集的潜力,可以在一定程序上实现真正的并发计算。
 为了高效的实现上面的方案,内部数据类采用了影子拷贝(即带有引用计数的浅层拷贝像-bstr-t那样)避免了大块数据在内存中的频繁分配释放和赋值。从而减少了变量在穿越函数调用栈和返回时的时间。
 运算代码执行单独的线程,使用独立的堆空间,与外界的交互一律采用非阻塞方式进行,避免UI操作的影响,当计算线程终止时将消毁它所使用的堆,从而减少了对插件编写者组件维护内存的要求,他们可以调用接口函出创建许多变量而不必释放他们(就像JAVA那样)。
B 标准化:
 MATHAIDER提供了标准结构化程序设计语言的最小集,支持顺序,循环和判断流控制,支持自定义函数,采用类似MATLAB的语句,支持标准数学函数和常用算法,MATHIDER所有输出文件格式都采用标准文件,如文档用HTML、TXT、3D用VRML,2D用BMP用户不必进行特殊处理即可使用。(实际上插件的编写者有权决定所采用的文件格式,但我希望他能尽可能采用通用的标准)。
C 可扩展:
 MATHAIDER鼓励用户在遵循统一标准的前提下实现自己的优化算法,甚至在必要时不加载内嵌组件,而采用第三方的插件库,如果用户觉得自己的插件非常好,可以以有偿或无偿的形式提供给使用者。为此MATHAIDER在UI级提供了向导插件和可配置帮助系统,简化您发布插件的过程,并使之无缝的集成进MATHAIDER,此外,MATHAIDER支持角本函数,用户同样可以定制发布他们。

D 环保简洁:
 MATHAIDER使用简单,单独EXE即可运行,不依赖MFCDLL,不依赖COM,不依赖Activex运行时不影响注册表,不对系统造成附加干扰,删除时直接删除EXE即可,目前该软件为 1.05M估计在增加到较为实用的程序时压缩后也不会大于1.44M。
E 自由公开:
 目前MATHAIDER将插件和向导的源代码嵌入在资源中如果您有兴趣可以将它导出适当修改后重新编译。另外本人将很快公开UI的源代码,不久后公开MACORE的开发文档,随后逐一公开源文件和相应的文档说明。
致朋友们
 这两年来我一直在做MACORE因为他的存在确实解决了一些问题,对现在的MATHAIDER,我想把他做成一个轻量级的数值分析计算软件,但这必须依靠大家的力量,如果实现初步的实用化大概需要将《C语言常用算法》中近百个函数写到插件中,还要一一检验,写相关的帮助文档,对一些特殊的算法还需要考虑并发优化措施。并且后期还有许多图形,3D和各类向导要作。工作量实在太大了,此外现在存在一些问题我无法解决,如插件的安全控制机制(总不能让恶意的插件编写者破坏系统安全吧),以及针对INTEL和AMD特殊指令集的优化等等。这都需要大家帮助指导。
公开文档和源代码还有另一个原因,我希望通过这种方式多结识一些朋友,如果可能的话可以通过共同开发提高水平,现在市面上介绍编程的书太多了,但好像没有几本去讲怎样设计软件的体系结构,怎样划分功能模块以及如何组织互联网小组开发的,老实说我也不太清楚,MATHAIDER是头一次尝试,我不太确定它的结构设计是否合理,以及这种开发模式是否会成功,所以拿出来与大家讨论。最终MATHAIDER走的路线会是众多提议中最科学、最合理的,这个软件会成为集体智慧的结晶而非个人英雄主义的产物。
目前MATHAIDER还处在测试期,肯定还有bug和设计上不合理的地方,我希望大家能够坦率的提出来,如果有什么更好的意见也请尽快的告知我。
如果MATHAIDER将来能够比较成功的话,软件本身将仍然是自由开放。但插件编写者有权与插件使用者就服务费用达成协议,即采取P to P的策略,MATHAIDER可能会在用户许可的情况下成为分布式计算服务的一个结点,当然上述想法仅代表个人意见,不代表MATHAIDER的未来走向。

FAQS
FAQ1 什么是MACORE,MATHATDER,MA:
 简单地讲,MACORE是高性能的并发解释计算组件,并在相当大的程度上实现灵活配置和开放性。MATHATDER是MACORE在桌面应用程序上的实现。MA是它们的统称。
FAQ2 MACORE和MATHATDER的市场定位是什么?
 MACORE旨在为CAD,CAI,仿真,图形处理软件提供高性能,可定制的运算组件,或者成为集群运算服务的叶结点。
 MATHATDER定位于轻量级的数值分析计算软件,一方面免费提供软件和源码供用户使用,学习,一方面作为将用户PC作为集群运算服务叶结点的回报。
FAQ3 DCOM和COBRA不好吗?
 作为统一的分布体系结构DCOM,COBRA确定很好,但它们存在如下缺点:标准过于复杂,有许多并不需要的东西,目前尚不具备适应性强和配置方便的特点,相比之下TCP/IP或UDP协议+开放的更高层协议更具有实用性和通用性。
 顺便说一下,MA设计过程中采用了许多成功软件设计思想如MATLAB,JAVA和 COM体系,但却没有采用它们本身,这主要出于软件效率,独立性,开放性和简洁性的考虑。
FAQ4 MA体系的灵活性表现何在
 对MACORE而言,该组件内部结构严格以接口-实现划分,每个接口可以有许多种实现,达到只定义架构,不干涉实现的目标,举个例子来说,假定将MACORE用于网络运算目的,或数据库数据处理,那么只要将IO接口重新实现即可使数据通过网络传输或操纵数据库。如果想实现面向对象的似类于C++的语法,只要重新实现GRAMMA接口就可以了。该组件对外采用了定宽的数据包通信,而非直接函数调用,从而使增删控制命令相当的简单而且没有兼容性问题(像Windows中的Message包那样)。对于MATHAIDER灵活性主要体现在用户有相当大的定制软件行为的能力。
FAQ5 MA的开发历史
 1999.12 解释核,并行数据封装          (MACORE 11)
 2000.3   开放插件接口              (MACORE 12)
 2000.5   实现DLL和Socket封装,提交第一批用户使用
 2000.9 用标准消息包取代函数调用,简化DLL版的接口
 2000.11 独立运算线程和独立堆栈       (MACORE14,MATHAIDER14)
 2001.3  实现结构化程序设计语言的最小集         (MACORE 15)
 2001.7    实现较好的shell并将标准MACORE静态联编产生MATHAIDER 15.3
FAQ7  为什么在中国自由软件开发模式没有产生成功的软件?
(1)自由软件特别需要广泛的用户群来支持,linux平台在中国一般用户中的占有率低,不是自由软件开发模式的恰当选择。(谁说过win32平台下软件开发模式必须是商业开发模式?)
(2)自由软件特别应注意他所提供服务所带来的收益,所以大中型通用性软件是较好的选择。
(3)自由软件特别应注意网络---服务---软件三者的结合,网络作为软件开发、推广、维护的途径,软件应成为网站与客户交换服务的媒介。
(4)自由软件开发模式应特别注意利益的合理分配。
(5)自由软件开发组内部在尊重创造性的前提下应有良好的开发组织规范。
FAQ8  自由软件开发模式与商业开发模式比较有那些优缺点
优势:智力资源冗余;由于网络能组织起可观的开发组成员,且由于源文件和开发文档的公开性,潜在的开发成员更多,这可以保障在某些成员应故退出的情况下小组仍能正常运转。
决策民主;小组成员间是平等的,软件体系结构设计、发展计划等由成员间讨论产生。这样可以保障决策的科学性与合理性以及小组内部的团结。
风险分散,由于小组成员共同为软件项目的失败负有责任,没有某些成员会因此而负出更多代价。
按劳分配,由于小组成员的工作是透明的,其工作成果由小组审核,所以能保障收益分配的公正性。
资源利用率高,小组不为软件以外的项目支付开支,没有常规的支出。
劣势:(1)资金缺乏;
(2)组织随意性大,内部规范不严格,较难协调工作;
(3)不适合完成紧密藕合的项目。
FAQ9 将来用户如何发布组件
两种方式:P-P:供应者与使用者直接联系交易。
     P-S-P:供应者向MA所在网站提供源程序,经审核确定安全后,网站负责注册公布并提供下载和验证服务。用户使用该组件时从网站下载,如果必要的话支付相应的费用,加载该组件时该组件将发送信息到网站验证无误后即可使用。网站根据相应的使用记录向提供者付费。
FAQ10 通用分布计算今后有市场吗?
 我不确定,但至少有几个有利的因素:
(1)PC的功能越来越强。
(2)宽带网的逐渐普及。
   (3)网络经济泡沫破灭后,需要重新定位于用户为本,服务第一的经营理念上。
(4)国外有很多成功的先例。
FAQ11 加入 NIXE 小组的特殊要求吗?
 首先说一下不要求什么:
  年龄,性别,居住地(但北京会有较多直接交流的机会),职业,学历,工作经验。
 下面是基本要求:
较好的数学基础,理解组件化编程的思想,诚实,创造性和热情。
  如果您对以下工作特别有兴趣那么更好:
  常规和并行数值方法;X86汇编和intel/AMD扩展及基本算法的汇编实现;计算机图形学;计算仿真;网络通讯与安全;编译(解释)器设计与优化。
FAQ12 为什么MATHAIDER15慢于MATHAIDER14
(1). 15版采用的是标准MACORE即数据传递是通过字节流打包的,而且为UI显示方便采用了ANSII打包而非二进制打包。而14版采用的是MACORE的一部分利用指针在进程内传值。
(2). 15版增加了对UI通知的指令集,由原来的结束运算时回写改为每步回写。
(3). 15版增加了对基本编程语法的支持。
(目前QuickView插件的引入改善了着一局面)
FAQ13 MA的开发工具与要求
目前MA是用VC++6.0开发的,但除了最基本的框架,其它部分都可以采用加载库→得到入口函数地址→创建接口→利用接口工作→释放接口的方式。所以能够接纳任何支持指针和DLL的编译器作的组件。(但上述想法没有实验过)。

孟 欣
2001年8月25日
Email: nixe@263.net

您也可以同 陆悦 联系 Email: asp6.0@263.net


其它问题:

首先声明:以下文字与 MA 和 NIXE 小组无关,纯系个人看法 -- 孟欣。

 面对用户,企业有两种态度,“满足需求” 和“创造需求”,唯其后者才是行业发展的动力。否则IT是不会发展到今天的地步的。
但遗憾的是在中国这样的企业太少了,以前我曾想了很久但始终没有答案,后来有机会接触到一些软件企业的负责人,他们才告诉我原因。
某有一定影响力的教育软件公司的负责人,曾对我说过这样一段话:

……
 现在我们的产品确实只能叫做电子出版物,距离真正的教育软件还有距离,你建议的那样很好,但是现在的市场,还是有
空间的,即使你新开出来一块,很快别人也会挤进来,最后还是差不多的份额,而且开辟新市场是要花很大代价的

……
总之
1:开辟新的市场是要冒风险的。
2:如果市场被开辟出来,没有恰当的方法保证能从中得到公正分配的利润。
在中国,软件企业规模较小,本来就没有太多的力量去“创造需求”,即使“创造需求”成功了,也无法取得相对垄断的地位,难以回收
“创新成本”
那么中国是否会出现第二类企业(我不仅指软件企业)?
 CMM 认证的出现标志着软件行业的规范化和工业化,但重要的是我们以什么样的身份加入其中,我有一个同学,在一家很有名的IT
企业上班,据它描述,他工作是为国外做外包就是充当更智能化的编译器而已。也许有人认为印度这样做,发了财,就学着来,但他们成功的经验是上个世纪末的,怎么保证它适用于中国未来一二十年的情况?如果一个软件企业不尊重员工的创造性,像做鞋子那样生产软件,是非常危险的,当技术的进步使对 coder 需求大为减少或根本消失,这样的企业很快也会消亡。目前的计算机教育要么太偏重基础,要么太功利
,就是缺乏培养学生利用学到的知识分析问题解决问题的能力,以及如何协同工作的,但恰恰这点是最重要的。否则更危险。
 
 一百年前,中国在世界博览会上展出的就是鞋子,今年中国入世了,但愿若干年后类似的事情不再发生。
 
 

 

 

 

 

 

 

 

 

 

 

0 0

相关博文

我的热门文章

img
取 消
img