91亚洲精华国内精华精华液_国产高清在线精品一区不卡_精品特级一级毛片免费观看_欧美日韩中文制服有码_亚洲精品无码你懂的网站369

作為在那個(gè)時(shí)期出現(xiàn)的新的Web開(kāi)發(fā)者,事情顯的很明白而且水到渠成:Perl已經(jīng)不適應(yīng)新的應(yīng)用開(kāi)發(fā)環(huán)境了。在Perl里,頁(yè)面需要冗長(zhǎng)的公式化的CGI方式實(shí)現(xiàn),而這些在PHP里卻可以用基本的、缺省的編程方式實(shí)現(xiàn)。Perl語(yǔ)言里到處都是舊時(shí)代的特征 — 引用,不方便的數(shù)據(jù)結(jié)構(gòu),還有其他許多的小的古怪語(yǔ)法語(yǔ)義 —— 這使得Web開(kāi)發(fā)冗長(zhǎng),不穩(wěn)定,不方便。無(wú)怪乎沒(méi)有一個(gè)出色的Web應(yīng)用是用Perl寫(xiě)成的,而用PHP你卻能做的又快又簡(jiǎn)單,盡管PHP存在著在當(dāng)時(shí)就顯而易見(jiàn)的缺陷。

在1999年支持Perl反對(duì)PHP的爭(zhēng)論有很多:Perl要快的多,有更多的程序庫(kù)和驅(qū)動(dòng)支持,CPAN是個(gè)神奇的地方,里面預(yù)先寫(xiě)好的代碼能讓你絕大部分任務(wù)省去80%的工作量?,F(xiàn)在看起來(lái)這些就有點(diǎn)可笑了,但“PHP缺乏可擴(kuò)展性”卻是個(gè)真正的缺點(diǎn)。但總之PHP贏了,因?yàn)樯厦嫠f(shuō)的這些問(wèn)題并不是這種語(yǔ)言固有的。PHP解釋器可以變得更快,程序庫(kù)可以被開(kāi)發(fā)出來(lái),PERA和PECL目前已經(jīng)變得相當(dāng)龐大,這還不包括各種廠商希望人們?nèi)ナ褂盟麄兊腁PI而提供的非正式的程序庫(kù)。

時(shí)間在推移

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

退回到以前,我認(rèn)為那些頑固的使用Perl來(lái)做Web開(kāi)發(fā)的人很傻?,F(xiàn)在,經(jīng)歷了十年的PHP開(kāi)發(fā),我處在相同的位置上了。我可以在一個(gè)小時(shí)里用PHP敲出一個(gè)不錯(cuò)的網(wǎng)站,在一兩天里開(kāi)發(fā)出一個(gè)優(yōu)秀的網(wǎng)站。PHP的性能眾人皆知,我可以無(wú)限的擴(kuò)展它。我雇傭過(guò)的每個(gè)開(kāi)發(fā)人員都會(huì)它,我集成過(guò)的每個(gè)系統(tǒng)里都有一個(gè)用它寫(xiě)出的打包的代碼庫(kù)。我深陷于PHP的方便性,盡管它對(duì)于我的任務(wù)并不是一個(gè)合適的語(yǔ)言。

轉(zhuǎn)向Ruby on Rails

最明顯有潛在能力繼任PHP的是Ruby on Rails。Ruby是一個(gè)新的、干凈的語(yǔ)言,具有現(xiàn)代的語(yǔ)言特征,松散、優(yōu)雅的語(yǔ)法(很像Python)。Rails省去了我們常見(jiàn)的任務(wù),省去了集成Web應(yīng)用里的公式化的做法,把PHP里三、四行的習(xí)慣寫(xiě)法變成了first-class語(yǔ)言結(jié)構(gòu)。這看起來(lái)極其像我需要的PHP替代品、能讓開(kāi)發(fā)工作再一次提速的東西。

我每天使用Rails,修改一個(gè)喜愛(ài)這種框架和語(yǔ)言的有經(jīng)驗(yàn)的Rails專(zhuān)家所寫(xiě)的Rails應(yīng)用,七個(gè)月后,我卻不能斷言Rails是一個(gè)正確的選擇了,原因很難表達(dá)。我這篇文章的目的就是想試圖把原因說(shuō)清楚。

我的主要的抱怨,必須要提的,就是性能。之前就說(shuō)過(guò)這種問(wèn)題不應(yīng)該被當(dāng)作一種語(yǔ)言的致命缺陷,它只是語(yǔ)言實(shí)現(xiàn)中的暫時(shí)的問(wèn)題。所以我不能把這當(dāng)作一個(gè)真正的問(wèn)題,盡管它是我把現(xiàn)在的應(yīng)用移植到PHP的最主要的一個(gè)原因。我可以讓Rails跑的跟PHP一樣快,但那需要提供2到4倍高的硬件條件。我估計(jì)五年內(nèi)將還會(huì)這樣,五年后我也許不必把程序移植到PHP。但現(xiàn)在,它不能滿(mǎn)足我的要求。

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

第三,我十分的不信任代碼自動(dòng)生成。工具能幫你生成模板式的代碼很有用,但你的程序了卻多出了成堆的毫無(wú)用處的代碼來(lái)實(shí)現(xiàn)這些目的,這就變的不好了。代碼生成喜歡“神奇推理”,因?yàn)樯善鞑⒉淮_定代碼某些特別有用的特征究竟是專(zhuān)門(mén)寫(xiě)出的還是語(yǔ)言環(huán)境固有自帶的。神奇推理是危險(xiǎn)的。

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

那么缺的是什么?

能夠取代PHP的語(yǔ)言必須十分優(yōu)秀于PHP,就如同PHP優(yōu)秀于Perl一樣。它必須承擔(dān)起Web應(yīng)用的主要實(shí)現(xiàn)任務(wù),就像PHP那樣,你的代碼的主要功能就是輸出網(wǎng)頁(yè) —— 一個(gè)有點(diǎn)激進(jìn)的要求,它要不適合去做其它的事情,例如當(dāng)中shell腳本語(yǔ)言。我希望有這樣一種語(yǔ)言,它能夠承擔(dān)起我開(kāi)發(fā)一個(gè)MVC式的Web應(yīng)用時(shí)的所有的任務(wù),所有功能都是核心內(nèi)置的,不能僅是一個(gè)程序包。

問(wèn)題是,沒(méi)有這樣的一種語(yǔ)言。有一段時(shí)間服務(wù)器端JavaScript看起來(lái)將會(huì)成為下一個(gè)重要的語(yǔ)言,它能統(tǒng)一Web應(yīng)用前端和后端的編程語(yǔ)言。但是這些JavaScript上的偉大思想總是徘徊在一些跑題的行為上,比如nodejs:事件驅(qū)動(dòng)模式非常的激進(jìn)和強(qiáng)大,能讓你開(kāi)發(fā)出高性能的應(yīng)用程序,最大化的使用新式硬件,但這是一種開(kāi)發(fā)服務(wù)器端應(yīng)用程序的思路,不是Web頁(yè)面。并且你仍然需要去寫(xiě)一大堆可怕的Web頁(yè)面。另外一些CommonJS的成果例如ejScript開(kāi)始嘗試著取代PHP,但仍沒(méi)有解決框架問(wèn)題。

仍在等待

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

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項(xiàng)目群及時(shí)溝通

專(zhuān)業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅(jiān)持

10年專(zhuān)注高端品質(zhì)開(kāi)發(fā)
  • 返回頂部