<address id="thnfp"></address>

    <address id="thnfp"><th id="thnfp"><progress id="thnfp"></progress></th></address>
    <listing id="thnfp"><nobr id="thnfp"><meter id="thnfp"></meter></nobr></listing>
    dvbbs
    收藏本頁
    聯系我們
    論壇幫助
    dvbbs

    >> 電腦專業知識交流
    搜一搜更多此類問題 
    安易免費財務軟件交流論壇專業知識交流電腦知識交流 → PHP將死,何以為繼?

    您是本帖的第 782 個閱讀者
    樹形 打印
    標題:
    PHP將死,何以為繼?
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    樓主
      點擊這里發送電子郵件給炙天

    發貼心情
    PHP將死,何以為繼?

    毫無疑問,在目前的腳本語言中,PHP、Ruby以及Python是開發者最受歡迎的三種語言,特別是PHP,其在Web開發領域的應用最為廣泛。然而歷史證明,PHP總有落幕的一天。

    歷史在重演

    PHP將亡?就像大概十年之前,PHP滅掉了Perl一樣。當然了,并不十分徹底;它還堅守在某些環境里,它還有相當可觀數量的頑固粉絲,遺留下來的應用程序也需要維護,持續幾十年。但這種語言對于新一代的人,特別是Web開發者,它在1999年就開始滅亡了,到2005年左右幾乎完全死了。

    圖片點擊可在新窗口打開查看

    作為在那個時期出現的新的Web開發者,事情顯的很明白而且水到渠成:Perl已經不適應新的應用開發環境了。在Perl里,頁面需要冗長的公式化的CGI方式實現,而這些在PHP里卻可以用基本的、缺省的編程方式實現。Perl語言里到處都是舊時代的特征 — 引用,不方便的數據結構,還有其他許多的小的古怪語法語義 —— 這使得Web開發冗長,不穩定,不方便。無怪乎沒有一個出色的Web應用是用Perl寫成的,而用PHP你卻能做的又快又簡單,盡管PHP存在著在當時就顯而易見的缺陷。

    在1999年支持Perl反對PHP的爭論有很多:Perl要快的多,有更多的程序庫和驅動支持,CPAN是個神奇的地方,里面預先寫好的代碼能讓你絕大部分任務省去80%的工作量,F在看起來這些就有點可笑了,但“PHP缺乏可擴展性”卻是個真正的缺點。但總之PHP贏了,因為上面所說的這些問題并不是這種語言固有的。PHP解釋器可以變得更快,程序庫可以被開發出來,PERA和PECL目前已經變得相當龐大,這還不包括各種廠商希望人們去使用他們的API而提供的非正式的程序庫。

    時間在推移

    十年之后,我可以感覺到歷史大潮正在重演。開發人員對語言的期望在前進。如果說Perl最缺乏的是PHP里令人驚訝的靈活的“關聯數組”(也就是智能哈希表),那么PHP現在缺乏的就是lambdas和方法鏈(method chaining)了。同時PHP往往是用在只要20行代碼就能寫出一個網頁的地方,而如今卻是如果你不使用什么MVC框架之類的東西就會被認為沒有把事情做對。公式化的代碼表明了問題所在:這種語言需要一個框架來替人們做這些事情。

    退回到以前,我認為那些頑固的使用Perl來做Web開發的人很傻,F在,經歷了十年的PHP開發,我處在相同的位置上了。我可以在一個小時里用PHP敲出一個不錯的網站,在一兩天里開發出一個優秀的網站。PHP的性能眾人皆知,我可以無限的擴展它。我雇傭過的每個開發人員都會它,我集成過的每個系統里都有一個用它寫出的打包的代碼庫。我深陷于PHP的方便性,盡管它對于我的任務并不是一個合適的語言。

    轉向Ruby on Rails

    最明顯有潛在能力繼任PHP的是Ruby on Rails。Ruby是一個新的、干凈的語言,具有現代的語言特征,松散、優雅的語法(很像Python)。Rails省去了我們常見的任務,省去了集成Web應用里的公式化的做法,把PHP里三、四行的習慣寫法變成了first-class語言結構。這看起來極其像我需要的PHP替代品、能讓開發工作再一次提速的東西。

    我每天使用Rails,修改一個喜愛這種框架和語言的有經驗的Rails專家所寫的Rails應用,七個月后,我卻不能斷言Rails是一個正確的選擇了,原因很難表達。我這篇文章的目的就是想試圖把原因說清楚。

    我的主要的抱怨,必須要提的,就是性能。之前就說過這種問題不應該被當作一種語言的致命缺陷,它只是語言實現中的暫時的問題。所以我不能把這當作一個真正的問題,盡管它是我把現在的應用移植到PHP的最主要的一個原因。我可以讓Rails跑的跟PHP一樣快,但那需要提供2到4倍高的硬件條件。我估計五年內將還會這樣,五年后我也許不必把程序移植到PHP。但現在,它不能滿足我的要求。

    第二,我討厭Active Record。Active Record是一種模式,并不是Ruby固有的,在Rails的最新版本里是可選擇的,但是對它的使用和這種模式已經深入到了Rails的DNA里了。我之前曾解釋過為什么我認為這數據庫上的ORM不是個好做法,所以我不會再重復解釋,但有一點我需要總結的就是你省去了手工寫CRUD所獲得的效能要大于ActiveRecord做傻事所損失的效能,要花時間搞清楚它是怎么工作的,順應框架原則,防止它做這樣的事情。

    第三,我十分的不信任代碼自動生成。工具能幫你生成模板式的代碼很有用,但你的程序了卻多出了成堆的毫無用處的代碼來實現這些目的,這就變的不好了。代碼生成喜歡“神奇推理”,因為生成器并不確定代碼某些特別有用的特征究竟是專門寫出的還是語言環境固有自帶的。神奇推理是危險的。

    代碼生成讓我想到了Ruby on Rails的一個可能是最根本的問題,就是它并不是一種語言。Ruby是一種語言。但Ruby,它在解決了PHP上的一些基本問題外,并沒有解決核心問題,那就是現代Web應用需要一系列的改進:像routing,model/view分類,drop-in功能性等都是很常見的特征。Rails里有,但這跟PHP里的Zend,Symfony 和 Code Igniter之類的MVC框架一樣只是綁上去的繃帶。

    那么缺的是什么?

    能夠取代PHP的語言必須十分優秀于PHP,就如同PHP優秀于Perl一樣。它必須承擔起Web應用的主要實現任務,就像PHP那樣,你的代碼的主要功能就是輸出網頁 —— 一個有點激進的要求,它要不適合去做其它的事情,例如當中shell腳本語言。我希望有這樣一種語言,它能夠承擔起我開發一個MVC式的Web應用時的所有的任務,所有功能都是核心內置的,不能僅是一個程序包。

    問題是,沒有這樣的一種語言。有一段時間服務器端JavaScript看起來將會成為下一個重要的語言,它能統一Web應用前端和后端的編程語言。但是這些JavaScript上的偉大思想總是徘徊在一些跑題的行為上,比如nodejs:事件驅動模式非常的激進和強大,能讓你開發出高性能的應用程序,最大化的使用新式硬件,但這是一種開發服務器端應用程序的思路,不是Web頁面。并且你仍然需要去寫一大堆可怕的Web頁面。另外一些CommonJS的成果例如ejScript開始嘗試著取代PHP,但仍沒有解決框架問題。

    仍在等待

    不得不做出結論是,PHP的替代者還不存在。Ruby on Rails很好,但并不比一個PHP之上的類似的MVC框架強多少,更別提由于Ruby自身的效率不高和ActiveRecord的ORM惡搞帶來的雙重打擊。Python看起來并不感興趣于作為下一代的Web語言,JavaScript的服務器端解決方案還剛剛只是個開始。

    我們等待下一個大目標的出現。我希望能從PHP上轉走,真的。我可不想成為Perl式的古董。但不管怎樣,這種語言看起來還不存在。我判斷錯了嗎?

    ip地址已設置保密
    2011/1/11 12:32:39
    LZQ
    帥哥喲,離線,有人找我嗎?
    等級:火箭俠
    文章:2009
    積分:10052
    注冊:2006年9月23日
    2
      點擊這里發送電子郵件給LZQ

    發貼心情
    不斷更新啊

    溫故知新
    ip地址已設置保密
    2012/3/15 10:19:58
    LZQ
    帥哥喲,離線,有人找我嗎?
    等級:火箭俠
    文章:2009
    積分:10052
    注冊:2006年9月23日
    3
      點擊這里發送電子郵件給LZQ

    發貼心情
    我們等待下一個大目標的出現。我希望能從PHP上轉走

    溫故知新
    ip地址已設置保密
    2012/3/15 10:20:48

     3   3   1/1頁      1    
    網上貿易 創造奇跡! 阿里巴巴 Alibaba
    北京安易天地軟件有限公司北方論壇
    聯系電話:010-51268244 13611231185 QQ:511102924
    Powered By Dvbbs Version 7.1.0 Sp1
    頁面執行時間 02.27930 秒, 5 次數據查詢
    Channel