这也是一点思考,一家之言,欢迎拍砖。
在咱们的计算世界里面,程序员太习惯于实现功能。不断地实现功能。
应该说,咱们目前的计算机系统,仍是比较初级和原始的,主要的问题,我我的的理解,是在描述上。
最理想的计算机,好像和人同样,咱们只须要说出咱们想要什么,他就会把结果作出来给咱们。但这显然不现实。
因而就出现了程序员,专门把人的语言,翻译成计算机听得懂的步骤,传递到计算机中。这也很好理解,既然计算机没有办法听懂人说什么?或者说如今的软件技术不足以让计算机理解人类的语言,那么,只有安排专人来向计算机翻译人类的需求,最终转化成计算机能够理解的执行步骤,而后完成功能。
程序员,更加像个翻译。
ok,既然这样,咱们回过头来,看看这个模型是怎样的?咱们有台设备,它有必定的功能,可是比较弱智,听不懂咱们说的话,而后,人类社会就派出一群人(社会老是这样,当有一方面的需求,就安排一我的群分工去作),训练他们能同时听懂人和计算机的语言,而后,请他们把人的要求翻译成计算机的程序。就这么简单。
奇怪的是,反方向的沟通历来就没有障碍,计算机想说什么,却老是能以人能看懂的方式表现出来,文字,图片,语音,视频。。。
这里能够看出人的几个特色:
一、理解能力很强
二、通过训练,沟通能力也不错
三、很懒,能让别人作的,本身不肯意作
那么,计算机的计算能力,真实的含义是什么呢?
我之前有文章说过,计算机,就是能以恒定质量标准,持续不断提供服务的机器。
不少时候,人就是须要这个能力,因此才造出了计算机。
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年,会怎么样?
计算即服务,服务是永续的,则技术的积累会愈来愈高,最终,量变引发质变。
欢迎你们讨论。