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