Google App Engine 世界觀(2)--計算即服務

這也是一點思考,一家之言,歡迎拍磚。
在我們的計算世界裏面,程序員太習慣於實現功能。不斷地實現功能。
應該說,我們目前的計算機系統,還是比較初級和原始的,主要的問題,我個人的理解,是在描述上。
最理想的計算機,好像和人一樣,我們只需要說出我們想要什麼,他就會把結果做出來給我們。但這顯然不現實。
於是就出現了程序員,專門把人的語言,翻譯成計算機聽得懂的步驟,傳遞到計算機中。這也很好理解,既然計算機沒有辦法聽懂人說什麼?或者說現在的軟件技術不足以讓計算機理解人類的語言,那麼,只有安排專人來向計算機翻譯人類的需求,最終轉化成計算機可以理解的執行步驟,然後完成功能。
程序員,更加像個翻譯。
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年,會怎麼樣?
計算即服務,服務是永續的,則技術的積累會越來越高,最終,量變引起質變。
歡迎大家討論。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章