小時看過一故事:三書生欲進京趕考,問一老僧三人前景如何,老僧端坐如山,最後緩緩伸出一指。於是三書生路上爭論不休,不明老僧指哪一人會黃榜題名,不料後來三人同時高中,高興之餘,不禁對老僧的權威起了疑心。三人衣錦返鄉後,追問老僧,老僧及端坐如山,緩緩曰:一指表示三人皆中,三人立刻暈倒。
■ ASP的程式設計思想- 寫八股文
MS在java技術的衝擊下匆忙推出ASP技術。要不是因為WinServer作業系統的霸主地位,粗陋的ASP不太可能在OO推行二十幾年、C++和JAVA如火如荼之際站穩腳步。
我們從ASP技術中幾乎可以看出程式設計技術的幾十年的演進過程。大多數人寫的第一個ASP程序,就是在HTML字元流中插入<%="Hello,Welcome to ASP World!"%>,瞬間衝動一直支撐著ASP程式設計師從輸出網頁內容到輸出網頁結構到輸出網頁腳本程式的學習過程,只要你對HTML語法結構和資料庫有一定了解,熟悉某一兩種程式設計語言,你就可以很快地撥弄出幾個網站,要是你還會點PS和FLASH,那你就簡直不得了;終於有一天有人想起C語言include "string.h"之類的東東,開始意識到重複的代碼可以定義一個函數或過程來重複調用,於是網絡上開始盛行<include file="****.asp">語句;複雜的企業計算不堪忍受ASP粗糙的八個固有組件,然又有白骨精們編寫出DLL以體現JAVA標誌性的N層結構技術,於是又出現了一個新名詞叫DLL陷阱,如果你寫出來的DLL和WIN系統現有的同名,那麼離重裝機器的日子就不遠。簡單來說,ASP就是一個以過程和物件導向的雜交體,原始、混亂,在同一個程式中,你可看到call sub,也可看到set rs=conn.execute("…"),什麼東西!
但不管怎麼折騰,ASP編程的實質,就是始終面對著組織網頁HTML字符流這個過程,儘管帶著點OO的影子,但它的目的決定了它是面對過程,在它的眼裡,花哨網頁中的文字和圖片一樣,都是字符,它的任務,就是從<html>標籤開始,不斷用response.write 語句產生<head>到<body>、<div>、<input>一直到</ html>標籤字符流,最後構成客戶端HTML網面和客戶端腳本程序,恰似八股文之破題、承題、起講……
■ WEB程序編程思想的演進- 讓人民幣來得更猛烈些吧!
讓我們來想像一下你的月薪從1,000RMB到>30,000RMB的過程。
一個靜態網頁就似WORD文檔,CSS就像是WORD文檔的範本。如果你剛好做這些事,那麼你的職位叫網面設計師,月薪1,000,這時你年少無知;
如果你開始知道如何用程式自動生成一個頁面時,此時你的程式設計思想是圍繞著某個具體網頁展開的,恰如五、六十年代的面對過程時代。那麼你的月薪將可能有2,000,叫程式設計師,這時你初出毛廬;
你做了許多重複的事,發現許多頁面需要一些公共功能,例如網站往往需要一個公共的CONN文件來創建資料庫連接物件時,程式設計師自然會將這個創建過程封裝成函數來重複調用,這時的編程思想是圍繞著公共功能展開的,正如七八十年代的結構化編程,已經開始對功能的進行抽象。風華正茂的你開始被人叫成軟體工程師了,月薪3500;
當你又發現一個網站中其實都是由公共的內容組成的,比如登錄框,它往往有固定的數據(用戶名/密碼) 、固定的外觀(使用者名稱和密碼輸入框/ 提交按鈕)、固定的動作(審核/ 登入成功/ 登入失敗),從結構化角度來看,完成登入框需要定義若干個變數和若干個函數,但我們進一步抽象,把對話框看成一個整體,它用資料來表示自己的特徵(不同使用者名稱和密碼的組合),用方法來表示自己所能處理的事件,封裝起來,也就是成為物件。可用如下結構來表示:
class 登入{使用者名稱;密碼;審核;登入成功;登入失敗;輸入介面;}
再用物件的眼光來觀察網站,那麼就會發現小到輸入框,大到頁面,都是對象,從整個網站中抽像出最基本的內容(不可再分、缺一不可)設計成對象,然後就是簡單地組合。這時的程式設計想法是面對整個網站,其實這就是八九十年代風行一時的OO思想;這時你可能已經有了名片,上面印著高級軟體工程師幾字,月薪5000RMB,不過你早上梳頭時,會發現自已的眼角已有了皺紋;
當一個企業需要把互聯網溶入到它的機體時,它必須把現有的桌面程序和WEB程序看成一個整體,兩者需要公共的組件,如這時的登入請求不僅可能是WEB程序,還可能是桌面程序,也就是說需要統一的使用授權組件來處理這類事物,那麼這時的編程思想是面對組件;這時你的頭銜已改成架構師,月薪>10000,不過鏡子裡的頭上出現若干白髮;
一切看起來已經好像很完美了,不!正如我們對月薪的追求永無止境一樣,企業所想的不僅僅是讓用戶們簡單地瀏覽它們網頁這麼簡單。他的關聯客戶又對你的系統提出新要求,如希望用他們的JAVA系統直接完成轉帳過程,可我的系統是用ASP.NET系統架構出來的!另外,你可不能讓別人輕鬆劃走2^N RMB。成千上萬家的關聯客戶讓你的程式設計思想開始面對公共服務。對方可不認識你的這對像那組件,就他而言,轉賬是一件事,只要在他的桌面程式中用他那粗短的手指輸入用戶名和密碼後,其它就是你係統的事。如果你能熟練地用WEB Service 完成這些事情,那麼恭喜你,薪水就你而言,只是一個數字而往往不具有實際意義,當然,你現在已很難用自身的魅力來吸引清純少女了,用十八歲女孩的話說,你已經是老男人了,雖然你才三十出頭。