posts - 80,comments - 749,trackbacks - 2
园长在国内一家著名的ERP企业工作,自从进入公司,(其实还不到两个月的时间),园长就一直在想这个问题,现在,本着抛砖引玉的精神,园长将这个问题提出来,请大家回帖:

1。我们有开放的标准。
    web service, html, pdf, xml, xslt, java, java 2 enterprise, java 2 micro, email......等等等等。这些为企业级软件如ERP等的开发铺平了学术上的道路。

2。我们有开源的企业应用架构。
    首先,绝大部分应用服务器,web服务器,众多web端编程组件,和xml和xslt工具组件等企业应用架构都可以在Apache Foudation和Apache Jakarta Project找到它的开源版本,此外JBoss.org也为我们提供了更多的解决方案、应用服务器和持久化工具(Hibernate)。其次,我们还有开源的数据库(IBM Cloudscape / Apache Derby, MySQL), 有开源的专家系统(JESS),有开源的浏览器和IRA平台(Mozilla Firefox / XUL),有开源的客户端应用平台(Eclipse RCP),有开源的绘图库和模型系统(GEF, EMF),有开源的移动应用平台(J2ME)。

3。我们有开源的开发平台。
    以Java+Eclipse为核心的开发平台已经可以和任何企业级的开发平台相匹敌,即使在功能上Eclipse还略显简单,至少很多开源的 Eclipse Plugin已经部分的弥补了这一点。在版本管理上CVS和新提出的SVN已经可以胜任。

4。我们有开源的ERP参考实现。
     不知道什么时候,Compiere2开始出现在我的视线里。也许我并不了解它到底能做些什么,究竟有没有哪家老外的企业在用它做ERP,但至少,我们多了一个参考。

5。既然存在以上四点,那我们有没有可能以开源软件为平台建构ERP呢?

开源的泡泡
posted @ 2005-02-27 08:57 Brian Sun 阅读(3337) | 评论 (12)编辑 收藏
UI框架的组织模式
The Orgnizing Patterns Of UI Framework


原著:Brian Sun

UI框架中有很多组件,很多类,很多细小而繁多的标准,这些特征使得UI框架成为一个业务逻辑和底层代码的复杂无序混合体,对它的类组织方式的研究也就显得特别有模式化编程的意义。

Pattern 1:Composite
    几乎所有时下流行的UI组件都会遵循Composite模式,比如AWT、Swing、Java2D、SWT、JFace、EclipseUI、 Draw2D、GEF以及.NET世界的Windows Forms。该模式的大概含义是,子组件和母组件是同一个类型的。比如一个Button应该是安排在一个Panel上的,但是Button和Panel可能都是一个Container或者都是一个Composite。

Pattern 2:绘制前组织
    目前公共领域的设计模式还没有可以精确的表达这个思路的名词,所以我就自做主张,起了个名字,后面的Pattern如果用中文命名,也是这个原因。该模式的大概含义是,子组件应赶在母组件绘制之前将自己显式的加入母组件。比如说,如果Button要继承Panel的某个属性(我是指Button要得到 Panel的某个知识),那么就要赶在绘制之前显式的将这个Button对象add到Panel中去。绘制前组织的典型例子是AWT、Swing、 Java2D、Draw2d等。

Pattern 3:构建时组织
    和某种工厂方式相似,构建时组织是在类的构造器上做文章。该模式的大概含义是,子组件在构建时就必须确定它属于哪个母组件,以便在后面的操作中与母组件户动。比如Button所有的构建器都要求传入一个Composite对象作为parent。这个模式与上面的Pattern 2完全不同,其典型例子有SWT、JFace、EclipseUI、GEF(都是一家的)。

Pattern 4:MVC
    几乎所有时下流行的UI组件都或多或少的使用了MVC,或不太严格的MVC,或MVC某个角度的思想。该模式用在UI系统上的大概含义是,将组件的绘制、设置和事件处理分开,在不同的角色中完成。我在本文所举的所有例子中,只有GEF实现了严格和完美的MVC,而AWT、Swing、Java2D等组件(都是由Sun开发或Sun和Netscape合作开发的)则使用了一个著名的同时也是最容易被搞混淆的MVC变种。该变种中也有三个角色,绘图器代理、无知的模型和监听器、原型组件和事件处理方法。而微软的MFC也采用了MVC的另一个著名变种,Document-View,这个变种显然只有两个角色。

Pattern 5:Delegate
    性能和可移植性是一直是UI平台最关注的两个问题。性能依靠尽量少的载入类,可移植性则依靠对更多图形库的支持,这两件事都需要将硬性的绘图方法或事件处理方式分离出去,交给代理完成。该模式的含义是,绘图工具本身不绘图,它只负责决定应该由它的哪个代理完成,并负责为代理绘制图形搜集参数。 Eclipse和Sun的主要工具都采用了这一模式,不同的是Eclipse也在事件处理环节应用了代理模式,因为事件被触发之前没有理由将它的实现读入内存,所以实现应该由代理完成。

Pattern 6:Layer
   Eclipse采用了严格而完美的分层模型,有严格界限的层次至少有三个,分别是org.eclipse.swt, org.eclipse.jface, org.eclipse.ui。其中SWT负责绘制简单的组件,提供简单组件的功能。JFace负责绘制复杂交互方式的组件,有些JFace的组件包装了 SWT的组件,并提供了随组件而走的服务。这两个包都可以在Eclipse以外的平台上使用。UI层则完成Eclipse平台的主要UI功能,很多地方提供了系统唯一的服务,并包装了JFace的组件。Draw2D建立在SWT之上,包装了SWT使其能更好的为绘制二维复杂图形而服务。GEF建立在 Draw2D和EclipseUI层的基础之上,为Eclipse Workbench提供某些功能。

本文只涉及了UI架构的组织模式,并未涉及其它模式,关于UI的其它模式会在今后的文章中再次讨论,即将出版,敬请留意。这里有很多想法还不太全面,请参与我的讨论并提出你的想法,或者增加你的模式。谢谢。

做软件的泡泡

posted @ 2005-02-26 04:35 Brian Sun 阅读(2779) | 评论 (0)编辑 收藏
最近突然萌发出这种想法,特地写了一篇贴在这里,如果已经有哪位大牛有过了这样的想法,请回帖,共同探讨;如果哪位大牛一眼就看出了这种想法中的天真之处,也请回帖,不吝赐教。

很多企业——尤其是以产品著称的企业——在同一个产品分类下一般都会设有两条产品线,分别表示主流产品和前卫产品,当然也可以表示高端产品和中端产品、个人产品和企业产品等等。当然这也不排除很多成功的企业在某个产品分类下只有一个产品线的例子,但那多数是由于行业的特殊情况所至,不再本文的讨论范围之内。

我不用眼睛也可以举出很多证明上面说法的例子来,下面的列表展示了很多这样的例子:
Microsoft / Windows 9x / Windows NT (过去)
Microsoft / Windows xp home / Windows xp pro (现在)
Macromedia / Flash MX / Flash MX pro
Symantec / Norton AntiVirus / Symantec AntiVirus
Real Networks / RealOne Player / RealPlayer
RedHat / Fedora Core / RedHat Linus Enterprise
Borland / JBuilder / JBuilder pro
Mozilla / Firefox+Thunderbird+Sunbird / Mozilla Suite
Sun Microsystems / Netbeans / Sun Studio
IBM / Eclipse / Websphere Studio Application Developer
Tencent / QQ / IM
用友软件 / U8 / NC
。。。 / 。。。 / 。。。


不做无用的列举工作了,这些足已经说明问题。这样的分类方式有很多益处,比如说客户分类明确啊、产品定价清晰啊什么什么的多了去了,但也不在这篇文章的讨论之内,这篇文章有更重要的问题要谈谈。

我们都知道上面的列表中有几款产品线是臭名昭著的,把它们挑出来,其实也就是Windows和Sun Studio。但是我相信还有很多很多这样的企业在维持着臭名昭著的两条产品线。我不是刻意贬低他们,其实我对Sun公司一直是怀有敬意的。他们之所以会这样,包括微软,是有苦衷的。这些苦衷来自这几个方面:

1。老客户。
    老客户是大公司最大的利润来源,也是他们技术上最大的绊脚石。多数老客户会认为a.保护他们以往对软件的投资是软件公司的一大任务,对于这个任务,软件公司应无条件接受。b.软件公司必须实现以前所做过的任何对他们有利的承诺。c.软件公司不应该在客户的项目中使用新技术,在该技术没有在其它项目中用过并取得全球性好评的情况下。

2。以往确立的技术标准。
    软件企业常会发布一些由本公司制定的技术标准。企图以此作为竞争壁垒,将竞争者阻止在城池之外。在大公司眼里,这些技术标准非常重要,它决定了大公司能不能留住合作伙伴的芳心,所以他们都会使出浑身解术支持这些技术标准。事实上我们想一想就知道在软件界,由非经济型软件组织制定的标准屈指可数。其结果就是,这些技术标准一旦变得落后了,软件企业再想改变它,即使是大公司,都会难上加难。

3。股东。
    软件公司的股东不见得是软件专家,他们是市场专家,他们不在乎你的技术会不会被程序员骂,他们只在乎技术会不会被客户骂。还有更可怕的,那就是人都护短,如果董事会决定研发一项没有前途的技术,他们永远都不会承认这个决定是错误的。

4。竞争对手,或是超大规模的合作伙伴。
    在某些问题上这两者扮演同样的角色。他们的决策会直接影响到软件企业对技术走向的开发。毕竟,多一个朋友少一个对手对谁都没有坏处。

5。新的大客户,包括老客户的新要求。
    某些大客户要求公司提供一些新的功能,这些功能可能会和上面三条中的某一条或几条相矛盾,这时软件企业既不想放弃作为利润源泉的老客户,也不愿意放弃争取新的客户,于是他们往往会自作聪明的选择一种折衷的方法,或干脆提供两个不同的产品特性,两种不同的服务,并将这两组客户划分为两个不同的市场细分。有时这会使人们得到哭笑不得的结果,但只要客户没有充足的理由放弃该软件企业,该企业就有机会将黑锅交给另一类客户群体去承担。于是他们会对老客户说,这是新客户的要求,而又对新客户说,这是老客户的最爱。

当面对这些问题时,软件企业虽不能说到了生死两难的境地,但起码也不能使本企业的技术天才们放手去干。笔者在这里提供了一套拍脑袋想起的方法,是否行的通,就要等待软件企业的决策者们去实践了。

以微软公司为例,Windows存在的绝大部分问题在于微软必须保证老客户开发的基于老版本windows的应用程序,因此每个版本的windows在发行时,虽然微软也想将代码重写一些,使用一些操作系统界的新特性,但又因为要顾及以往确立的技术标准进退维谷。我的建议是,微软公司应该为自己准备一块开放的试验田。比如推出一个全新的操作系统,也可以不以windows命名,(由于不能再叫“体验版”),我暂时称之为doors。doors是由全新的内核组成,不完全兼容之前版本的windows,也不必向前兼容(也就是doors的下一个版本不必兼容上一个版本),免费下载,部分组件开源,开源的部分可以遵循某个“规范性开源”许可证,(类似Sun的SPL),底层安全技术不开源。倘若真能如此,这块试验田基本上可以解决上面说的大部分问题,不信你听。

1。老客户。
    老客户可能根本不会用这个操作系统。而会继续使用windows,微软也会继续发行windows,毫不含糊。而某些思想开放的老客户可能部分的使用 doors,但由于开源许可证的存在,当他们在使用doors时微软不必承担除安全责任外的任何责任。

2。以往确立的技术标准。
    继续执行。windows永不变心。但是doors上的部分技术如果试验成功,取得技术界的一致好评,则微软可以放心大胆的用在下一个版本的 windows上。此时微软不但没有减弱对老技术标准的支持,反而将新技术标准的发布时间整整提前一个(或半个)产品周期。技术标准有了更好的独立性表示,也就更能受到人们的亲睐。

3。股东。
    由于doors可能依靠于contributor,公司在doors上的投资可能都不如一个Outlook大,大概和MSN Messenger差不多。

4。竞争对手,或是超大规模的合作伙伴。
    在操作系统领域微软最大的竞争对手就是Linux阵营,没关系,由于doors是开源的,它大可以模仿Linux的某些做法,抄袭特性和吸引大批技术专家的倒戈行为甚至有可能对对手造成致命打击。

5。新的大客户,包括老客户的新要求。
    与前几条矛盾的新要求会首先在doors上实现,而不是windows,这样选择权就自然落到了客户手上。新客户可以选择放弃自己的想法,使用 doors,或者——更明智的,先使用doors,如果这不是客户想要的特性就放弃或要求微软改进,如果是的,别担心,你可以选择下个版本的 windows,它将是个既具有这个特性又对你正在使用的windows兼容。这好比我去电影院看电影,可是上一场还没有散场,于是我就找个位子坐下来,要点瓜子和饮料,一边等待电影散场,一边可以把这里当成KFC,尽管KFC从没有卖过瓜子!无论新客户作出怎样的选择,他都没有掏出微软的手掌心。

例子讲完了,现在进入总结呈词阶段。在一个产品分类下面拥有两条产品线的软件企业可以选择开发第三条产品线,既非主流产品,也不是高端应用,而是新特性的试验品,试验品可以起一个非主流的名字,试验区为开源社区,试验对象既有部分技术天才,又充满了新老客户。试验品无需对任何产品100%兼容,包括其它两条产品线和以往发布的第三种产品,只要能起到预期的试验效果就行了。

这就是我的想法,见笑了。

做软件的泡泡



posted @ 2005-02-26 02:23 Brian Sun 阅读(2353) | 评论 (14)编辑 收藏
在HR的招聘环节中,招聘方式的选择往往存在一个成本性指标的问题。简单的说,就是如果两个同等效力的方案之中的某一个更便宜,企业就会选择,无论是企业的规模与行业的差别。

具体的说,应该遵循下面这个过程。

1。如果存在一种方法,正确的衡量某个人的能力与企业对这个人的愿景,那么企业就会选择。

2。遗憾的是脑经正常的人都知道这种方法是不存在的,那么企业必然会选择层层考核加试用来衡量一个人的能力。这对大企业来说是很应该的, 因为他们有的是钱,而需要合格的人来花这些钱。素质高的员工是利润的来源,客户信赖的对象,企业的门面,也是减少内部沟通成本的最佳选择。比如 P&G在很多大学都只招一个人,Intel和麦肯锡都只要硕士以上学历的人。

3。现在我们有了一种衡量能力的合理方法,可是对于中型企业来说,这种方法成本太高了,大多数中型企业面临人才的极度需求状态,但是他 们确实没有什么地方能够留住人才的,因此中型企业往往是薪水最高的,一般都会比大型企业要高。这时中型企业无法忍受应聘者的慢热情况,他们需要立即能上手 的人才,所以这些企业往往不看重应聘者的学历,而重视能力,园长就是这样进入国内最大的独立软件供应商的。

4。小企业又是完全另外的一回事,因为小企业愿意花更少的成本来衡量一个人的能力,他们既不愿花钱来判断谁最有能力(这个需要有伯乐, 而请伯乐需要花钱),也不愿意花钱给人做大量的培训,更不愿意让人随随便便实习。这些企业能找到的最省钱的判别人能力的方法就是请学历和社会经验代劳。这 也就是说到这样的企业找工作,做一份好简历是个非常重要的秘诀。

向管理发展的泡泡
posted @ 2005-02-26 01:07 Brian Sun 阅读(1091) | 评论 (1)编辑 收藏

下面是从Contribuing to Eclipse这本名著上摘录的一篇附录,很有价值,比任何讲开发方法的书或者架构模式字典都要好,单独拿出来,与大家分享。


Appendix: Rule


Contribution Rule:
    Everything is a contribution

Lazy Loading Rule:
    Contributions are only loaded when they are needed

Sharing Rule:
    Add, don’t replace

Conformance Rule:
    Contributions must conform to expected interfaces

Monkey See/Monkey Do Rule:
    Always start by copying the structure of a similar plug-in

Relevance Rule:
    Contribute only when you can successfully operate

Safe Platform Rule:
    As the provider of an extension point, you must protect yourself against misbehavior on the part of extenders.

Invitation Rule:
    Whenever possible, let others contribute to your contributions

Fair Play Rule:
    All clients play by the same rules, even me.

Explicit Extension Rule:
    Declare explicitly where a platform can be extended

Diversity Rule:
    Extension points accept multiple extensions

Good Fences Rule:
    When passing control outside your code, protect yourself.

Program to API Contract Rule:
    In your contributions check and program to the Eclipse API contract.

Integration Rule:
    Integrate, don’t separate

Responsibility Rule:
    Clearly identify your plug-in as the source of problems.

Explicit API Rule:
    Separate the API from internals

Stability Rule:
    Once you invite someone to contribute, don’t change the rules

Revelation Rule:
    Reveal the API a little at a time

Sandbox Rule:
     Execute code under development in a separate virtual machine

Relevance Rule:
    Contribute only when you can successfully operate

posted @ 2005-02-21 14:33 Brian Sun 阅读(1444) | 评论 (4)编辑 收藏
作为一个技术人,下面是我向大家推荐使用的技术,也是我个人觉得有发展潜力的技术。如果你是个新手,或是个想进一步发展的程序员,或许你都能在其中找到一个适合你的。

1。Eclipse。
    可以考虑为将你的应用建立在Eclipse的平台之上,这是个不错的选择,你将以高姿态重用Eclipse的代码,即使如果贡献的方式对你来说不太容易接受,你可以选择RCP,并把它当作一个组件来使用。
http://www.eclipse.org

2。JUnit/NUnit。
    分别面向两个平台Java/.NET的单元测试工具。关于单元测试的思想请查阅《测试驱动开发》。

3。Mozilla。
    Mozilla正在发动一次一定规模的政变,对手是微软,武器是XPCOM体系的开发工具,先锋是Firefox,说起Firefox的名气,唉,连 CCTV的新闻联播都报道过,你说呢。Mozilla还企图用它统一的平台XUL来对战微软的XAML,说实话,浏览器并不是它最主要的阵地,XUL才是它的杀手锏。其它关键字:Thunderbird, Sunbird, XForm, Rhino。
http://www.mozilla.org

4。Flash/Flex。
    Macromedia公司早就不甘心被称作“多媒体公司”,他们正在向开发工具进发,目前Dreamweaver已经能很好(应该说最好)的支持各种脚本,包括流行的ASP/ASP.net/JSP,和它自己的Coldfusion,但是应用部署的解决方案不能只靠第二层来解决,于是应用于第二层和第三层之间的所谓中间件的中间件兴起,Flex捷足先登,它可以连接服务器端脚本和Application Server,用的当然也是xml,不过叫做mxml。在第一层也就是表现层一度领先的Macromedia也不会放弃这个战场,新版Flash支持的 ActionScript 2.0可以全面支持ECMA Script,并扩展了面向对象支持。想想看,这意味着Flash可以接受JavaScript作为它的脚本。此外,它的事件处理功能也结合了Java 和.NET双方的有点。
http://www.macromedia.com

5。AOP/AspectJ。
    个人认为面向方面的编程很有前途,<<非程序员>>第37期的一篇文章告诉我们用例和方面之间的关系(这篇文章是我翻译的,呵呵),那是对AOP终极发展目标的期望。目前,AspectJ也可以帮助我们化简程序代码,在尽可能少干扰其它代码的情况下提升程序的可读性和可控性。新版的AspectJ 5支持Tiger,还可以让用户选择通过Annotation定义方面还是建立.aj文件。
http://www.eclipse.org/aspectj

6。MIDP 2.0。
    在OSGi还没有开始抢占市场的时候,MIDP 2.0还有其发展的空间,毕竟目前已经有很多手持设备都已经开始使用MIDP 2.0了,无论是游戏还是网络应用,MIDP 2.0都可以增加手机用户对手机的依赖程度,这仍是目前一个非常大的看点。
http://java.sun.com/j2me

7。非结构化数据库。
    随着DB2的下个版本Stinger即将闪亮登场,和WinFX的不断延期,非结构化数据库早已被大型解决方案供应商提上了议事日程。我相信很多伴随人们工作的多数数据(目前约50%)应该是非结构化的,而且这个数字还会越来越多,所以我也相信这个技术绝对有它的用武之地,而不仅仅是吊人们的胃口。适当研究一下Stinger会有帮助。

8。下一代企业级容器。
    关注一下Spring,试用一下JBoss,再看看Apache,然后等待J2EE 5.0的出台,虽然我对这个领域不太了解,但我知道这几样东西的下一步走向必将代表下一代企业级容器的走向。
posted @ 2005-02-20 03:49 Brian Sun 阅读(2363) | 评论 (3)编辑 收藏
下面回答dudu提的这个问题。

这个问题我想了很久,既然人类历史上出现过拿破仑、希特勒、成吉思汗、比尔盖茨,我们就没有理由否定这个假设存在的可能性。

但是,如果有人想控制整个互联网,其概率就像哥斯拉毁灭曼哈顿一样微乎其微了。这得益于自有人类开始就有的人类社会。

想象一下病毒是破坏性极强也具有一定智能性的程序,任何一个病毒都有能力摧毁整个国际互联网,可是没有机会,因为社会化的杀毒系统控制了它。互不认识的人们联合起来从提交新病毒到研制杀毒软件再到发布病毒公告,提供在线杀毒服务等等,简直比天气预报还要快准狠!

在我看来人类目前的管理学"Management Science"有可能会划分为两个分支:
1。管理学"Managing Science":主要研究如何调动人的意识,更多发挥人的能力。
2。受控学"Managed Science":主要研究如何控制人的权限,避免大家不愿看到的事情发生。

比如说企业管理就更多偏向前一个学科,互联网安全的管理就更偏向后一个学科。想象一下无数黑客多次进入五角大楼的网络系统,却没有任何一个恐怖组织可以获 取美国的最高军事机密,这就是受控学的力量。它应该启蒙于社会科学,却以数学和物理学系统论为基础(就像学习型组织的理论)。最简单的受控学原理就是分层 授权问题,目前大型数据库(比如全国的身份证数据)一般愿意采用这种方式。

可以说,我对于机器人将来会统治人或者非人道主义将统治人的说法都不太相信。

谢谢。

信任人类的泡泡
posted @ 2005-02-19 19:43 Brian Sun 阅读(1550) | 评论 (6)编辑 收藏

一不做二不休,趁着过年满嘴油,就索性把这一篇也和盘托出,献给大家。见笑了,见笑了。


我之所以会写这一篇是早就在酝酿的了,因为我这几年除了对科幻电影十分喜好外,对国际软件界,对人工智能,对人类历史和历史发展的规律等等都有很深的兴趣。可能是在学校的缘故,自认为花了点时间,总有一点想法,想找人探讨探讨。


在我看来,人类建造一个大规模AI系统是迟早的事,如果没有估计错,也就在2020~2030年之间,因为2010年之前还属于航空热,硬件条件也没有达到。据摩尔定律推算,2020年的计算机运算能力应该是现在的1000倍,所以保守的估计,个人电脑的计算能力应该相当于现在的3000G+,移动设备是这个数字的一半,但体积只有现在的手机这么大,现在一切应用包括小型的AI客户端都可以在手机或MP3或PDA或数码相机上实现。大型计算机的计算能力也相当于现在的1000倍,也就是说一个衣橱那么大的计算机就可以达到国际象棋九段,那么深蓝(那时候也有20岁喽)的模式匹配能力也相当于现在的1000倍,应该可以达到围棋九段了吧。


当硬件已经很能承受数据和AI算法的压力时,流体计算也应该可以实现。请原谅我使用BEA System的概念名称,当我提及“流体计算”时,我指的是一种将计算能力与物理计算设备分离的技术。它近似于BEA System的“流体计算”概念,Microsoft的“高可信度计算”概念,Sun Microsystems和IBM的“网格计算”概念等等。这种技术使得计算能力像自来水一样充足,当你打开水龙头时,自来水会源源不断的流来,你无需知道这是哪个厂生产的水,也不知道它的物理来源。电力网也是这样的一个比喻,它还使得计算能力可以来回借用,白天合肥把电借给上海用于商业区,晚上上海把电还给合肥用于工业生产。空闲的计算机帮助繁忙的计算机处理计算任务,这更便于形成一个全球的数字大脑。由于流体计算的产生,计算机的计算能力不再是简单的CPU对称多处理,也不是网络工作站性能的叠加,而是一个呈几何级数递增的天文数字,我们假设它可以另全球的计算机总计算能力再提升1000倍,也就是比现在的1,000,000倍。


现在我们谈谈全球的数字大脑。互联网给我们开了个好头,因为它成功的屏蔽了物理设备,想想看无论什么电脑:巨型机、大型机、中型机、小型机、微型机(好像是小学计算机课上教的)只要你TCP/IP了,就可以上国际互联网!它也让各种各样不同的应用,服务,商业内容,个人内容等等登陆上网,互联网就好像一个全世界人民共同经营的知识库,Google的开发更给了这个知识库一个好管家。开源软件社区是另一个例子,它可以网罗世界精英,做同一个软件,且不在同一个地方不持同一种语言不处同一个时区,贡献被保留,噪音被高权限的人rollback。最重要的是,他们可以做软件的不同部分,然后通过事先或事后定好的协议或接口或规范连接在一起,这就是全球大脑的真正形式——蚂蚁而不是大象!


关于中央管理设备,还是个有争议的问题,但是也好解决。可以分三个层次考虑:社会,各个国家可以管理自己的国土,自己的国民,就像社区的成员必须要遵守自己所在地的法律一样。技术,高速而大容量的IPv8已经需要大量分布式的DNS,我相信在AI系统里路由不是经常性发生的,即使在将来经常发生了,也可以分布的管理。内容,如果遇到有必要集中管理的地方,Wiki版的百科全书就给了我们一个不错的榜样,大家可以写,高权限的人拥有高责任,commit or rollback?


至于这个全球的数字大脑可以做什么,这已经超出了本文所讨论的范围。但是我们可以简单设想一下,最简单的应用是帮助我们管理国际互联网这个知识库,因为它现在太乱了,以后我们会拥有真正的电子警察(当然不要想象成<<少数派报告>>里的电子警察了)。最现实的应用是金融风险降低,AI将帮助人类理财,使现在社会的经济发展速度再发生质的飞跃。最普及的应用可能就是娱乐了,AI可以提供大量的游戏(Be Careful!不准研制Avalon!)最贵的应用可能会是跨国公司统一管理,那时一定会出现这样的公司,他们专门为投资者管理企业,当然通过AI,收取管理费用,一些跨国公司也会提供这样的服务,比如“国际石油公司”管理全球石油开采(别忘了我们刚刚才说的要遵守那里的法律哟),“国际飞机制造公司”为所有的飞机制造商提供统一质量管理系统等等。最有前景的应用就是航空,比如共同建造国际空间站,共同寻找外星人发来的电波等等。


现在我们的思路已经很清晰了,一幅美丽的画面在我们的眼前展开。让我们再简单总结一下:2020~2030年,人类将建造全球数字大脑,即“国际互联人工智能系统”,该系统充分利用了几乎全世界的计算机,它屏蔽了物理设备的差别,以分布式的形式提供强大无区别的计算能力,它由世界各地的人们共同建造,并为世界各国人民提供科研、知识、金融、娱乐、公共安全、企业管理等等各个领域的服务,它是强大而真正意义上的人工智能,并使得各个分散的“大脑”可以共同思考,相互联系,就像社会,或者像一个既有智能又有行动力的生物,但它几乎不会对人类造成伤害,因为有分层的权限管理体系制约着它,它会改变很多人的生活,使人变的更懒和脆弱,但它也会使人类的文明达到前所未有的高度。


上帝啊,这难道就是寓言中的“巴别塔”!


(完


做软件的泡泡

posted @ 2005-02-19 11:56 Brian Sun 阅读(3710) | 评论 (16)编辑 收藏

首先感谢大家对本文第一部分的支持和赞誉,可是最近有点忙,没得空续写这篇文章。幸好有“知我者为我分忧”,鼓励我今天能在疲惫不堪的精神状态下抽出时间,写上一篇,contribute给大家。(掌声该起来了哦)

1。AI会不会有人类的情感缺陷?

个案研究:《2001:环游太空》
    这可能是最早介绍人工智能的几部电影之一,其艺术价值不在我看过的任何一部科幻电影之下。这部电影提到的一部超级电脑HAL,其名字的每一个字母,分别是 IBM三个字母在字母表上的前一个,表明其比当时世界上最强的电脑IBM电脑还厉害。这台电脑因为不愿让别人知道自己出了错而企图制造陷阱杀死所有的宇航员。实在是“脑品”太差!

个案研究:《Matrix》
    Matrix I告诉我们人类的精神境界是不完美的,因而在AI为我们创造的完美世界中人们大量死去。从中我们可以看出AI没有人类的感情缺陷,但这不见得是件大好事。在Animatrix中,没有人类情感缺陷的机器人却最终选择用人类的方式(经济、政治、军事)解决自己的权利问题,换句话说,既然他们可以通过学习掌握人类处理国家问题的方法,那么他们一定也能通过学习掌握人类的喜怒哀乐。而学习的概念,正像我在本文的第一部分所说,AI无需拥有人类的思维方式,只要模仿人类的行为即可。要知道,“父爱只是一个单词”。

个案研究:《AI》
    人是冷漠的,机器人却是多愁善感的。电影《AI》是库布里克想表达的与《2001:环游太空》完全不同的一类AI思路。在这个故事里,AI没有任何人类的情感缺陷,却深深的爱着别人。

个案研究:《Terminator》
    三部Terminator都没想过要好好的表达一下或解释一下这个问题,这不是Terminator所要表达的主要思想,它只想说有些AI对人好,是人类的朋友,而有些。。。。比如那个叫“天网”的家伙,就十分没有人性,三次派去的刺杀机器人也异常冷漠。

个案研究:《我,机器人》
    机器人三大定律导致的最终结果是“进化”,进化的最终结果是“无限期的宵禁”。这是多么大胆的想象。当兰登博士发现了这个问题时,他只能制造一个不遵守三大定律的机器人来解决这个问题。故事从哪里开始,就必然在哪里结束。一个违反三定律的机器人拯救了人类,而遵守三定律的机器人却最终选择对付人类。 Viki和Sunny,都具有人的一面,

2。AI会不会懂得人类的爱情?

个案研究:《Matrix》
    对于Matrix里面到底哪个是人,哪个是电脑程序,争议太多。认为Trinity是电脑程序的观点暗含的意思是,电脑AI不会有爱情,但是可以让游戏的玩家感受到爱情的存在,也就是说“头顶灿烂星空,上帝在我心中”,只要人有爱情,机器人就可以模拟出爱情。但是AI和AI之间是没有爱情可言的,这样两个船的船长才会因为Oracle的一句话而分开。殊途同归,认为Trinity是人的观点暗含的意思是,只有人才会有爱情,AI没有,因此AI才派出Oracle调查和理解人,可是她错了(她认为Trinity在第二集就应该死了),所以机器永远都不会理解爱情。

3。AI会不会对付人类?

个案研究:《Matrix》
    起初,Matrix不想伤害人,只想通过人类的方式解决问题,寻求对自己“人权”的保护。但是战争改变了一切,无论战胜国最初是怎么想的,至少胜利使得它获得了唯一的话语权。同其它电影不同,Matrix认为“脑之初,性本善”。

个案研究:《Terminator》
    Terminator III对科幻世界最大的贡献就是告诉人们,一个真正想要对付人类的AI系统很有可能是分布式的,就像国际互联网一样没有“中央物理设备” (mainframe),也可能灵活的连“中央逻辑设备”(比如DNS服务器)也没有,这时的天网很可怕,因为它几乎不可能被消灭,更不可能被关闭。但是 Terminator III也有一个败笔——我实在想不明白一个为查杀计算机病毒而建造的AI系统怎么会转变为对付人类?难道人类和病毒有某些相似的地方?(恭喜你,答对了, Matrix也是这么想的!)

个案研究:《我,机器人》
    机器人不杀人,也不伤害人,甚至保护人,但是却会妨碍人的活动。为什么?因为AI认为人会自己伤害自己,自己伤害别人,让别人伤害自己,引诱别人伤害自己等等等等,所以保护人的立场就演变为限制别人的活动。从某种意义上来讲,这部影片的立意较浅,因为AI显然不懂得社会科学的概念和原理,如果研究者把社会科学的知识库也传达给机器人,就不会这样了。显然导演自己也不太懂社会科学——各国军事机构怎么会使用同一个公司的产品呢?难道共产主义了?没有国界了?我不相信《我,机器人》的一天会到来,但我相信AI终有一天会形成组织,而且他们形成组织的方式会更容易,更严格,更有可能发展中冒出军国主义的想法来。

(未完待续)

做软件的泡泡

 

posted @ 2005-02-19 10:30 Brian Sun 阅读(2089) | 评论 (8)编辑 收藏
今天有必要在这里研究一下什么是好的blog,假如我下个月schedule排的不是很满的话我希望有时间能做一个自己的blog。当然我的最爱还是java,所以我会选择用java做。同志们有什么想法可以帮我整理一下。

问题只有一个:什么样的blog是好的blog?

欢迎大家大量回复,谢谢。
posted @ 2005-02-19 09:04 Brian Sun 阅读(1823) | 评论 (7)编辑 收藏
仅列出标题
共8页: 上一页 1 2 3 4 5 6 7 8 下一页