相信很多人都聽過一個禪宗故事,說是兩個僧人趕路,趟過一條小河的時候,看到一個漂亮的少婦困于其中,向他們呼救。其中一個有心施以援手,但想到佛家的色戒,便猶豫起來,不知如何是好。可另一個和尚卻大大咧咧地沖過去,抱起少婦,趟過小河。于是前者的心里就很不舒服,一路上悶悶不語,后來實在忍不住,就問自己的同伴,既然身為佛門中人,怎能不顧清規戒律,如此輕薄。然而那位和尚卻回過頭來,淡淡地說:“我已經把她放下了,你還抱著呢?”
也許不太貼切,但是這幾天中外豪杰們圍繞Ruby和Rail爆發的口水戰,讓我不由得想起這個小故事。
前幾天著名大嘴Joel Spolsky在自己的一畝三分地里對Ruby進行了FUD性的攻擊,引發互聯網上一片口水戰,Ruby之父matz和Rails之父DHH都卷入其中。似乎是要與此相呼應,在國內技術論壇上,這幾天圍繞Ruby的爭論也突然攀登新高峰了。國外的大氣候和國內的小氣候都有共同特點,就是站在傳統技術立場上的人對于RoR的火爆看不下去了,首先站出來發難,從而引發Ruby支持者們的回擊,然后雙方廝殺在一起,連帶旁邊相干不相干的看熱鬧的、拉架的、含沙射影的、慷慨激昂的,瞬間就浩浩蕩蕩,橫無際涯了。而爭論來爭論去,無非還是Ruby的性能問題、可用性問題、前景問題,等等等等。
可能是老生常談了,但倒R派的觀點讓我想起多年前我們這些C++ fans對Java的鄙視言論。那個時候C++程序員們說,Java只能用來在頁面上用applet作一些可笑的小動畫,Java只能對對火柴棍排序,Java慢得像牛車,Java有內存泄露,Java狂耗內存,Java愚蠢的弱類型容器可以把鯨魚裝進一個筆筒,Java居然沒有指針,Java做不了系統程序設計,Java寫不了操作系統,Java解決不了我手頭的超超級復雜的巨牛無比的難題,諸如此類,不一而足。冠冕堂皇的理由可以找出一大籮筐,但大皮襖下面無非就是一個“私”字而已。骨子里的想法是,我費了好大的牛勁才混了個C++三品頂戴,你Java一鬧騰,就把我的似錦前程給攪黃了,怎能不妒火中燒,羞憤交加?
可是這些年過去了,當時我們吐那點酸水起了什么作用了嗎?Java統治了企業計算,統治了手機應用開發,統治了大學教育。不但如此,Java在開源領域里也如日中天,接Eclipse之威在桌面應用中也占了一座大山頭。一些傳統上屬于系統程序的項目,比如編譯器、語法分析器、高性能的服務器軟件等等,也大量轉用Java開發。不錯,Java還是不能用來寫F-22戰斗機的火控系統,但是這跟我們這些坐在cubic里寫民用軟件的家伙有個鬼的關系!人們對于簡單、標準化和生產率的要求不可阻遏地突破了早期對Java筑起的FUD防線。面對Java的空前絕后的成功,我們這些當年曾經對革命力量翻白眼吐舌頭的家伙,在沉默的面對現實之后,已經完成了一次觀念上的滌蕩。我們已經認識到,技術的發展趨勢是不以個人利益為轉移的,干這行就要有順應技術大潮的勇氣,要有不斷破舊立新的魄力。我覺得我已經放下了曾經有的那種盲目的固執和一廂情愿。
然而時間沒過多久,隨著Java成長和騰達起來的一代人(其實不少也就是我的同齡人),又開始重蹈覆轍。面對以Ruby為代表的新興動態語言的蓬勃發展,他們也有點坐不住了。靠革命起家的人最怕革命,當年的下里巴人翻身做主了,搖身一變成闊佬了,就開始對新的革命力量擺譜使臉色,甚至以FUD戰術加以彈壓了。與當年如出一轍,手段還是以攻為守,情緒還是慷慨激昂,筆法還是義正言辭,什么Ruby未經驗證啦,什么Ruby性能低劣啦,什么Rails可擴展性不佳啦,什么Ruby不能解決“大型的”、“復雜的”、“企業級的”、“高性能的”問題啦。最要命的是,哪怕自己90%的時間不過是在字符串處理,這些闊佬們也還是一致宣稱自己做著世界一流的、大型的、復雜的、企業級的、非Java不可、沒Java不行、沒Java就要上吊抹脖子跳樓挖坑的巨牛無比的大項目,聽著讓人心驚肉跳兼之無比崇敬。你說Java還能火幾年?我說怎么也得5年!5年?那是上升期!少說十年,后面還有平臺期。你還別不服,反正我退休之前Java說什么也別想涼下來,誰也別想威脅我的頂戴花翎。企業級啊,架構師啊,經驗啊,高手啊,我混成這樣我容易嗎我?誰冒出來我就跟誰急,我就用口水淹死他!
可惜,這些大話對于我這種記性不幸沒那么差勁的人來說,太似曾相識了,讓我一眼就看出這言論背后的“私”字來。想來也真是輪回,當年我們C++這一批人放下的東西,原來你們Java這一批人還抱著呢。不過,技術的大潮真的是后浪推前浪,往后看吧,我相信,當年C++擋不住的東西,今天Java也擋不住。大趨勢已經擺在這了,接不接受、什么時候接受,那是個人的問題,但是總體的發展是無可逆轉的。
Ruby的興起,其實只不過是一個積累了幾十年的技術趨勢的能量釋放。世界上第二個程序設計語言Lisp及其后續家族成員都是最最動態的語言。早在七十年代,伴隨著圖形界面的出現,Smalltalk就以其純粹的面向對象和純粹的動態性獲得有識之士的認可。自1986年代Perl出現以來,大量開發者就認識到,動態語言開發效率高,限制少,能夠自由的表達思想,輕松完成在傳統語言中非常困難的工作。很多人都預言動態語言遲早會成為主流。然而在整個1990年代,無論是計算機硬件條件還是軟件工程的水平,都還不夠成熟,再加上Perl自身存在一些問題,動態語言始終只是作為主流語言的一種有力的補充而存在。2000年之后,PHP大流行,在Web開發領域三分天下有其一。但是PHP本身完全是為Web而做,當擴展到其他領域時,就凸顯出先天不足的劣勢,因此地主穩坐,霸業難成。直到現在,無論是硬件條件、軟件開發的方法,還是客觀應用環境都逐漸成熟,在這個時候,Ruby借Rails框架贏得廣泛關注,當然不是偶然的現象。在TIOBE全球程序設計語言排名表中,Ruby排名一年間跳升15位,而根據O’Reilly公司對于圖書市場的統計,Ruby相關書籍的銷量在2005年增長15倍的基礎之上,今年又增長了7倍,已經超過Python和Perl。再看看是誰在關注Ruby,拋開一手把Ruby炒熱的“Pragmatic Programmer二人組”Dave Thomas和Andy Hunt不說,一大批編程老槍都在嘗試或者已經轉向Ruby,這其中的著名人物包括Robert C. Martin、Martin Fowler、Bruce Tate等。如果這些還不夠令人印象深刻的話,我們應該注意一下近期有關Ruby的一些事件。最近Sun雇用了開源項目JRuby的兩名主要開發者,讓他們可以全職開發JRuby,從而正式將Ruby語言搬上JVM。同時,微軟也在上個月的一次有關.NET語言的技術會議上邀請RubyCLR的主要開發者John Lam發表演講,外界傳言他將加入IronPython開發者Jim Hugunin所在的團隊,從而加速Ruby for .NET的開發進程。另一個致力于Rich Internet Application的軟件巨頭Adobe于幾天前剛剛發布了用以將Flex 2.0整合到Ruby on Rails中的SDK。對于那些整天盯著巨頭們臉色行事的人來說,這些消息就算不是金口玉言,至少也是明確的跡象了吧。
然而,比上面一切都更為重要的是,今天的世界已經變了,已經不是15年前C++統治一切的那個世界,也不是10年前Java中彩票的那個世界,甚至也不是5年前Visual Basic狂練葵花寶典的那個年代。互聯網改變了太多的東西,經濟形態和公司業務的形式和途徑都已經并且仍在發生迅速的、根本性的變化。開放、互聯、敏捷、整合、平等、自由、高速、專業,所有這些給我們帶來了新的經濟運行模式,也對軟件的開發提出了新的要求。Ruby,以及Ruby所代表的一類動態的、自由的程序設計語言和開發思想已經迎來了它們的時代,它們將和其他的科技一起,在下一個輪回中改變我們的工作,改變我們的生活,改變我們的觀念,直到下下個輪回將它們掃進歷史的功勞簿中為止。
所以,該放下的時候,就勇敢地放下吧。當然,如果想再跟發展大勢打一打,那就打一打,反正在技術進步的路上,保守的一方終究是要被解決的。
也許不太貼切,但是這幾天中外豪杰們圍繞Ruby和Rail爆發的口水戰,讓我不由得想起這個小故事。
前幾天著名大嘴Joel Spolsky在自己的一畝三分地里對Ruby進行了FUD性的攻擊,引發互聯網上一片口水戰,Ruby之父matz和Rails之父DHH都卷入其中。似乎是要與此相呼應,在國內技術論壇上,這幾天圍繞Ruby的爭論也突然攀登新高峰了。國外的大氣候和國內的小氣候都有共同特點,就是站在傳統技術立場上的人對于RoR的火爆看不下去了,首先站出來發難,從而引發Ruby支持者們的回擊,然后雙方廝殺在一起,連帶旁邊相干不相干的看熱鬧的、拉架的、含沙射影的、慷慨激昂的,瞬間就浩浩蕩蕩,橫無際涯了。而爭論來爭論去,無非還是Ruby的性能問題、可用性問題、前景問題,等等等等。
可能是老生常談了,但倒R派的觀點讓我想起多年前我們這些C++ fans對Java的鄙視言論。那個時候C++程序員們說,Java只能用來在頁面上用applet作一些可笑的小動畫,Java只能對對火柴棍排序,Java慢得像牛車,Java有內存泄露,Java狂耗內存,Java愚蠢的弱類型容器可以把鯨魚裝進一個筆筒,Java居然沒有指針,Java做不了系統程序設計,Java寫不了操作系統,Java解決不了我手頭的超超級復雜的巨牛無比的難題,諸如此類,不一而足。冠冕堂皇的理由可以找出一大籮筐,但大皮襖下面無非就是一個“私”字而已。骨子里的想法是,我費了好大的牛勁才混了個C++三品頂戴,你Java一鬧騰,就把我的似錦前程給攪黃了,怎能不妒火中燒,羞憤交加?
可是這些年過去了,當時我們吐那點酸水起了什么作用了嗎?Java統治了企業計算,統治了手機應用開發,統治了大學教育。不但如此,Java在開源領域里也如日中天,接Eclipse之威在桌面應用中也占了一座大山頭。一些傳統上屬于系統程序的項目,比如編譯器、語法分析器、高性能的服務器軟件等等,也大量轉用Java開發。不錯,Java還是不能用來寫F-22戰斗機的火控系統,但是這跟我們這些坐在cubic里寫民用軟件的家伙有個鬼的關系!人們對于簡單、標準化和生產率的要求不可阻遏地突破了早期對Java筑起的FUD防線。面對Java的空前絕后的成功,我們這些當年曾經對革命力量翻白眼吐舌頭的家伙,在沉默的面對現實之后,已經完成了一次觀念上的滌蕩。我們已經認識到,技術的發展趨勢是不以個人利益為轉移的,干這行就要有順應技術大潮的勇氣,要有不斷破舊立新的魄力。我覺得我已經放下了曾經有的那種盲目的固執和一廂情愿。
然而時間沒過多久,隨著Java成長和騰達起來的一代人(其實不少也就是我的同齡人),又開始重蹈覆轍。面對以Ruby為代表的新興動態語言的蓬勃發展,他們也有點坐不住了。靠革命起家的人最怕革命,當年的下里巴人翻身做主了,搖身一變成闊佬了,就開始對新的革命力量擺譜使臉色,甚至以FUD戰術加以彈壓了。與當年如出一轍,手段還是以攻為守,情緒還是慷慨激昂,筆法還是義正言辭,什么Ruby未經驗證啦,什么Ruby性能低劣啦,什么Rails可擴展性不佳啦,什么Ruby不能解決“大型的”、“復雜的”、“企業級的”、“高性能的”問題啦。最要命的是,哪怕自己90%的時間不過是在字符串處理,這些闊佬們也還是一致宣稱自己做著世界一流的、大型的、復雜的、企業級的、非Java不可、沒Java不行、沒Java就要上吊抹脖子跳樓挖坑的巨牛無比的大項目,聽著讓人心驚肉跳兼之無比崇敬。你說Java還能火幾年?我說怎么也得5年!5年?那是上升期!少說十年,后面還有平臺期。你還別不服,反正我退休之前Java說什么也別想涼下來,誰也別想威脅我的頂戴花翎。企業級啊,架構師啊,經驗啊,高手啊,我混成這樣我容易嗎我?誰冒出來我就跟誰急,我就用口水淹死他!
可惜,這些大話對于我這種記性不幸沒那么差勁的人來說,太似曾相識了,讓我一眼就看出這言論背后的“私”字來。想來也真是輪回,當年我們C++這一批人放下的東西,原來你們Java這一批人還抱著呢。不過,技術的大潮真的是后浪推前浪,往后看吧,我相信,當年C++擋不住的東西,今天Java也擋不住。大趨勢已經擺在這了,接不接受、什么時候接受,那是個人的問題,但是總體的發展是無可逆轉的。
Ruby的興起,其實只不過是一個積累了幾十年的技術趨勢的能量釋放。世界上第二個程序設計語言Lisp及其后續家族成員都是最最動態的語言。早在七十年代,伴隨著圖形界面的出現,Smalltalk就以其純粹的面向對象和純粹的動態性獲得有識之士的認可。自1986年代Perl出現以來,大量開發者就認識到,動態語言開發效率高,限制少,能夠自由的表達思想,輕松完成在傳統語言中非常困難的工作。很多人都預言動態語言遲早會成為主流。然而在整個1990年代,無論是計算機硬件條件還是軟件工程的水平,都還不夠成熟,再加上Perl自身存在一些問題,動態語言始終只是作為主流語言的一種有力的補充而存在。2000年之后,PHP大流行,在Web開發領域三分天下有其一。但是PHP本身完全是為Web而做,當擴展到其他領域時,就凸顯出先天不足的劣勢,因此地主穩坐,霸業難成。直到現在,無論是硬件條件、軟件開發的方法,還是客觀應用環境都逐漸成熟,在這個時候,Ruby借Rails框架贏得廣泛關注,當然不是偶然的現象。在TIOBE全球程序設計語言排名表中,Ruby排名一年間跳升15位,而根據O’Reilly公司對于圖書市場的統計,Ruby相關書籍的銷量在2005年增長15倍的基礎之上,今年又增長了7倍,已經超過Python和Perl。再看看是誰在關注Ruby,拋開一手把Ruby炒熱的“Pragmatic Programmer二人組”Dave Thomas和Andy Hunt不說,一大批編程老槍都在嘗試或者已經轉向Ruby,這其中的著名人物包括Robert C. Martin、Martin Fowler、Bruce Tate等。如果這些還不夠令人印象深刻的話,我們應該注意一下近期有關Ruby的一些事件。最近Sun雇用了開源項目JRuby的兩名主要開發者,讓他們可以全職開發JRuby,從而正式將Ruby語言搬上JVM。同時,微軟也在上個月的一次有關.NET語言的技術會議上邀請RubyCLR的主要開發者John Lam發表演講,外界傳言他將加入IronPython開發者Jim Hugunin所在的團隊,從而加速Ruby for .NET的開發進程。另一個致力于Rich Internet Application的軟件巨頭Adobe于幾天前剛剛發布了用以將Flex 2.0整合到Ruby on Rails中的SDK。對于那些整天盯著巨頭們臉色行事的人來說,這些消息就算不是金口玉言,至少也是明確的跡象了吧。
然而,比上面一切都更為重要的是,今天的世界已經變了,已經不是15年前C++統治一切的那個世界,也不是10年前Java中彩票的那個世界,甚至也不是5年前Visual Basic狂練葵花寶典的那個年代。互聯網改變了太多的東西,經濟形態和公司業務的形式和途徑都已經并且仍在發生迅速的、根本性的變化。開放、互聯、敏捷、整合、平等、自由、高速、專業,所有這些給我們帶來了新的經濟運行模式,也對軟件的開發提出了新的要求。Ruby,以及Ruby所代表的一類動態的、自由的程序設計語言和開發思想已經迎來了它們的時代,它們將和其他的科技一起,在下一個輪回中改變我們的工作,改變我們的生活,改變我們的觀念,直到下下個輪回將它們掃進歷史的功勞簿中為止。
所以,該放下的時候,就勇敢地放下吧。當然,如果想再跟發展大勢打一打,那就打一打,反正在技術進步的路上,保守的一方終究是要被解決的。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1281151