國(guó)外開(kāi)發(fā)者談為何放棄PHP而改用Python
更新時(shí)間:2009年09月15日 11:56:09 作者:
本文作者作為一名從事PHP開(kāi)發(fā)11年的資深開(kāi)發(fā)者,卻放棄了PHP而改用Python。
借助本文,作者與其說(shuō)是解釋了他做出這種選擇的原因,不如說(shuō)是他對(duì)PHP和Python兩種語(yǔ)言的性能進(jìn)行了比較。以下是作者的原文翻譯:
我之所以放棄PHP,原因首先是語(yǔ)言。PHP實(shí)際上不是一種語(yǔ)言,而是一種巨大的插件結(jié)構(gòu),以一種高層的形式來(lái)展示低層的庫(kù)。而大部分開(kāi)發(fā)者使用的 語(yǔ)言實(shí)際上是對(duì)C功能 (curl, mysql, gd, etc.)的包裝,通常情況下它們的庫(kù)展示得很簡(jiǎn)單。因而這導(dǎo)致了PHP的API不一致。
PHP語(yǔ)言的第二個(gè)問(wèn)題是語(yǔ)言的管理問(wèn)題。PHP語(yǔ)言實(shí)際上是由委員會(huì)來(lái)設(shè)計(jì)的,而且沒(méi)有人來(lái)制定任何共識(shí)性的標(biāo)準(zhǔn)。PEAR有自己的標(biāo)準(zhǔn),PHP有自己的標(biāo)準(zhǔn),這導(dǎo)致SPL classes更具Java風(fēng)格,而PEAR卻截然不同。
從事PHP開(kāi)發(fā)11年來(lái),我認(rèn)識(shí)了很多PHP領(lǐng)域的專(zhuān)家級(jí)開(kāi)發(fā)者,它們對(duì)PHP也有很多看法。除了上文提到的委員會(huì)問(wèn)題以及標(biāo)準(zhǔn)混亂問(wèn)題之外,由于PHP的使用范圍非常廣,向后的不兼容對(duì)代碼造成了很大的破壞。
還要提到的一點(diǎn)是PHP缺乏很多現(xiàn)代語(yǔ)言的特性?,F(xiàn)在再來(lái)說(shuō)說(shuō)Python:
Python語(yǔ)言的創(chuàng)建方法幾乎與PHP的完全相反。首先,Python是由Benevolent Dictator和Guido van Rossum領(lǐng)導(dǎo)的,語(yǔ)言的開(kāi)發(fā)由單一的人員主導(dǎo),因此它的開(kāi)發(fā)、管理以及長(zhǎng)期運(yùn)營(yíng)會(huì)保持很好的連續(xù)性。Guido和Python的核心開(kāi)發(fā)者通過(guò)PEP 創(chuàng)建標(biāo)準(zhǔn),而且通過(guò)公共接口展示標(biāo)準(zhǔn)是如何創(chuàng)建的。而且,Guido如果想到的語(yǔ)言特性不夠好,也不會(huì)出現(xiàn)在語(yǔ)言層中(如沒(méi)有++運(yùn)算符,而且比較符中沒(méi) 有分配)。
延續(xù)性的特點(diǎn)也延伸到了整個(gè)Python社區(qū),所以你很難發(fā)現(xiàn)不同項(xiàng)目中的Python截然不同。
我最喜歡的Python的一個(gè)特點(diǎn)就是它的清晰。當(dāng)打開(kāi)Python中的一個(gè)文件的時(shí)候,我會(huì)清楚地知道里面大概有什么樣子的代碼,聯(lián)想到很多次我被PHP的這一點(diǎn)搞得焦頭爛額,我覺(jué)得這個(gè)特性非常有用。
總之,Python的系統(tǒng)級(jí)特性非常不錯(cuò)。
Python另外一個(gè)很棒的特性是直白性。需要namespace(命名空間)?文件的名字就是命名空間;需要模塊?只需要用一個(gè)__init__.py文件代替;需要重命名功能?只需要new_func = old_func。
我之所以放棄PHP,原因首先是語(yǔ)言。PHP實(shí)際上不是一種語(yǔ)言,而是一種巨大的插件結(jié)構(gòu),以一種高層的形式來(lái)展示低層的庫(kù)。而大部分開(kāi)發(fā)者使用的 語(yǔ)言實(shí)際上是對(duì)C功能 (curl, mysql, gd, etc.)的包裝,通常情況下它們的庫(kù)展示得很簡(jiǎn)單。因而這導(dǎo)致了PHP的API不一致。
PHP語(yǔ)言的第二個(gè)問(wèn)題是語(yǔ)言的管理問(wèn)題。PHP語(yǔ)言實(shí)際上是由委員會(huì)來(lái)設(shè)計(jì)的,而且沒(méi)有人來(lái)制定任何共識(shí)性的標(biāo)準(zhǔn)。PEAR有自己的標(biāo)準(zhǔn),PHP有自己的標(biāo)準(zhǔn),這導(dǎo)致SPL classes更具Java風(fēng)格,而PEAR卻截然不同。
從事PHP開(kāi)發(fā)11年來(lái),我認(rèn)識(shí)了很多PHP領(lǐng)域的專(zhuān)家級(jí)開(kāi)發(fā)者,它們對(duì)PHP也有很多看法。除了上文提到的委員會(huì)問(wèn)題以及標(biāo)準(zhǔn)混亂問(wèn)題之外,由于PHP的使用范圍非常廣,向后的不兼容對(duì)代碼造成了很大的破壞。
還要提到的一點(diǎn)是PHP缺乏很多現(xiàn)代語(yǔ)言的特性?,F(xiàn)在再來(lái)說(shuō)說(shuō)Python:
Python語(yǔ)言的創(chuàng)建方法幾乎與PHP的完全相反。首先,Python是由Benevolent Dictator和Guido van Rossum領(lǐng)導(dǎo)的,語(yǔ)言的開(kāi)發(fā)由單一的人員主導(dǎo),因此它的開(kāi)發(fā)、管理以及長(zhǎng)期運(yùn)營(yíng)會(huì)保持很好的連續(xù)性。Guido和Python的核心開(kāi)發(fā)者通過(guò)PEP 創(chuàng)建標(biāo)準(zhǔn),而且通過(guò)公共接口展示標(biāo)準(zhǔn)是如何創(chuàng)建的。而且,Guido如果想到的語(yǔ)言特性不夠好,也不會(huì)出現(xiàn)在語(yǔ)言層中(如沒(méi)有++運(yùn)算符,而且比較符中沒(méi) 有分配)。
延續(xù)性的特點(diǎn)也延伸到了整個(gè)Python社區(qū),所以你很難發(fā)現(xiàn)不同項(xiàng)目中的Python截然不同。
我最喜歡的Python的一個(gè)特點(diǎn)就是它的清晰。當(dāng)打開(kāi)Python中的一個(gè)文件的時(shí)候,我會(huì)清楚地知道里面大概有什么樣子的代碼,聯(lián)想到很多次我被PHP的這一點(diǎn)搞得焦頭爛額,我覺(jué)得這個(gè)特性非常有用。
總之,Python的系統(tǒng)級(jí)特性非常不錯(cuò)。
Python另外一個(gè)很棒的特性是直白性。需要namespace(命名空間)?文件的名字就是命名空間;需要模塊?只需要用一個(gè)__init__.py文件代替;需要重命名功能?只需要new_func = old_func。
相關(guān)文章
最適合人工智能開(kāi)發(fā)的5種編程語(yǔ)言 附人工智能入門(mén)書(shū)籍
這篇文章主要為大家詳細(xì)介紹了最適合人工智能開(kāi)發(fā)的5種編程語(yǔ)言,并為大家推薦人工智能入門(mén)書(shū)籍,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11詳解Hadoop 運(yùn)行環(huán)境搭建過(guò)程
這篇文章主要介紹了Hadoop 運(yùn)行環(huán)境搭建過(guò)程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06Prometheus和NodeExporter安裝監(jiān)控?cái)?shù)據(jù)說(shuō)明
這篇文章主要為大家介紹了Prometheus和node?exporter安裝監(jiān)控?cái)?shù)據(jù)說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07kali2021.4a使用virtualenv安裝angr的詳細(xì)過(guò)程
在Linux中安裝各種依賴(lài)python的軟件時(shí),最頭疼的問(wèn)題之一就是各個(gè)軟件的python版本不匹配的問(wèn)題,angr依賴(lài)python3,因此考慮使用virtualenv來(lái)安裝angr,需要的朋友可以參考下2022-11-11微信支付、支付寶支付等常用第三方支付通道接口手續(xù)費(fèi)對(duì)比
微信支付、支付寶等第三方支付,需要和銀聯(lián)、網(wǎng)聯(lián)對(duì)接,有清算機(jī)構(gòu)和銀行的交易處理通道成本。費(fèi)率指支付手續(xù)費(fèi)的費(fèi)率,不同行業(yè)、不同的支付平臺(tái)、不同的支付額度或次數(shù)所對(duì)應(yīng)的通道費(fèi)率是不一樣的。2023-01-01十六進(jìn)制、十進(jìn)制、八進(jìn)制、二進(jìn)制常用進(jìn)制轉(zhuǎn)換
進(jìn)制就是進(jìn)制位,常用的進(jìn)制包括:二進(jìn)制、八進(jìn)制、十進(jìn)制與十六進(jìn)制,區(qū)別在于數(shù)運(yùn)算時(shí)是逢幾進(jìn)一位。比如二進(jìn)制是逢2進(jìn)一位,十進(jìn)制也就是我們常用的0-9是逢10進(jìn)一位。這篇文章主要介紹了十六進(jìn)制、十進(jìn)制、八進(jìn)制、二進(jìn)制常用進(jìn)制轉(zhuǎn)換,需要的朋友可以參考下2022-12-12