-
1 # 科技book
-
2 # 精緻碼農
還在埋頭寫 PHP 的人可能沒感覺,但跳出了PHP的人接觸了像C#這麼優美的語言後,就再也回不去了。會感嘆寫 PHP 的日子裡就是在浪費生命啊!
-
3 # 東方新思維
寫過C/C++,PHP、Java,對比一下,PHP確實是最容易上手的程式語言(注意:我沒有說最簡單),我從C++轉PHP,只花了2個小時熟悉一下語法,然後就開始寫程式碼了 。
我理解主要原因如下:
1)內建API很完備基本不要去找第三方庫,這對初學者來說,方便很多,效率高很多,畢竟找個第三方庫要熟悉、要研究,總歸不放心,語言直接就有了,很多人都是直接google一下API然後拿來就用,我開始也是這樣的。Java ?我們一個專案有100多個第三方包。。。。。 ,而且這100多個第三方包還是從幾百個包中挑出來的,可以腦補一下初學者自己去選第三方包!
2)程式設計簡單初學者拿個php寫個面向過程的指令碼,只需要查查API就可以了,30分鐘搞定;能快速搞定一個事情,能讓人產生成就感,這個非常重要;至於面向物件麼,後面慢慢學也不遲呀。C++和Java的面向物件對於初學者來說簡直就是噩夢,物件都沒有你跟我談面向物件 ?如果用C或者C++寫面向過程呢? 嗯,除非你寫hello world,否則請先好好看看《UNIX環境高階程式設計》《Linux系統程式設計》。不懂作業系統,你就別想寫C和C++程式,到一邊寫hello world或者冒泡連結串列這類簡單和資料結構玩去吧 。
3)併發和記憶體管理簡單(注:以下經驗來源於PHP 5.3,現在是不是這樣不清楚)併發:nginx + php-fpm,完美的解決了大部分的併發問題,程式設計師只要關注寫業務邏輯即可,PHP中要用執行緒或者程序,要麼是很特殊的情況,要麼是閒的蛋疼;Java 和 C++ ?寫併發寫的吐血,執行緒、鎖、可見性、非同步IO、Reactor模式......搞清楚這一堆你才能玩,一不小心出個問題都不知道怎麼查。記憶體管理:JVM的垃圾回收沒問題一切都好,有問題定位和調優就蛋疼了,平均一年有3 ~ 5次搞這個,24G記憶體怎麼dump?dump後怎麼從生產伺服器傳到開發伺服器?傳下來後用MAT開啟耗費3個小時怎麼辦?
不要問我,我也不知道怎麼辦!
C和C++ ?碰上記憶體問題你就死菜了:1年都定位不出來,然後只能另外寫個指令碼定時每月重啟,這樣的事情我不會告訴你是在哪家公司遇到的,因為我怕被打!而我們的PHP業務運行了3年,記憶體洩漏記憶體爆掉都發生過,很容易就定位出來了,但從來沒有說要調優。
但寫好PHP並不容易,事實上用PHP把業務寫完很容易,但用PHP把業務寫好的話,需要非常紮實的基本功,要求寫程式碼的人邏輯非常嚴謹:
1)變數名本來是report,結果寫成了reprot,執行OK,結果就是不對,面對一屏花花綠綠的程式碼,你要是能一眼看出那就是天才!
2)==和===,不說了,新手100%必中,高手80%踩中!
3)isset vs empty,和上一個類似你以為這幾個問題看起來都是小問題?圖樣圖森破,這些問題原理很簡單,但是導致的業務問題就千奇百怪了:有的使用者正確有的使用者不正確,有的使用者早上正確但下午不正確,有的使用者用Chrome正確但用Firefox就不正確!定位出來問題後,要麼你想打自己三個耳光,要麼你想打寫程式碼的三個耳光!所以我認為PHP是最快上手的語言,但PHP同時也是對嚴謹性要求很高的語言!當然,對初學者來說,PHP確實是世界上最好的語言 !
-
4 # 昊識網路
招人恨的原因是因為php簡單有效又抗造,入門快,開發除錯快——不用編譯,改完程式碼直接重新整理立竿見影,上線部署快——直接同步原始程式碼到生產伺服器即可,原生支援熱部署。執行速度確實比不上編譯型語言,但是在非cpu密集運算場景下這個問題基本可忽略不計。我覺得php就像ak47,足夠簡單、穩定,維護成本低,適合大規模使用。
-
5 # 一隻野生程式汪
我的理解主要有一下:
一.原生的PHP程式碼巢狀在HTML程式碼上,這樣的寫法,邏輯和展示顯得非常的混亂,而且程式碼也很難維護。
二.詬病 PHP 的人普遍對 PHP 沒有深入的實踐認知,對 PHP 的認識停留在上述的小白用法上。覺得 PHP 太簡單。
三.PHP 中最著名的幾個開源軟體架構老舊,程式碼難看。如 WordPress、Discuz! 等,因為出現在 PHP 尚未面向物件階段,同時因為需要相容現存各種外掛,無法做較大的架構更新。給人的印象是用 PHP 只能寫出這樣混雜的程式碼,PHP 是解釋性語言,執行速度不如編譯型語言快速,效能上會被歧視
既然如此,那麼PHP就真的一文不值了嗎?不是的,PHP也有很多優秀的框架比如Laravle,Yii,ThinkPHP等,PHP遭人詬病的原因 並不是語言本身的緣故,而是 從業人員高階程度的緣故。
PHP也可以開發中大型專案:
第一,也是最重要的,要用 composer 分成獨立的包,透過分割問題域,將每個領域的問題控制在一定範圍內。如最開始的截圖中展示,要將專案分成不同領域範圍,每個領域的程式碼分到獨立的包中,擁有一個獨立的名稱空間。比如,使用者相關的基礎功能,如使用者 model 和響應 migration、登入註冊等 action 等作為使用者相關基礎功能放到獨立包。使用者中心,包括使用者中心的 migration、model、api、網頁、css、js,放到獨立的包。文章編輯和展示功能放到獨立的包。包和包之間可以定義明確的依賴關係。分成獨立包後,專案變得再大,也不會成為一鍋粥,而是將各自的複雜性控制在了一定的範圍內,方便維護和團隊協作。其次,包要有明確的結構規定,形成團隊的一致理解,使得不同包的負責同學可以很容易地相互理解,必要時候可以相互增援。舉個實際的例子,以便於理解:composer.json,定義這個包本身依賴了哪些其它包。deployment 目錄,比如這個包依賴了哪些 PHP 擴充套件。有了這些定義,可以編寫指令碼一鍵生成 Dockerfile,生成需要的 Docker 映象,一鍵生成 systemd 服務。load.php 或類似指令碼,定義這個包應該如何載入、註冊和本包相關的必要的程式碼。比如註冊路由、事件、模組等。migration,用來說明如何建立這個包相關的資料庫表。Model 目錄定義資料庫表對應的模組Http 目錄,定義展示網頁相關的 ControllerApi 目錄,定義透過 api 訪問的 ControllerAdmin 目錄,定義管理介面View 目錄,定義和網頁展示相關的 View如果專案過大,一個專案包過多,也可以考慮採用微服務架構,進一步隔離複雜度。如我最開始所說,PHP 從有了名稱空間,到 composer 的流行,到 PHP 7,已經可以管理有序地開發中大型的專案了,我創業多年的專案 芝士圈留學 就是一個很好的例子。
首先,絕大多數系統的效能瓶頸並不是在 app 的執行,而是資料庫等 IO 訪問。其次,如果資料庫可以承受,用十幾臺機器執行 PHP,就可以承載每秒 10k 的訪問量。而每秒 10k 訪問量,每天就有好幾十億訪問了,這個業務量也太讓人羨慕了。如果嫌 PHP 每次都要從頭載入、解釋、執行程式碼,可以遷移到 swoole 避免程式碼重複載入的時間浪費,可以非常可觀地提高執行效率。最後,想和各位 PHP 分享的是,PHP 社群,從核心團隊到開源社群,都是非常活躍的。因此我們看到最近幾年,PHP 在不斷快速的進化和改善中。
-
6 # 此使用者今天愛吃肉
不要侷限於某一種語言,都是工具而已,你要在意的是:當需要使用的時候,如果最快的能把這門語言用起來。
語言只是表象,背後的計算機技術還是共通的。
不要拘泥於表象
-
7 # 企蝶
C#就是個笑話,也就微軟的水軍在喊喊...php一路走來都是開源.C#快走到絕路了再開源有啥意義?等使用者量上去還不是開始拿起鐮刀收割了??看一門語言還有一個最重要的得屌絲得天下..背後發起者是處於什麼利益角度考慮..為什麼c++能經久不衰?跟php一樣始終保持初心,開源改變世界..再提一壺java真的可惜了被甲骨文收購..
回覆列表
每個語言都有各自的特長。而php在web開發是很不錯的選擇。因為PHP的部署實在是太簡單了,java各種編譯,打包war,jar之類,搞半天,部署出來一個很簡單的網站,人家php上傳安裝包,一鍵配置,中型規模的網站就ok了。你說這麼簡單,多讓人恨。託管公司也很喜歡PHP,其中許多公司向其客戶提供了用於管理MySQL資料庫的PHPMyAdmin。
PHP在1000萬臺物理計算機上驅動了大約20億個站點,將世界從PHP 5.0轉換為PHP 7每年將節省15B kW小時,並減少7.5B kg的二氧化碳排放。這表明PHP 7效率的提高對全球能源消耗產生了重大影響。
總之,目前php是web開發的主力語言,雖然,現在流行的語言是python之類的人工智慧語言,但是,快速建站web後臺,php依然是目前最有快讀輕便優勢的。
現在app打包,很多也只是在本地渲染前端,所以,web端只需要api介面,php對客戶端的弱勢,可以透過本地互動來彌補, web後端+本地客戶端互動。這樣的架構,php對中小企業來說,也是有快速簡單開發優勢的。
最後,需要說明的是,對於開發者來說,不要糾結那門語言,每個語言都有各自的使用場景。能把事情做好,就是最好的。一般優秀的開發者總會掌握兩個以上開發語言,加油吧!學浪。