2008年9月2日星期二

谷歌信奉速度是金钱

 9月3日消息,据国外媒体报道,谷歌本周二表示,该公司希望新发布的Chrome浏览器能够改进搜索、广告和应用软件业务,而不是成为浏览器市场上的一匹黑马。
  谷歌负责产品管理的副总裁桑达皮采(Sundar Pichai)在该公司总部举行的一次新闻发布会上说,“我们发布Chrome的目标是推动Web平台的发展。我们认为浏览器应当有更大的发展,与Web保持同步。”
  谷歌联合创始人谢尔盖布林(Sergey Brin)表示,“如果互联网使用量增长迅速,我们的业务就会良性发展。”
  Chrome的目标是提高互联网浏览和Web应用软件与桌面应用软件相比的竞争力。通过Chrome及其多内核架构,谷歌希望浏览器具有可以与现代操作系统相媲美的稳定性。
  像稳定性一样,速度也是Chrome的一大特性。“时间就是金钱”这句话对谷歌已经不再适用,对谷歌来说速度才是金钱。正如谷歌联合创始人拉里佩吉(Larry Page)所说,更快的互联网浏览速度会带来更多的搜索,从而提高谷歌的业绩。佩吉表示,“我们在上网时经常需要等待显示网页内容。”
  Chrome的目标是将用户等待时间缩短到最低限度。在新闻发布会上进行的静态网页加载测试中,Chrome的平均页面渲染时间为77.28毫秒,IE浏览器的平均页面渲染时间为220.64毫秒。
  谷歌强调说,Chrome是一款开放源代码浏览器,不会对Mozilla或其它开放源代码项目构成威胁。布林说,任何浏览器的改进都对谷歌有利。
  皮采表示,“我们认为浏览器是现代应用软件平台。”(文芹)

软件体系结构的概念

一 从软件危机谈起
  软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初,"软件危机"一词在计算机界广为流传。事实上,几乎从计算机诞生的那一天起,就出现了软件危机,只不过到了1968年在原西德加密施(Garmish)召开的国际软件工程会议上才被人们普遍认识到。
1 软件危机的表现
(1)软件成本日益增长
  在计算机发展的早期,大型计算机系统主要是被设计应用于非常狭窄的军事领域。在这个时期,研制计算机的费用主要由国家财政提供,研制者很少考虑到研制代价问题。随着计算机市场化和民用化的发展,代价和成本就成为投资者考虑的最重要的问题之一。20世纪50年代,软件成本在整个计算机系统成本中所占的比例为10%-20%。但随着软件产业的发展,软件成本日益增长。相反,计算机硬件随着技术的进步、生产规模的扩大,价格却不断下降。这样一来,软件成本在计算机系统中所占的比例越来越大。到20世纪60年代中期,软件成本在计算机系统中所占的比例已经增长到50%左右。
  而且,该数字还在不断地递增,下面是一组来自美国空军计算机系统的数据:1955年,软件费用约占总费用的18%,1970年达到60%,1975年达到72%,1980年达到80%,1985年达到85%左右。
(2)开发进度难以控制
  由于软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这是与其他产品的生产不一样的。例如:工厂里要生产某种机器,在时间紧的情况下可以要工人加班或者实行"三班倒",而这些方法都不能用在软件开发上。
  在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。
  BROOK曾经提出:"在已拖延的软件项目上,增加人力只会使其更难按期完成"。事实上,软件系统的结构很复杂,各部分附加联系极大,盲目增加软件开发人员并不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理等方面的问题将更为严重。
  许多重要的大型软件开发项目,如IBM OS/360和世界范围的军事命令控制系统(WWMCCS),在耗费了大量的人力和财力之后,由于离预定目标相差甚远不得不宣布失败。
(3)软件质量差
  软件项目即使能按预定日期完成,结果却不尽人意。1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分故障是由应用程序错误造成的。程序的一些微小错误可以造成灾难性的后果,例如,有一次,在美国肯尼迪发射一枚阿脱拉斯火箭,火箭飞离地面几十英里高空开始翻转,地面控制中心被迫下令炸毁。后经检查发现是飞行计划程序里漏掉了一个连字符。就是这样一个小小的疏漏造成了这支价值1850万美元的火箭试验失败。
  在"软件作坊"里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员的"一厢情愿"而已,这是造成软件不能今人满意的重要因素。
(4)软件维护困难
  正式投入使用的软件,总是存在着一定数量的错误,在不同的运行条件下,软件就会出现故障,因此需要维护。但是,由于在软件设计和开发过程中,没有严格遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记录文档,给软件维护造成了巨大的困难。特别是在软件使用过程中,原来的开发人员可能因各种原因已经离开原来的开发组织,使得软件几乎不可维护。
  另外,软件修改是一项很"危险"的工作,对一个复杂的逻辑过程,哪怕做一项微小的改动,都可能引入潜在的错误,常常会发生"纠正一个错误带来更多新错误"的问题,从而产生副作用。
  有资料表明,工业届为维护软件支付的费用占全部硬件和软件费用的40%-75%。
2 软件危机的原因
  从软件危机的种种表现和软件作为逻辑产品的特殊性可以发现软件危机的原因:
(1)用户需求不明确
  在软件开发过程中,用户需求不明确问题主要体现在四个方面:
  ◇ 在软件开发出来之前,用户自己也不清楚软件的具体需求;
  ◇ 用户对软件需求的描述不精确,可能有遗漏、有二义性、甚至有错误;
  ◇ 在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求;
  ◇ 软件开发人员对用户需求的理解与用户本来愿望有差异。
(2)缺乏正确的理论指导
  缺乏有力的方法学和工具方面的支持。由于软件不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化,也是发生软件危机的一个重要原因。
(3)软件规模越来越大
  随着软件应用范围的增广,软件规模愈来愈大。大型软件项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。
(4)软件复杂度越来越高
  软件不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件产品的特殊性和人类智力的局限性,导致人们无力处?quot;复杂问题"。所谓"复杂问题"的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。
3 如何克服软件危机
  人们在认真地研究和分析了软件危机背后的真正原因之后,得出了"人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。"的结论,便开始探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。于是,计算机科学技术的一个新领域--软件工程诞生了。
  软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工程包括三个要素:
  (1)方法。软件工程方法为软件开发提供了"如何做"的技术,是完成软件工程项目的技术手段;
  (2)工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件支撑环境;
  (3)过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
  迄今为止,软件工程的研究与应用已经取得很大成就,它在软件开发方法、工具、管理等方面的应用大大缓解了软件危机造成的被动局面。
二 构件和软件重用
1 软件重用
  软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。通常,把这种可重用的元素称作软构件,可重用的软件元素越大,我们就说重用的粒度越大。
  使用软件重用技术可以减少软件开发活动中大量的重复性工作,这样就能提高软件生产率,降低开发成本,缩短开发周期。同时,由于软构件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软构件有助于改善软件质量。此外,大量使用软构件,软件的灵活性和标准化程度也可望得到提高。
  在这里,我们只是为了后面的行文方便,简单地介绍了软件重用技术的概念和作用。软件重用本身是一门博大精深的技术,有兴趣的读者可以进一步查阅有关资料和书籍。
2 构件
  一般认为,构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辩识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。简单地说,构件是具有一定的功能,能够独立工作或能同其它构件装配起来协调工作的程序体,构件的使用同他的开发、生产无关。从抽象程度来看,面向对象技术已达到了类级重用(代码重用),它以类为封装的单位。这样的重用粒度还太小,不足以解决异构互操作和效率更高的重用。构件将抽象的程度提到一个更高的层次,它是对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。整个构件隐藏了具体的实现,只用接口提供服务。
  近年来,构件技术发展迅速,已形成三个主要流派,分别是IBM的CORBA 、Sun的Java平台和Microsoft的COM+。 如果把软件系统看成是构件的集合,那么从构件的外部形态来看,构成一个系统的构件可分为5类:
  (1)独立而成熟的构件。独立而成熟的构件得到了实际运行环境的多次检验,该类构件隐藏了所有接口,用户只需用规定好的命令进行使用。例如,数据库管理系统和操作系统等。
  (2)有限制的构件。有限制的构件提供了接口,指出了使用的条件和前提,这种构件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象对象程序设计语言中的基础类库等。
  (3)适应性构件。适应性构件进行了包装或使用了接口技术,把不兼容性、资源冲突等进行了处理,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等。
  (4)装配的构件。装配的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(Blue Code)就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。
  (5)可修改的构件。可修改的构件可以进行版本替换。如果对原构件修改错误、增加新功能,可以利用重新"包装"或写接口来实现构件的替换。这种构件在应用系统开发中使用得比较多。
  基于构件的软件开发通常包括构件获取、构件分类和检索、构件评估、适应性修改以及将现有构件在新的语境下组装成新的系统。构件获取可以有多种不同的途径:
  (1)从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件;
  (2)通过遗产工程,将具有潜在重用价值的构件提取出来,得到可重用的构件;
  (3)从市场上购买现成的商业构件,即COTS构件;
  (4)开发新的符合要求的构件。
  一个企业或组织在进行以上决策时,必须考虑到不同方式获取构件的一次性成本和以后的维护成本,做出最优的选择。
三 软件体系结构
1 软件体系结构的兴起
  六十年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。软件危机的程度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。在此种背景下,人们认识到软件体系结构的重要性,并认为对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。
  自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识与别人交流。软件体系结构是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大、更复杂的软件系统的需要。
  事实上,软件总是有体系结构的,不存在没有体系结构的软件。体系结构(Architecture)一词在英文里就是"建筑"的意思。把软件比作一座楼房,从整体上讲,是因为它有基础、主体和装饰,即操作系统之上的基础设施软件、实现计算逻辑的主体应用程序、方便使用的用户界面程序。从细节上来看每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,也就是体系结构。结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究软件体系结构。
  我们可以作个简单的比喻,结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼,而面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。构件怎样搭配才合理?体系结构怎样构造容易?重要构件有了更改后,如何保证整栋高楼不倒?每种应用领域需要什么构件(医院、工厂、旅馆)?有哪些实用、美观、强度、造价合理的构件骨架使建造出来的建筑(即体系结构)更能满足用户的需求?如同土木工程进入到现代建筑学一样,软件也从传统的软件工程进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。
  软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。软件体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系结构评价和软件体系结构的形式化方法等。解决好软件的重用、质量和维护问题,是研究软件体系结构的根本目的。
2 软件体系结构的定义
  虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画,较为典型的定义有:
  (1)Dewayne Perry和A1ex Wo1f曾这样定义:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。
  (2)Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等。
  (3)Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。
  (4)Hayes Roth则认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。
  (5)David Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的定义:软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。
  (6)Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求。
  (7)1997年,Bass,Ctements和Kazman在《使用软件体系结构》一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,"软件外部的可见特性"是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。
  总之,软件体系结构的研究正在发展,软件体系结构的定义也必然随之完善。在以后的文章里,如果不特别指出,我们将使用软件体系结构的下列定义:
  软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。

微软亚洲领导人论坛演讲全文:最重要是教育

新浪科技讯 4月19日,微软公司董事长比尔·盖茨开始第二天的访华行程。盖茨当日上午在清华大学发表演讲,并接受清华大学颁发的名誉博士学位证书。当天下午,盖茨出席在北京中国大饭店举办的2007微软-亚洲政府领导人论坛,并做了主题演讲。
  以下为盖茨演讲实录:
  比尔?盖茨:各位下午好,我非常高兴能够来到亚洲,有这么多激动人心的事情让我看到。我们聚集在一起共同探讨政府如何发挥作用来推动信息的革命以及在国家中的发生,使这些技术能够取得更高的效率,并且有更高的透明度,能有更好的服务,特别是在教育上,这真正能够来说明我们这样一种动态的发展,对教育的承诺等,这些是关键的因素,可以让我们继续的发展下去。
  今后十年的时间里,这一技术的进步可以给我们创造更多的机会,这是革命性的,有更多的生产力和活动,比我们以前更好,以低成本的技术使得价格不断下降,并且有更多人的使用。因为我们不仅仅是键盘操作,我们可以把机器作为墨水输入,可以给别人发出去,还有一些是语音的,可以拿照相机、摄像机看清楚谁在讲话,谁在哪个地方等等。这些自然的截面,有更加小的设备装置,可以说是无处不在的,并且是一些分布阶段的技术。
  通过这些技术的进步,人们可以使用目前的计算进行远距离的远程工作,能够比以前做的更好,他们能够导航信息来发现一些趋势,比以前做的更好。他们可以实现这些设备之间从电脑端到另一端的移动。可以更好的了解销售质量比以前更好。所以说更先进的技术来说很难以置信的。但技术进步的另外一个目标,将远远超出这些,并不只是来帮助、使用这样一些技术,需要花一段时间来实现,推动着全球资本发展。
  另外一点,随着时间的推移,这样一些技术,以及信息能够带来的能力,是通过互联网实现的。每一个小孩、每一个人能够根据自己的意愿来反映出自己的能力。技术发展如此之快,这是我们所能做到的,我们有这样一些技术、这样一些理念,包括培训设施我们都可以考虑,如何支持这些事情,并且保证质量。我们还可以考虑整个问题,不仅仅是PC的成本,而是一些连接性、培训、维护等支持所有事情,进行整合。其中多数来说都是很难的,花费也高昂,也不只是PC的硬件部分,还涉及软件。
  微软现在已经有30年的历史,最初的梦想是关于给所有人提供一台计算机,这样来说,我们需要回忆到最初的想法、最初的承诺,微软能够在哪些方面做些什么。现在我们可以每人进行计算,能够改变我们对教育现状的看法,并且有机会能够以在线的方式从全球最佳的大学看到一些在线的教育,能够看到教授,尽可能以最佳的方式进行教学,能够使学生对教育充满更多的兴趣,这些在今后都可以成为标准的能力,这都是我们所想到的。我们考虑大学的教师上课,并且提供相应的材料,我们也提供了一些测试,来证明他们有这样一些技能能够实现,课堂的教学有一些可以以低成本的方式得到,可能这一部分不应该重复,而是更好地使用这一部分的能力。同样来说,这些论证,实际上以测试的技术,也可以以非常有效的方法进行提供,这又使得我们去创造这样一种环境,所以老师和学生能够互动在一起上课,今天有一种面对面的方式,但随着时间的推移,其中有一部分也可以通过互联网实现,所以有一个非常有意思的研究,某些学生来看大学的课程,去大学观看,还有其他一些人在远程地区通过设备观看,对于远程设备来说,每15分钟停一下,因为学生要探讨,相互交流的内容。他们想了解,什么才是最好的学习方式才是最佳的办法,或者课堂中有什么问题,这样的远程小组可以在任何一个地方停下来,因为他们可以存储起来,可以接着往下看。所以说教育开始发生了一些变化,能够共享最佳的实践,能够享受互联网提供丰富的功能。我们会在很多地方看到这一点,微软公司正在做的一项发布就是要帮助和推动,我们把他叫做更加广泛的计划,我们可以能够让这些软件的捐献,可以以各种各样的方式广泛的潜力能够使人们共同充分挖掘潜力,因为其中涉及到了很多的问题,每一个国家都有一些具体的做法,我们也听到了一些政府和公民非常感兴趣的,包括做一些教育、创新,以及创造一些就业机会和环境等等。
  我们有一些企业他们考虑的是什么?我们如何利用最佳的实践方法,以及目前最好的结果,能够保证我们在一个全球的范围内相互共享和分享。所以,教育对于我们未来来说是一个最重要的投资。我们已经有一些能力看到目前的影响结果,计算机已经达到了1100万的中学生,在全球来说,我们还能够培训260万的老师。信息技术的推动发展,所以技术会成为一个关键的组成部分,在教师的体验中,我们有这样一些的设备,即使是公用的设备,可以让学生亲手体验到,让教师和所有的课程相互联系起来。所以我们发布一个新的叫做学生创新套件,在三年中可以买到,政府可以提供电脑,交给学生,我们提供一整套的软件套件,包括Windows XP Starter Edition、Microsoft Office Home and Student 2007、Microsoft Math 3.0、Learning Essentials 2.0 for Microsoft Office 和 Windows Live? Mail desktop,能够装起来学习,以及所有的套件,这都是涉及到一些政府买的硬件。我们还要在任何一个系统都可以去做。我们可以看到非常好的工作来至于合作伙伴,Internet公司也做了很大的新硬件的进展,AMD也取得了一些进展,包括HP在世界上都取得了很多的进展。所以我们创新合作伙伴的创新,包括政府提供的一些服务,加在一起他可以推动我们项目的发展。
  教育这一领域发展速度令人难以置信。数字革命的变化,来看看银行业,通过一个数据手机就可以,比如说小额贷款也可以享受到一些好处,包括小额的保险、小额的储蓄,我们如何找到这样一些份额,这些都是可以通过手机来实现的,这是一个非常可靠的系统。这是在目前发展的早期阶段,即使对于发展中国家也是一样的,他可以使用信息技术能够减少我们很多服务的开销,使开销降低。这是我们真正所专注于去做的。
  考虑到今天的会议,企业中有很多的会议经常出差,面对面的进行开会。更多的是通过互联网能够共享文件,能够一起共享视频内容以及相互对话,这都是基于互联网的,没有额外的费用。所以说让我们的全球变成一个更小的地方,能够相互合作、相互工作,都是通过互联网连接能够实现到的。以及还有一些软件可以做,相当于教师的电话系统会消失,标准的PPS的设备也会消失,主要是把电话跟互联网连接就可以了,这些接口的截面可以使跟大屏幕进行连接,比如说电话会议,一些部可能的电话进来,我想某些人电话进来可以让他挑选在你的日期安排比较合适的日期打回来再见面,所有的都是可以通过互联网来实现,使人们省很多的钱,可以作为一个单独的PPS系统,在一个额外的时间能够有能力打电话给他们,这比我们的传统做法更好。
  现在的软件行业不断发展,我们也非常自豪,因为我们在衡量自己的时候,通过我们自己有什么样的创新合作伙伴,在亚洲对于我们每一个美元的业务来说,我们的每一个美元可以让他们不断发展,这是我们目前发展自己的最重要一种方式,我们可以创造这样一些机会,针对大的公司、小公司以及新的创新都是一样的。
  有一个例子我们怎么去做?我们有一些学生他有这样一些学习比赛,他们开发出新的理念和创新。我们叫做创新杯比赛,我们已经有10万个学生注册了,将来还会有更多的创新杯的竞赛,还会看到更多的注册。其中有一个项目提交比赛来说都是最基础的,比如说创造一家新的公司,能够提交这样一种比赛,非常高兴地看到这个工作项目的一部分,我们来帮他们做一些营销工作,让帮他们采取一些新的方式去做,我们可以创建更多的创建中心,使更多的开发人员到这个地方,通过这个地方使用他们自己买不起的硬件进行开发工作。在全球目前我们差不多有110个中心,承诺在今后的外汇市场上会有更多,要超过200个,更多很多地点能够针对开发人员到这个地方去与协作合作伙伴进行一块儿开发。同样还有很多的例子,比如说新加坡一家公司,他们已经走出了创新中心,他比一个小的门户机构会小一些,通过互联网的连接,时间可以推移,学生就不在需要成本了,他的装置成本比课本的成本更小一些。他们可以看笔记,可以看各种各样的视频。这远远优于基于纸张的课本更好一些。所以他们做了这样一些软件,针对这样一种平板电脑来说,已经在很多国家已经超过140多个国家进行使用,这是通过创新中心来实现的,通过创造这些技术来说已经进入各个行业,这些行业继续增长。目前缺少一些好的工程师的技能,全球也一样,有很多富裕国家参加这样的一个工程合作,这就是对于政府来说有这样一些很大的机会,其中多数国家都是在亚洲地区。也许全球都会从这样的技能来实现,我们在印度可以创造一个就业的门户,人们可以查找一些更多的技能,以及更多的技能需要得到的。以及这些工作在什么地方,能够通过很快的方式来得到合作伙伴,以及以非常出色的技术方式来使用技术给人们提供能力,当然这些技术是成功的,我们也会有很多这样的技术,会把这些方式提供过来。并且把源代码放在实验室中,这样使得人们很快启动。他们愿意这样做,我们去帮他们也可以的,这对于政府很多项目也是一样的。比如说门户项目,连接不同的部门放在一个网站上,我们也可以很快做这个项目,因为我们在很多几十个国家都这样做。所以把现有的软件,不用做任何的变化,或者说他们并不只是做变化,他们只是一个传统的项目就可以,软件互相连接放在WEB的服务器上,我们已经做过很多次这样的门户,这是直截了当的做法。但人们考虑到软件项目的时候,传统来讲他们会想到一些项目,很多的,需要成千成万的投入,需要很长的时间,通过几年的发展我们一些应用硬件已经有了,这对于项目来说少数的时间,不到18个小时的时间就能够实现。我们通过样机来看到用户的反馈情况进行改进,而不是通过复杂的销售周期开始,现在的软件更好,我们做事情可以更快,任何一个做互联网的系统,我们知道他经常可以得到用户的反馈,他们使用什么样的功能,人们在使用什么,可以给我们做一些调查,以及哪些方面他们是喜欢的,哪些他们不喜欢。以及提供等等浏览的提升,提高人们的满意度,能够享受这样的服务。
  经常有人在问我,技术革命的发生是否已经到头了,是否已经到了极限,当然答案在今后十年终也不会看到有什么奇迹会发生,我们看到的能力来说会变的越来越大、越来越好,Windows服务器的廉价机器也比大型主机的能力更大,政府的数据库,不管是每一个公民还是每一个公民存的照片,对于这样一些项目来说关键是有好的软件以及培训以及非常好的程序和截面,这是一个项目的重要一部分,也并不只是说只依赖于硬件。
  因为这里边把一个系统放在一起,他带来一些挑战,我们看到已经没有什么极限,从连接系统来说看到一些新的系统途径,已经在地球中开始出现。以及非常好的高带宽的,使用有线式的无线式的。包括还有带宽的变化,我们并不只是说一些视频,比如说教育方面所得到的情况。以及还有电影以及其他的会议,任何一种类新的视频,在五年前互联网的应用以及互联网的照片,但视频并不是一个主流的,今天已经变成主流了。现在系统的能力,以及软件工具的能力已经达到了这种程度,比如说使用工序的连接,也可以使用这样一些视频,能够使所有的系统连接的很好,有一些是非常重要的进行使用,比如说教育、培训以及其他各个方面,能够进行张贴以及娱乐性的视频,互联网都有这样一个结构,有的是在家里使用,有的是在工作当中使用,有的是在教育上使用,人们都可以来做期待,都是非常宝贵的,去到任何地方都可以看到。
  在任何地方你住在那里只要有Internet就可以看到你熟悉的表格、文件以及发电子邮件。这些工具现在已经变成标准化的工具,我们会进行更多地合作、进行更多的信息,企业业务的信息,这样内容也更加丰富。所以这些工具将会继续允许我们在客机方面的进展,包括向设计飞机的科学,还是生物科学还是在理解基因的科学,以及如何研究进行数据方面的研究在医学上取得进展,所以说Internet互联网所有的技术使得人们能够进行相互信息、实现互联,并且速度也会越来越快。就像我里边所说的中心最重要的一点是教育,以及在空间中可以做什么。我们可以看到有很多的做法,可以改变硬件,我们可以有很多的方法,去使用新的做法。我觉得这些理念,首先是要在亚洲的国家使用,因为刚才我已经提到过,这些国家有非常大的潜力,不管他们处在什么样的发展阶段,他们对于新技术、对于教育非常感兴趣,而且致力于教育。我们相信微软在这过程中能够发挥非常重要的作用。今天我们已经宣布了有学生创新的套件,这是政府的项目。还有其他项目围绕创新所做的,这些都是在我们能做的基础之上,事实上我们可以给大家提供非常好的软件,提供培训的经费,而且硬件的成本越来越低,针对我们讨论的50亿人,这些事情不会一夜间发生,我不仅仅需要通过电脑、有时候需要通过手机、电视以及通过其他的设施进行教育的传播。所以在这方面我们必须要具有创新性,也需要让这些教师自己补充信息。每一个学科都要有各种各样语言的使用。全球的公司所开发出来的使地方的公司也能做到,所有这些的根源都需要回到教育,所以说教育是一个关键的问题。
  我们是世界的公民,通过教育才可以实现自己充分的潜力,同时也要回到我们刚才所说的,现在我们读的书和以前读的书,如果想让我们预测到经济机遇,看看他们处在什么样情况下的国家,现在的情况是不断变化,到底在什么样的国家存在最好的机遇,也是取决于他们受到什么样的教育,所以世界上的每一个人,如果能够得到非常好的大学教育,可以通过互联网得到教育的话,就会得到工作。因为缺乏这方面的高级人才,所以这可以提高世界各地的工作水平,而且花了很多的时间,生活水平提高之后,教育也能够提高。这样可以更好地理解学生的需求,同时可以更好地帮助教师也做的更好。我们致力于发挥这方面的作用,同时我们对于这方面的结果也是非常激动的。所以大家可以感觉到,为什么教育是我们的业务,对于所有的事情,我们现在还是处在应用技术和推动所有的开端。谢谢!

20年来比尔·盖茨的智慧语录摘选

作为微软和不断创造成功奇迹的传奇式人物,比尔-盖茨有很多针对广泛科技领域的话题发表权威论断的机会。这其中的大部分,其正确性都已被后来的事实证明。
  以下是近20年来比尔-盖茨的一些充满智慧的名言所进行的总结,所附的照片主要来自PC World的资料中心和微软的网站。
  1983年
  “目前已经有很多主要在计算机上应用的软件开发出来。就现在的情况看,面向IBM计算机的软件在其中占据着绝对的统治地位,但我相信,这种情况是会改变的,虽然其比例降到50%以下的可能性极小。”
  “在市场上目前的确存在很多垃圾软件,我们必须要对开发师们进行培训,告诉他们如何才能开发出更好的软件产品来。”
  ——摘录于1983年比尔-盖茨与PC World的一次访谈。
  1983年/1984年
  “但是,当我和保罗-艾伦(Paul Allen)在1975年开发出第一台微机版BASIC语言时,由于高级语言要求系统需具备高速处理器和大容量内存,这使其在大型机和小型机上的应用受到了限制。”
  “计算机语言必须不断与新的情况相适应。这意味着,计算机语言和人类语言一样。我们的语言并非是一臣不变的,它们要随着新的情况不断进行调整。与此类似,由于微型计算机的规模不断扩大,计算机语言也必须随之不断发展完善自己。”
  ——摘自比尔-盖茨为《PC World年度软件回顾特刊》撰写的一篇文章。
  1986年
  “我们相信很多组织自己拥有计算机的时代很快就要到来,在这之前,有两件主要的事情需要我们做好准备,这就是设计好图形用户界面,以便能使像更大尺寸的显示器、新型芯片、激光打印机和互联网这些设备能够发挥最大的优势。大家将很快便可感受到运行在分布模式下的软件优势。”
  “从现在开始,一年以后市场上出售的所有计算机都将以286为基础,三年之后,大家将看到它们升级成386计算机。今天,如果我们将数据长期存储,目前计算机的存储性能(或程序运行它们的方便性),实在让人不敢恭维。我相信最终,能够满足公司处理工作需求的应用程序将会面世。标准软件程序和硬件将会使计算机的性能、用途得到显著的提高。那时人们将会感觉到如果没有计算机帮忙,他们的工作效率将会大幅下降。”
  “我们还没有见过那种只有10个非存储芯片(non-memory chips)的超级小型计算机(其中一个芯片的显示分辨率为1000×1000像素),或是不断更新的显示器。但是在接下来的三年里,这些都将变成现实,那时的人们如果看到现在的我们在640×200的模式下工作时,一定搞不懂我们在干什么。”
  ——摘自1986年1月比尔-盖茨与PC World进行的一次访谈。
  1987年
  比尔-盖茨与最喜欢的应用程序:“Excel。这是一款你和它接触越多,越发对其喜爱的软件。我经常使用Word,但是它不能进行分类规划,而且也不能充分发挥我的创造性。”
  同期取得的最重要成就:“帮助创建了一座MS-DOS标准的工作站,由此实现了在数千台电脑上运行同一种应用程序的梦想。当我16岁时,曾经夜以继日的开发FORTRAN编辑器,我发现那时已经有数百个在我之前写出的应用程序,我所开发的可能并不是最好的。但是由于存在很多不同的构架和操作系统,我又不得不写这些程序。所以我想能不能找到某种方法,以杜绝这些不得不做的无用功?这样不仅可以降低开发的应用程序数量,同时又能提高其质量。最终我终于达成了这个心愿,这让我非常开心。”
  ——摘自1987年与PC World的一次访谈。
  1993年
  “工作小组不断增长的现象将会激发人们对使用计算机的需求……未来微软所有的应用程序都将是工作组形式为基础的,而Windows工作组正是实现这个目标的一种方法。”
  ——摘自1993年1月PC World的一篇报道。
  1997年
  就微软花费4.25亿美元购买WebTV网络的议案,比尔-盖茨指出:“我们的目标是不仅要不断积累如何不断提高PC连接设备性能的经验,还要着眼于新一代TV产品。”
  ——摘自1997年6月9日信息电子世界(InfoWorld Electric)Bob Trott对新闻发布会的一篇报道。
  1999年
  “数码市场有广阔的发展前景,我们要不断的简化数码产品的技术含量、不断降低它们的价格,并使其更加贴进消费市场。”
  他说,关于在个人隐私上存在的问题,是可以轻易被技术发展所解决的,但是隐私保护条例与政治的关系要远远大于技术因素。盖茨还强调要对软件进行更多的测试以保证其质量。这被业界广泛认为是微软客户的福音。
  ——摘自1999年4月3日PC World编辑Tom Spring发表的比尔-盖茨在MIT实验室对于计算机技术举行的35周年庆典上的讲话。
  “计算机将成为用户存储信息和创建文档的总服务站。至于浏览网站关注世界的变化,消费者将有范围广阔的设备可供选择。
  ——摘自1999年12月28日IDG新闻服务机构Clare Haney的一篇报道。
  2000年
  “个人电视机具备录制下用户喜欢观看的电视节目的功能。”
  使用这些新的或旧的网络设备,“整个房子就如一台计算机一样。”
  ——摘自比尔-盖茨在2000年国际消费者电子大会上的致辞,由PC World的Cameron Crouch在2000年1月6日进行报道。
  “他们在不断的商讨计算机如何才能解决世界存在的所有问题。他们被自己做的事情深深的吸引了,他们还要为人类价值的前景做出全面的考虑。”
  ——摘自纽约时报的一篇关于比尔-盖茨在澳大利亚墨尔本2000年10月的讲话,PC World在2001年2月对其进行了全版引用。
  2001年
  “手写板计算机能够摆脱真正的约束,我预测在5年之内它将成为美国出售的PC中最受欢迎的机型。”
  ——摘自比尔-盖茨在计算机分销商展览会的发言(2006年由Martyn Williams在IDG新闻服务板块上引用)。
  2003年
  “我一直梦想着运行非常、非常好的计算机在某天能够来到这个世界,那时,我会使用微软开发的新产品。我再也不用给所有的开发师们发电子邮件质问他们:‘你们为什么要这样做?’”
  “如果你已经制定了一个远大的计划,那么就在你的生命中,用最大的努力去实现这个目标吧。”
  ——摘自比尔-盖茨在印度技术协会50周年庆典聚会上的讲话,由InfoWorld.com的编辑Paul Krill在2003年1月21日对其进行了报道。
  2004年
  “如果我们观察今天的计算机,其对简便易用的目标,可谓只实现了一半。”
  ——摘自比尔-盖茨与伯克利大学工程技术学院主任Richard Newton的谈话。由IDG新闻服务板块的记者Joris Evers在2004年10月1日进行了报道。
  2006年
  “我们的目标不是成为设备中心,而是要成为用户中心。”
  ——摘自比尔-盖茨在MIX 2006大会上的讲话,由IDG新闻服务板块记者Elizabeth Montalbano在2006年3月20日进行了报道。
  “我们的确已经看到,长时间以来,墨水服务写字板平台输入子系统和语音辨识输入系统已经变的和键盘一样重要,虽然相互之间不能取代,但重要性相同。”
  “事实上,我们相信在未来的某一天,所有的学生不用再背着教科书,代之使用的是连接无线网络的写字板电脑,学生们无论到哪里,都可以随身携带写字板电脑,它的亮度要高于教科书并且更具灵活性。提供的内容也更加丰富。”
  ——摘自2006年4月21日IDG新闻服务板块的记者Martyn Williams在东京大会上的一篇报道。PC World的编辑Amber Bouman为此篇报道也做出了贡献。

2008年9月1日星期一

我遇到的几个VC错误及解决方法

今天我在做系统的时候碰到两个问题:
1.parsing error :Number or identifier expected Input Line:"ON_COMMAND(ID_QMENU_ITEMS+1,OnMenu)";
2.在点击对话框Button时,出现“cannot add new member”的错误提示。
这里我给出这两个问题的解决方法:
针对问题1:
我的问题出在对话框的Afx中加了ON_COMMAND(ID_QMENU_ITEMS, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+1, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+2, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+3, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+4, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+5, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+6, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+7, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+8, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+9, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+10, OnMenu) ON_COMMAND(ID_QMENU_ITEMS+11, OnMenu)
这些代码不是系统自己生成的,所以,把以上代码移到Afx之后,问题解决
针对问题2:
问题出在*.clw文件,把该文件删除,在vc中用Ctrl+w重新建立,并Add all,问题解决。

多种VC常见的错误说明

1、fatal error C1010: unexpected end of file while looking for precompiled header directive。
寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")
2、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory
不能打开包含文件“R…….h”:没有这样的文件或目录。
3、error C2011: 'C……': 'class' type redefinition
类“C……”重定义。
4、error C2018: unknown character '0xa3'
不认识的字符'0xa3'。(一般是汉字或中文标点符号)
5、error C2057: expected constant expression
希望是常量表达式。(一般出现在switch语句的case分支中)
6、error C2065: 'IDD_MYDIALOG' : undeclared identifier
“IDD_MYDIALOG”:未声明过的标识符。
7、error C2082: redefinition of formal parameter 'bReset'
函数参数“bReset”在函数体中重定义。
8、error C2143: syntax error: missing ':' before '{'
句法错误:“{”前缺少“;”。
9、error C2146: syntax error : missing ';' before identifier 'dc'
句法错误:在“dc”前丢了“;”。
10、error C2196: case value '69' already used
值69已经用过。(一般出现在switch语句的case分支中)
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成员函数“OnTimer”没有在“CHelloView”中声明。
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
重载的函数“void reset(int)”在类“B”中找不到。
13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。
14、error C2660: 'SetTimer' : function does not take 2 parameters
“SetTimer”函数不传递2个参数。
15、warning C4035: 'f……': no return value
“f……”的return语句没有返回值。
16、warning C4553: '= =' : operator has no effect; did you intend '='?
没有效果的运算符“= =”;是否改为“=”?
17、warning C4700: local variable 'bReset' used without having been initialized
局部变量“bReset”没有初始化就使用。
18、error C4716: 'CMyApp::InitInstance' : must return a value
“CMyApp::InitInstance”函数必须返回一个值。
19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing
连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭)
20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"
连接时发现没有实现的外部符号(变量、函数等)。

VC疑难错误:warning C4819:该文件包含不能在当前代码页

中文VC8的程序员可能会常常看见这个warning:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失.这个警告没有什么坏影响,但会影响心情:) 所以还是要治理一下:哪个文件出现这个警告错误,打开它, 用VS2005的查找替换功能,打开允许正则表达式选项,选择当前窗口,查找替换 \n 为 \n , 然后,这个世界就清净了。原因: 查找的 \n 是跨平台的回车,替换的 \n 却是当前代码页的回车了。