您的位置:首页 > 移动开发

Google App Engine 世界观(2)--计算即服务

2009-09-08 17:44 260 查看
这也是一点思考,一家之言,欢迎拍砖。在我们的计算世界里面,程序员太习惯于实现功能。不断地实现功能。应该说,我们目前的计算机系统,还是比较初级和原始的,主要的问题,我个人的理解,是在描述上。最理想的计算机,好像和人一样,我们只需要说出我们想要什么,他就会把结果做出来给我们。但这显然不现实。于是就出现了程序员,专门把人的语言,翻译成计算机听得懂的步骤,传递到计算机中。这也很好理解,既然计算机没有办法听懂人说什么?或者说现在的软件技术不足以让计算机理解人类的语言,那么,只有安排专人来向计算机翻译人类的需求,最终转化成计算机可以理解的执行步骤,然后完成功能。程序员,更加像个翻译。ok,既然这样,我们回过头来,看看这个模型是怎样的?我们有台设备,它有一定的功能,但是比较弱智,听不懂我们说的话,然后,人类社会就派出一群人(社会总是这样,当有一方面的需求,就安排一个人群分工去做),训练他们能同时听懂人和计算机的语言,然后,请他们把人的要求翻译成计算机的程序。就这么简单。奇怪的是,反方向的沟通从来就没有障碍,计算机想说什么,却总是能以人能看懂的方式表现出来,文字,图片,语音,视频。。。这里可以看出人的几个特点:1、理解能力很强2、经过训练,沟通能力也不错3、很懒,能让别人做的,自己不愿意做那么,计算机的计算能力,真实的含义是什么呢?我以前有文章说过,计算机,就是能以恒定质量标准,持续不断提供服务的机器。很多时候,人就是需要这个能力,所以才造出了计算机。ok,现在来看看我们的程序,我们不断的写程序,写出一个个函数,一个个类,其实都是在写出一个个的小的计算服务,再把这些小的服务叠加起来,构建一个个大型的服务,是不是这样?一个函数调用,一个对象的初始化,构造和析构,再往上走,我们双击Windows下一个图标,我们在Linux命令行键入一个命令,这些都是请求服务的过程。现在我们是不是可以明白了,我们说的,CPU从内存某个点,开始运行一段代码的真实含义,是不是开始向外提供一段服务?那么,把这个行为抽象出来,我们假定一个服务是无处不在的,比如说,1+1=2,那么,我们采用命令行打开一个计算器来算,还是我们通过调用函数来计算,还是我们访问一个网站来计算,有什么差别吗?可见,很多计算服务,其实很多地方都有提供,但是,长期的单机程序员生涯,使我们习惯了,在本机计算,请求本机的服务,我们似乎忘了,在网络上,有很多更大,更好的计算机,可以提供类似,甚至相同的服务,服务效果可能会更好。这里顺便提到一个服务通用性问题:从我们开始编程的第一天,其实有个问题,就是程序员挥之不去的梦寐,就是如何做到一段代码,处处使用,这其实体现了程序员最原始和最纯朴的一个愿望,希望节约自己的劳动力,自己这一生,每种代码只写一次,不需要重复编写,大家的代码可以互通,彼此无需重复劳动。但是,在单机下,程序设计语言,与操作系统有太多的牵连,我们学习C语言的第一个程序,printf("Hello World! ");,其实不是一个C语言的功能,这是操作系统提供的一个控制台打印功能,所有的程序员,从第一天开始,就被带偏了,以为操作系统就是计算机,操作系统就是自己能掌握的所有资源。其实这是不对的,操作系统,仅仅是一个在某个硬件平台上,提供比较通用计算服务的一个平台,甚至平台都算不上,算是一种方法的集合。这和计算没有一点关系。试想一下,一个企业ERP系统的客户,他是否关心自己的工具是运行在哪个操作系统上的?一个MP5的客户,是否关心自己的电影是哪个CPU利用哪个操作系统在解码?客户需要的仅仅是服务,是计算服务,与平台无关,与操作系统无关。那种以某个操作系统的特性做圣旨,不会什么Door32开发,就不叫程序员的理解,是肤浅的,也是错误的,甚至,提出这句话的人,自己的程序设计水平都值得怀疑?在计算这个哲学观点上,他哪有抽象能力嘛?由此我们得知,客户,我们,要得仅仅是计算服务,这个服务,放在那里运行都可以,只要可获取,可接触,就可以,是不是本机,无所谓,是不是网络,也无所谓,是不是GAE,其实还是无所谓。计算即服务,服务本身是无属性的,最理想的服务,是最低的成本,服务最多的人群,因为效益最高。那么,一个单机运行的服务,其实能力很有限的,如果我们能把服务部署到网络上,则可以服务更多的人群。程序员销售什么?很多共享软件作者,提出销售的是产品,但是,这对不对呢?用户是不需要我们的产品的,他们需要我们产品提供的服务,如果有一天,我们同样做出一个服务,但是,我们改一下,不再销售单机的产品,而是销售公网的服务,用户只要上网,就能获得服务,那,和他购买产品,单机安装,有差别吗?这样的好处是显而易见的,软件产品的销售者,并不知道用户会使用自己的产品几次,只能简单计算一个平均成本,以此确定一个平均售价,这实际上是不公平的。有的用户可能用一辈子,有的用户可能只用一次,有的用户虽然只用一次,但是,这一次就非常重要,这些情况,售价都是不一样的,差异化市场竞争,就是要细分用户的需求,做个性化的,量身定做的服务。而部署到网络上,以网络服务存在,则完全可以按次计费,以租代买的形式,则,每个用户可以根据自己的实际情况,自行选择服务标准,并且支付价格,这样是不是更合理?举个例子,PhotoShop CS3,很贵的,我们一般都用盗版,因为正版太贵了,几千块钱,但是,又有多少人,会频繁使用?大家觉得不划算,自然不愿意买正版,但是,如果开发商以网络服务的形式提供,处理一张照片,1块钱,我们会不会考虑使用正版?至少,使用了正版,自己的精彩照片丢了,处理坏了,可以找个人理赔嘛。还有,如果有这种服务,我们还要不要花几千块钱买高性能的计算机?1块钱,上传,处理,下载全部完成,手机上都能操作,为啥还要使用PC机?其实我们买PC机的硬件,也是在买服务。PC机是个很贵的平台,如果我们所需要的所有计算服务,在网上都能以非常廉价的价格租到,我们为什么还要购买自己的计算机?现在回过头,我们再来看程序员的工作。我们很辛苦地,要学习很多知识,要学习很多技巧,其实,大学里面,90%的课程,都是在教我们,如果有一天,我们需要一个功能,但是没有人提供,我们怎么自己把它实现了,大家说是不是?但是,如果这个世界上,任何一个程序员,写的任何一个功能和代码,都能立即提供成网络服务,被所有人看到,知道,并且集成进自己的系统,那么,大家的生产力解放大不大?服务,不仅仅是计算机提供给人,也可以计算机提供给计算机的。GAE给我最大的感觉,就是给每个程序员一个把计算提供成服务的手段。现在,我们可能只是迈出了小小的一步,比起传统的PC计算平台,GAE还很简陋,但是,我们知道,从现在开始,我们做的几乎每一段代码,其实都是一次性的,以后任何系统都可以随意调用,那么,这样只增不减的积累下来,10年,20年,会怎么样?计算即服务,服务是永续的,则技术的积累会越来越高,最终,量变引起质变。欢迎大家讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: