本文目錄一覽:
為什麼有些程序員看不起 PHP 這門語言
像他們說的 一個是不了解 還有php是弱語言,php有自己的優勢,任何語言都有自己的優勢,現在和php 競爭的最大對手是java。
至於java很多都認為php做不了大的項目。只能用java。其實是片面的,眾所周知,php被限制在數據庫的讀寫上面。php沒有線程,但是可以開多進程。
至於說大項目。php一樣能完整但是代碼的完整性不能得到保證。每個程序員都有自己的習慣。php和vc類似。你可以隨心所欲,任何地方都可以用鉤子完成。這就造就了 一個大的項目維護起來相當費勁。當你文件多到一定程度。你找起來都費勁。特別是這個行業人員流動大。核心人員走了,結果就更是毀滅性的。
java是編譯型語言。代碼完整比較完好。上面的php的缺點沒有。所有大項目首選java
還有很多就不說了。但是並不是php不好 而是個人成見問題。php一樣可以做大項目。
所以什麼都是看需求。
最後如果我做老闆 我也選java 給別人開發。因為它貴
如果自己做項目 我選php 出問題隨時隨地手機我都可以給修復 了。
為什麼說用PHP開發大型系統令人不爽
筆者在過去的四年里一直致力於PHP應用的開發 PHP確實十分容易編寫 但是PHP也有一些十分嚴重的缺陷
下面筆者會給出自己的理由 為什麼PHP不適合於比小型業餘網站更大的網站
對遞歸的不良支持 遞歸是一種函數調用自身的機制 這是一種強大的特性可以把某些複雜的東西變得很簡單 有一個使用遞歸的例子是快速排序(quicksort) 不幸的是 PHP並不擅長遞歸 Zeev 一個PHP開發人員 說道 PHP (Zend)對密集數據使用了棧方式 而不是使用堆方式 也就是說它能容忍的遞歸函數的數量限制和其他語言比起來明顯少 見bug 這是一個很不好的借口 每一個編程語言都應該提供良好的遞歸支持
許多PHP模塊都不是線程安全的 在幾年前 Apache發布了Web服務器的 版 這個版本支持多線程模式 在這個模式下 軟件一個一部分可以同時運行多個 PHP的發明者說PHP的核心是線程安全的 但是非核心模塊不一定是 但是十次有九次 你想要在PHP腳本中使用這種模塊 但這又使你的腳本不能合適Apache的多線程模式 這也是為什麼PHP小組不推薦在Apache 的多線程模式下運行PHP 不良的多線程模式支持使PHP常被認為是Apache 依然不流行的原因之一
請閱讀這篇討論 Slashdot: Sites Rejecting Apache ?
PHP 由於商業原因而不健全 通過使用緩存 PHP的性能可以陡增 %[見基準測試] 那麼為什麼緩存沒有被構建在PHP中呢?因為Zend——PHP的製造者 它在銷售自己的Zend Accelerator 所以當然 他們不想拋棄自己的商業產品這塊肥肉
但是有另一個可選擇的 APC (Zend後來推出Zend Optimizer 免費的加速器——譯者)
沒有命名空間 設想某個人製作了一個PHP模塊用來閱讀文件 模塊中一個函數叫做read 然後另一個人的模塊可以讀取網頁的 同樣包含一個函數read 然後我們就無法同時使用這兩個模塊了 因為PHP不知道你要用哪個函數
但是有一個很簡單的解決方法 那就是命名空間 曾經有人建議PHP 加入這個特性 但不幸得是他沒有這麼做 現在 沒有命名空間 每個函數都必須加上模塊名作為前綴 來避免名稱衝突 這導致了函數名恐怖得長 例如xsl_xsltprocessor_transform_to_xml讓代碼難於書寫和理解
不標準的日期格式字符 很多程序員對 日期格式字符 都很熟悉 它是從UNIX和C語言中來的 其他一些編程語言採用了這個標準 但是很奇怪的 PHP有它自己的一套完全不兼容的日期格式字符 在C中 %j 表示一年中的當天 在PHP中他表示一個月中的當天 然而使事情更混亂的是 Smarty (一個很流行的PHP模版引擎)的 strftime 函數和 date_format 函數 卻使用了C/UNIX的格式化字符
混亂的許可證 你也許認為PHP是免費的 所有的在手冊中提到的PHP模塊也是免費的 錯了!例如 如果你想在PHP中生成PDF文件 你會在手冊中發現兩個模塊 PDF 和 ClibPDF 但是這兩個都是有商業許可證的 所以 你所使用的每個模塊 你都要確保你同意他的許可證
不一致的函數命名規則 有些函數名稱是有多個單詞組成的 一般有三種單詞組合的習慣
直接拼接 getnumberoffiles 用下劃線分開 get_number_of_files 駱駝法則 getNumberOfFiles 大部分語言選擇其中一中 但是PHP都用到了
例如 你想要把一些特殊字符轉換成HTML實體 你會使用函數entities (直接拼接單詞) 如果你要使用相反的功能 你要用到它的小弟弟_entity_decode 由於某些特殊的原因 這個函數名是由下劃線分隔單詞 怎麼能這樣呢?你知道有一個函數叫strpad 或者他是str_pad?每次你都要查看一下到底這個符號是什麼或者直接等他出現一個錯誤 函數是不分大小寫的 所以對於PHP來說rawurldecode 和RawUrlDecode之間沒有什麼區別 這也很糟糕 因為兩個都使用到了同時他們看上去還不一樣 混淆了閱讀者
魔法引用的地獄 魔法引用(Magic quote)可以保護PHP腳本免受SQL注入攻擊 這很好 但是出於某些原因 你可以在php ini中關閉這個配置 所以你如果要寫出一個有彈性的腳本 你總要檢查魔法引用是開啟還是關閉 這樣一個 特性 應該讓編程更簡單 而事實上變得更複雜了
缺少標準框架 一個成長中的網站沒有一個整體框架 最終會變成維護的噩夢 一個框架可以讓很多工作變得簡單 現在最流行的框架模型時MVC 模型 在其中表現層 業務邏輯和數據庫訪問都分離開了
很多PHP網站不使用MVC 模型 他們甚至沒有一個框架 甚至現在有一些PHP框架同時你都可以自己寫一個 關於PHP的文章和手冊沒有提高框架的一個字 同時JSP 開發人員使用像Struts的框架 ASP開發人員使用 net 看起來好像這些概念都廣泛被PHP開發人員所了解 這就說明了PHP實際上到底是多專業
總結什麼問題?
對於非常小的項目 它可以是一個十分符合人意的編程語言 但是對於較大的和更為複雜的項目 PHP就顯出他的薄弱了 當你不斷地摸索之後 你會發現筆者提到的某些問題的解決方案 所以 當解決方案已知之後 為什麼不能修正他呢?另外為什麼這些修補不在手冊中提到呢?
一個開源的語言十分流行是一件好事 但不幸得是 它不是一個偉大的語言 筆者希望所有的問題能有一天得到解決(也許在PHP ?) 然後我們就將擁有一個開源語言 他既開源 又好用
到現在 當你要啟動一個多於 個腳本頁面的項目的時候 你最好考慮C#/ASP NET 或者 Java/JSP或者也許Python同樣是一個更好的選擇
lishixinzhi/Article/program/PHP/201311/21371
為什麼程序員鄙視php
主要原因是PHP程序員大多在接私活很忙吶!很難接私活的JAVA、C#程序員才會在論壇,qq群起鬨。
在工作中,很多公司隨着業務的增加與需求多樣性,有些企業就是要求用PHP開發,所以很多開發公司都是跟着市場走,主流的編程語言java與PHP碰面,多數情況下java程序員都不喜歡PHP程序員。
PHP號稱世界上最好的編程語言,在java程序員覺得PHP能開發的,java同樣能開發,而且比PHP還好,所以不認為PHP是世界上最好的編程語言,java才是世界最好的編程語言。
java面向對象在編程語言中支持是最好的,雖然PHP也是支持面向對象,但是在真正的大型項目中,多數人都會選擇java編程開發。
java在多線程高並發實戰效果是最好的,我們也知道PHP也是可以實現多線程高並發功能,但是這些都是針對中小型網站,像大型商城在線購物系統,java可以完美實現並滿足目前多人在線下單數量功能。
java編程語言複雜,需要大量學習精力,PHP編程語言簡單,在開發中不需要太多配置環境。
其實每種編程語言都有它本身的優勢與價值所在,當你正真領悟一種編程語言,你才知道這種語言的正真用處。
為什麼有些程序員看不起PHP這門語言
背後沒有大公司支持,例如微軟C#、甲骨文的JAVA,這些就有顯赫的背景。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/183412.html