PHP 為什麼沒有取代 Python ?

PHP 同樣可以 cli 模式運行,同樣也有很多庫和擴展,Web 開發不在話下,結合 gtk 等庫也可以開發桌面應用程序,為什麼沒有取代 Python 呢,他們語法同樣追求的是簡單和快速上手,用開發效率換運行效率,很多地方都很相似,而且現在各種培訓機構教 PHP 的也比 Python 要多,總感覺 PHP 使用人群也比 Python 多很多。


哈哈哈哈哈哈哈哈哈哈哈哈

雖然 Python 挺爛的

但是要爛到被 PHP 取代 Guido 還是去卧軌吧


我看不出來它們有多麼相似。

PHP 弱類型;Python 強類型。

PHP 主 Web;Python 主通用。

PHP 早期命名混亂、特性支持不全(Unicode、namespace);Python 比它好多了。

PHP 擴展集中在 Web 開發。有爬蟲么?有科學計算么?有大數據么?連進程式控制制都做不好。

PHP 語法越來越複雜了(跟 C++ 一樣不斷地加特性);Python 相對乾淨不少。

PHP 連個像樣的互動式 shell 都沒有(我找到一個,是用 Python 寫的);Python 不僅原生就支持互動式 shell,還有 ipython、bpython、ptpython 等各種好用的東西,還有以數據分析為主的 notebook。

PHP 之前連 SQL 轉義都搞不定的吧?Python 我剛認識的時候已經是 DB API 2.0 了,正確使用,完全不用擔心 SQL 注入。

PHP 入目一堆美元;Python 更像普通的文本。

.......

PS: 為什麼只說 PHP 的缺點、Python 的優勢?因為我回答的是「PHP 為什麼沒有取代 Python」,不是「Python 為什麼沒有取代 PHP」!


你還真以為php是世界上最好的語言啊,少年,現在轉語言還來得及


顏值太低


在web方面Python干不過PHP,在其他方面,PHP干不過Python。兩者沒有必要對比,適用場景不同。


PHP 應該比 Python 先火吧,為什麼成了 PHP 取代 Python 而不是 Python 取代 PHP 呢?


各種語言有自己專長。

有所為,有所不為,Python 能勝任的工作,php勝任不了或者說很難勝任。

如何訓練自己的編程思路

如何訓練自己的編程思路 - 黃哥的文章 - 知乎專欄


python在知乎很火,php在智聯招聘,前程無憂,拉勾上肯定比python火


瞬時型場景 和 長駐型場景

井水與河水,誰能取代誰


php主力在web,大部分web網站都是php的。

Python主力在命令行,所以你可以看到很多運維工具是Python寫的。世界上的東西並不是互相替代的,互相競爭的,各種語言都有他們自己的優勢以及不可替代的價值,php和JAVA都能一起組合開發企業級項目,那麼又有什麼理由排斥命令行那麼溜的Python呢?合適的才是最好的。


好比問who取代mall一樣。

不是誰取代誰,而是各有生存空間。

php曾經一度被認為是夕陽語言,後來流行起來各種框架,使開發一個產品的技術要求越來越低。

就社區活躍度來說,兩者沒有明顯的強弱。


學一隻新語言比起用一種不合適的語言來控制非官方API 更省力。

Php 還可以新建com class 來做direct X 輸出呢。PHP-GTK 的坑也是挺相似的。

到坑踩得夠多,會發現其實C# 也很簡單的,不用死抱著PHP 去做這種事。


Web開發上PHP比Python更簡單,更高效:

PHP內置模板引擎,熱部署,內置FastCGI等SAPI實現(php-fpm/apache2handler).

PHP比Python(CPython)快:

除了不兼容,Python3還比Python2慢,而PHP5比Python2快,PHP7比Python2快得多.C實現的PHP擴展Swoole比Python實現的Tornado快.

PHP沒有Python強制縮進的束縛,沒有Python編碼問題的困惑,處理編碼很輕鬆,同樣支持交互的shell:

PHP統一數字數組和關聯數組為數組,共享一套數組操作函數,而且關聯數組是有順序的,反觀Python,還分各種list/tuple/dict/set,真不嫌麻煩,而且dict類型居然還是無序的,很不方便.PHP作為HTML預處理器,其標配的UI語言就是HTML,運行時就是瀏覽器和WebView.內置HTTP伺服器和SQLite資料庫的HTML預處理器PHP可以輕鬆部署到客戶端(包括Android)配合瀏覽器和WebView開發離線GUI應用.

php -S 127.0.0.1:8080 -t /www
xdg-open http://127.0.0.1:8080

PHPDroid: PHP APP on Android
phpdroid_20170117.apk 我打包的APK包(5MB)
https://pan.baidu.com/s/1mia21HA
phpdroid_20170117.7z 項目源代碼(Android Studio)
https://pan.baidu.com/s/1miuLk96
用musl-cross-compilers交叉編譯Android版PHP(無腦下一步)
cross_compile_php.txt
https://pan.baidu.com/s/1dEEnBtJ
crossx86-arm-linux-musleabi-1.1.12.tar.xz
https://pan.baidu.com/s/1micZBWc

PHP內置SQLite引擎和MySQL驅動(mysqlnd),採用預處理參數化查詢輕鬆就能防禦SQL注入,簡單高效:

&prepare("SELECT * FROM posts WHERE id = ?");
$stmt-&>execute(array($_GET["id"]));
$stmt-&>fetchAll();

PHP7支持可選的類型聲明,使用時可以手動開啟:

&

PHP內置函數命名方式:

PHP內置庫函數的命名是有規範的,每個擴展的庫函數命名都是統一的,選擇哪種命名方式要看擴展的維護者了.偏Linux C風格的就是小寫和下劃線,偏C++風格的就是駝峰,我更喜歡小寫和下劃線.

像PHP後來添加的SPL庫是駝峰式,但像一些經典的庫,比如PHP字元串處理函數,就是典型的Linux C風格了,函數名字比較長的時候會用下劃線分隔,畢竟幾乎所有的PECL擴展都是C程序員開發的,他們怎麼可能會用駝峰那種風格的命名方式呢?除非是故意迎合OOP,比如上面說到的SPL庫.

PHP用$符號標記變數簡單清晰,Perl和Shell都是這樣乾的,對了,連jQuery都用$作為自己的函數別名.

PHP的確是最簡單易用的Web開發語言,沒有之一.


真不想回答這個問題,為什麼要邀我?

我只好先問一句:德意志民族是世界上最優秀的民族,那其他民族為什麼還要存在?希特勒也是這樣想的。

所以:且不說PHP和python的應用場景和特性都有很大不同,就算完全相同,又有什麼理由談論取代和消滅呢?

推導出的相關話題:

機槍可以更好的消滅敵人,為什麼還要保留手槍呢?

電鋸可以更好的砍樹,為什麼還不消滅斧頭?

飛機可以更快的運輸,為什麼不炸掉汽車?

中國人可以更節省地球資源(食量),為什麼不消滅其他人?

小夥子,你這個想法很清真啊。


因為 python 簡單,shell 自帶的 2.7 版 輸入 1 + 1 回車就返回 2

php 需要先在 shell 打開 vim/emacs 創建個 php 文件,

然後 輸入 & // 最後在瀏覽器中運行才能看到

當然你可以修改 vim/emacs 配置,在 shell 能里看 php 執行結果。

osx 的終端里則是 輸入 php -a 回車 echo 1+1; 回車

但對於新手而言,學習曲線太高,畢竟大部分人只需要 1 +1,而不是大型 web 應用


手槍為什麼沒有取代步槍

因為作用不一樣 場景不一致


用戶群不同,寫Python的人很多不是計算機專業的


我想說:你是不是傻。。。


這是py在知乎上被黑的最慘的一次。


奧迪為什麼沒有取代奧拓?


推薦閱讀:

那些精通前後端的大神是如何做到的?
前端跟後端的MVC架構有什麼不同?
到底是前端根據後端來寫還是後端根據前端來寫呢?
前後端分離端nodejs mongodb express後台spring restfui webservice,mybatis mysql這樣適合中大型應用嗎?
超小團隊選擇django還是flask?

TAG:程序員 | Python | PHP | 後端技術 | 編程 |