Python 是否是下一個 PHP?為什麼?
前幾天和一個看好 Python 的 Rails 開發者聊天,他看好 Python 的原因就是 PHP 統治今天的網路應用開發。而 Python 很像下一個 PHP 。
『下一個 PHP』如何定義?是指流行程度么?如果是的話,我覺得 Python 不會像 PHP 那樣流行。根本原因在與部署難易程度。
PHP 從語言層面上講幾乎是一無是處,具體實現的質量也乏善可陳,但它勝在最要命的部署上:沒有任何其他語言有像 PHP 一樣適合大規模部署的方式。基本上裝好 Apache/mod_php 之後,PHP 應用的部署就簡化為了複製文件。即便是考慮到性能原因等採用 nginx/FastCGI 等替代方式,額外的工作也只是在於最初配置。一旦配置完成,之後的部署都是文件複製。伺服器重啟後通常會自動啟動 apache/nginx,fastcgi manager 負責啟動 php-cgi 進程等,而 PHP 應用基於文件的調用方式並不需要操心更多的維護。這對於如 Dreamhost 之類的平台來說至關重要:他們通常要一台伺服器處理成千上萬的低流量用戶,而且這些用戶沒有 root 許可權去運行其他進程。PHP 腳本的生命周期很短,沒有常駐進程,每次調用之後就被終止,對於應用作者的要求更低,不用太多的考慮資源管理問題。
這和 Python 之流的部署有天壤之別:大部分 Python 的網路應用如 Django, Tornado 等都需要單獨的常駐進程(Apache/mod_python 似乎是個杯具)。這些進程需要額外的維護工作以管理其啟動、停止,也需要額外的監控進程處理意外退出後的重啟。這需要用戶對系統有更深入的了解。常駐進程需要佔用系統內存,通常不可能在一台伺服器上運行成百上千個應用,對於 Dreamhost 這樣的服務提供商來說不適合用來處理諸如 WordPress 博客之類的簡單應用。常駐進程也要求作者對系統資源的管理、垃圾回收機制等有更深入的了解以避免內存泄露、資源佔用過度等問題。現在 Python 網路應用部署最簡單的應該是 App Engine,採用了類似 PHP 的生命周期(請求處理 30 秒限制,超時被終止,無法運行常駐進程),極大簡化了管理難度,但是國內無法訪問…
所以從流行程度上講,Python 不會超過 PHP,因為數量龐大的服務提供商無法用 Python 支撐現有的用戶規模。但是這個流行程度對於創業公司、專業人士來說沒有什麼意義。很多核心的網路應用不適合用 PHP 的短暫請求處理機制實現(比如准實時 push 提醒、網頁即時聊天等),而更加適合由常駐進程來處理。這些才是 Python,Ruby 等語言實現發揮其能量的地方。
Python就是Python,為什麼要是下一個PHP?
這是Python在知乎上被黑得最慘的一次。。。
作為一個程序猿的職業病來說,這是一個偽命題,「下一個PHP怎麼定義」,「下一個Web語言」,「下一個流行語言」。
Python不是為web而生,但不代表它不能用於Web開發,相反現在已經有大量的網站都在使用python作為開發語言,比如豆瓣網,而且Python已經有大量的開源網路框架。
再說流行度吧,為什麼要等到未來呢,Python現在就已經非常流行了,就拿現在非常火的大數據概念來說,Python的使用度絕對名列前茅,還有金融領域,安全領域,Linux的大量系統工具等,Python的使用度都是非常大,甚至在圖形處理領域,Python也已經在不斷擴張領土。
Python就是Python,它可以在各種領域發光發熱,套用一下哥哥的《我》中的歌詞,「我就是我,是顏色不一樣的煙火」
來自Avazu Holding 吳清波
Python能幹很多事情,比如數學計算、2D/3D圖形處理,最近幾年有很多有想法的人把Python用到科學研究、數學計算上,建立了很多科學工具、數學庫,期望Python有朝一日能夠像Matlab、Octave、SAGE、SciLab那樣變成強大豐富的計算環境。而在Blender、GIMP等軟體的背後,Python圖形處理腳本已經在發揮越來越大的作用。如果你看過Blender基金會製作的三部開源動畫影片,你甚至還能預期不遠的未來,Python終將有一天能夠進軍好萊塢,成為數字電影製作的一種工具。
python的部署沒php難,只是因為很多人不熟悉python的部署,所以才說難,目前python沒PHP普及的原因,1,會python的程序員沒php多,從招人就能看出來,現在招一個python程序員,還是很困難的,第二,python沒有像wordpress,discuz,phpwind這樣非常流行的開源博客和論壇程序,因此造成人們對python的認知度不夠,但python做web開發也是有非常大的優勢的,有很多成熟的框架選擇,適合快速開發,因此,我看好python以後在web開發領域的表現,正如前面所說,相比php來說,python還有科學計算,2d,3d圖形處理等等。
鳥哥說了,我不是寫php的,我是寫c的。所以沒必要爭論這個問題,你拿python跟c比,有什麼好比的。
我並不認為python可以代替php,至少目前來說還完全不可能。
原因如下:php仍然在與時俱進,同時phper和php相關程序的數量和質量仍在不斷地擴大和提高。重要的一點既是,php仍然在不斷維護和更新,語言各個方面在不斷地提高和改善,在這個時代,被淘汰的,一直都是不與時俱進和反人類的產物
-------------
評論區又是語言大戰
Apache模塊和PHP-FPM的確是PHP傳統的Web運行模式,但基於CLI的WorkerMan和Swoole服務都出來很久了,可惜很多人選擇性看不到.又比如PHP一直都有很多實用的數學處理功能(PHP: 數學擴展 - Manual),但有些人故意不提,故意讓人覺得PHP只能寫寫網頁做做模板,比如PHP把數字轉成更短的字元串(邀請碼/短網址)就用到了GMP這個數學擴展:
echo gmp_strval(gmp_init("9876543210", 10), 62)."
"; //AmOy42
echo gmp_strval(gmp_init("AmOy42", 62), 10)."
"; //9876543210
其實就是10進位和62進位互轉.
62進位(10+26+26)利用10個數字+26個小寫字母+26個大寫字母來表示數值,從而大大減少數值位數.
Web應用開發的確是PHP的優勢,但PHP不僅僅只能用於Web開發,PHP是一門圖靈完備的編程語言,只要敢想敢做,你用PHP來開發一個資料庫都沒有問題,實現B+樹聚簇索引和數據的存儲結構,實現二分查找,實現鎖機制,實現undo/redo事務日誌,用線程安全版PHP配合pthreads擴展實現多線程,用libevent擴展實現非同步.Java這種不能精確控制內存的虛擬機語言不一樣可以開發HBase這種資料庫么?只不過用PHP這種動態弱類型而且還沒有JIT運行時編譯的語言在內存上進行計算密集操作時沒有優勢罷了.總而言之,PHP能幹的事很多,Web開發只不過是PHP最擅長的領域.我覺得用PHP寫寫自動化運維以及爬蟲腳本也很方便,並不覺得在這種領域Python就比PHP有絕對優勢.
不會的,Python可以在其它領域(桌面)做得比PHP好,但是在web開發這塊仍沒有可以和PHP相比美的語言。ruby倒是有可能的。
python的強大之處在於語言的簡潔與優雅, 以及它強大的表達能力. hacker們願意使用python來作為他們表達思維的方式.
在web開發上面, 正如上面Rio所言, python部署成問題, 但是對於商業網站而言, 自己處理一台vps不成問題. 而python的通用性, 能保證完成各種非常規的應用.
簡單地說, 如果你只是需要web1.0的內容展示網站, 考慮php, web2.0, 可以考慮python, 以及RoR.
@Rio 已經講的很好,我再來補充一下數據。
來自: 為什麼 PHP 是最好的語言?現在是,將來也會是
注意,這裡無意引起語言的紛爭,我也沒有惡意。只不過列出事實,多一個信息為還不熟悉這些領域的新手做個參考,僅此而已,我個人非常喜歡 Python。
為什麼 PHP 是最好的語言?你也許會說他的語法好學、部署簡單、面面俱到的函數、甚至你會以為我在調侃 PHP 而哈哈大笑。
在我看來,PHP 之所以是星球上最好的語言,是因為有大量的人在使用它。
上面這張數據圖,是由 W3Techs 網站提供的 伺服器端腳本語言市場佔有率,請配合以下信息一起理解此圖:
- 樣本是 Actionable Analytics for the Web 世界排名前一千萬的網站;
- 此數據每日更新。
以上列表信息選自:Technologies Overview。
大部分的商業網站在使用 PHP,會導致 PHP 的人才需求非常大,學習、使用 PHP 的人群也會很龐大。
PHP 的將來#
PHP 的將來是由 PHP7 決定的,再來看下 PHP 7 的表現。
發明 PHP 的 Zend 公司發布的 PHP 與其他語言運行效率對比
下面這一個是 C++ vs Python vs PHP vs Java vs NodeJS性能大PK
從運行結果來看,毫無疑問,PHP7 是最快的 腳本語言 (注意是腳本語言哈)。
有同學在困惑 NodeJS 不是腳本語言? JS 也就是這裡的 Nodejs 是運行在是 V8 上的,V8 引擎會對 JS 進行預編譯,具體見這裡 Is Node.js compiled or interpreted language? - Hashnode
看這個表的時候要注意:
- Total CPU time 越低越快;
- Slower than 列里,C++ 對比 C++ 要慢多少 CPU time,previous 是在列表裡對比上一個排名的語言要慢多少 CPU time。
- Java 8 (non-std lib) 與 Python 2.7 + PyPy 因為不支持通用函數庫,所以只參考不列入計算。
簡要分析結果如下:
- NodeJS 快 2 倍。
- Java 8 接近慢 2 倍。
- Python 在性能上沒有什麼重大變化。 每個新版本都比上個版本稍快一點,但整體 Python 比 C++ 慢 15 倍。
- Perl 與 Python 有相同的趨勢,並且比 C++ 慢 22 倍。
- PHP 5.x 是最慢的,運行時間是 C++ 的 47 ~ 60 倍之間。
- PHP 7 的成績最為驚人。 它比 PHP 5.x 快 10 倍,比緊隨其後的腳本語言 Python 快 3 倍。
最後總結下,在「網路應用開發」上,理論上來講 Python 要像 PHP 那樣的流行程度還是蠻難的,PHP 的過去(也就是現在的市場佔有率)代表了一堆伺服器還運行著 PHP ,這些伺服器短時間(2~10年)內不會有太大改變。而 PHP 的從業者、工具鏈、框架等整個生態圈,短時間內看也是風頭正猛,尤其是 PHP7 的出現,佔盡了風頭。
Python 有其擅長的領域,無數高校都使用其作為編程入門語言教學。大公司如 Google 也 Python 情有獨鍾。
最後,我運營著一個 Laravel/PHP 開發者 社區 ,歡迎 PHP 的同學加入。
Summer
已經有了一個QQ了
出來一個更好的QQ,你會用嗎?
我都不明白你的(下一個)究竟代表的是什麼意思。。。
如果Web,那麼PHP的框架更加多,Python相對少。我指的是類似於Django那樣的Full stack框架。這一點從早期虛擬主機大多數使用PHP可以看出來。
但是應用寬泛性,PHP完全不是Python對手。我在嵌入式Python,PySerial,PyUSB,wxPython,twisted,爬蟲,文檔管理和代碼生成器方面都使用過Python。很好很強大。
語言辯論最無聊。打字浪費我五分鐘Coding時間。python能,為什麼node.js不能,為什麼go不能
當然不會,Python 會影響、啟發 PHP 讓它變成更好的 PHP,也許 PHP 有一天會進化得 Python
那麼好甚至更好,但 Python 本身不會「降級」到 PHP。就像梁朝偉能引領一個群眾演員成長為影帝,但梁朝偉再也做不了群眾演員了。一念及此,feel so sad.
謝邀:
PHP 除了語言一無是處,別的地方也是一無是處,我可以隨便扔出幾個例子。
1. 多入口,每個文件相當於一個頁面,對於開發靜態站點的人,這樣的確很方便。但是一旦變成動態之後,考慮的東西要多很多,多入口就代表每個入口都要做一些操作,或者都要 include 一些東西,增加了維護的難度。
2. 直接把文件結構映射為路由,省事但是省事了,但是後患無窮。因為會產生很多問題,比如文件上傳漏洞,越權訪問,等等。現在的框架沒有一個不是自建路由的。
3. 原生互操作非常難用,Python 調用個 dll 或者 so 直接 ctypes.cdll.LoadLibrary 走起,PHP 呢?(當然你也可以說 JNI/JNA 也很難用,但 Java 沒那麼多的毛病。)
4. 對象的生存周期,Python 的對象可以生存很長一段時間,PHP 呢?單次請求結束,對象就沒了。(當然你也可以序列化打包存 redis 里,你如果覺得省事的話當我沒說)
Python 跟 PHP 比?你也太看得起 PHP 了。
Python部署成問題?Python的Web應用只在虛擬主機里部署成問題,其它平台都好好的。
現在啥都缺,就不缺主機,誰還用廉價的虛擬主機?
不同語言有不同的優勢,各自擅長的領域也不同,就正如PHP對開發長時間機制的程序支持的就不是那麼好,可以說就是不擅長,但是對WEB開發,快速敏捷的特別在PHP身上又體現得淋漓盡致。然而Python可以說更加強大,不單單可以做WEB開發,還可以支持開發後台數據監控,網頁抓取等等長耗時應用,以及數據分析,數學計算等等高端應用。可以說各自有各自的優勢,開發當中選擇合適的語言就可以了,討論誰替代誰,一點意義都沒有。
語言只是工具,Python比PHP有更好表達程序猿思維的語法,但PHP勝在簡單,不需要考慮內存泄露,不需要考慮GIL什麼,不存在誰代替誰,選擇適合自己項目的就行了。
推薦閱讀: