Swoole 核心貢獻者:Twosee 訪談錄:視PHP 為初戀、為疫情而蓄發
GOTC 全球開源技術高峰會的講師能有多酷?
「程式語言的藝術」分論壇講師陳曹奇昊,1997 年出生的Swoole 核心貢獻者和PHP 核心貢獻者;是程式碼狂人,影迷、科幻迷、FPS 遊戲愛好者;初戀也超拽——PHP 語言是我的初戀,沒有她就沒有今天的我,誰會覺得自己的女朋友不是世界上最好的女朋友呢……
話不多說,訪談正式開始:
看到您的照片,這個髮型很有個性,平常有哪些興趣與嗜好?為大家詳細介紹一下自己吧。
我的真名叫陳曹奇昊,網名 Twosee,是 Swow 專案的創始人,也是 Swoole 的核心貢獻者和 PHP 核心貢獻者,同時還是Swoole 核心開發組和PHP 核心開發組的成員。興趣使然,我平常除了 PHP 社區,也活躍於非同步網路 IO 相關的各大開源專案社區,現在也是 libuv 專案的貢獻者。
在外人看來我可能就是個代碼狂人,其實我還是個影迷、科幻迷、FPS 遊戲愛好者,雖然瘦宅但宅不至死,體測成績優良,偶爾也會打打籃球。
至於這個獨特的髮型,其實是疫情期間立了 Flag,疫情不翻篇不理發。但隨著疫情在國內日漸平穩,甚至現在我也打完了疫苗,頭髮也已經剪短有一些時日了,我覺得這也是一件相當值得高興的事。
感覺您的英文名字也很有個性,請問 Twosee 這個名字有什麼特殊的意義?
我的真名是陳曹奇昊,姓氏的首字母是 CC,很多同學也這麼叫我,於是就起了比較好註冊的名字叫 Twosee (諧音Two C),就是兩個C 的意思。有個更有趣的事是,我沒想到取這個名字這麼久以來,第一個直接猜出我名字意義的人居然是 PHP 內核的主要貢獻者 Nikic,他說我的名字讓他想到了動畫《叛逆的魯路修》中的人物 C.C.,而這部動漫正好也是我最喜歡的動漫之一。
覺得自己最大的特色就是「帥」還是「會寫程式」?
我自己希望自己能成為一個豐富而有趣的人,而不僅限於他人給定的標籤。其實很多時候我並不覺得自己是個典型的程式設計師。在寫程式碼以前,我寫過書法、寫過小說、畫過漫畫、做過動畫、送過外帶、做過設計也做過產品。
而我寫程式的原因特別簡單,只是因為我在大學時期想做一個系統,我設計規劃好了一切,卻發現沒有人能幫我寫,我不得不自己上。我涉足過這麼多的領域,只是在寫程式碼這條路上幸運地走得更遠了一些。從中我體認到了,選擇確實比努力更重要,但前提是我們得有足夠的積累,不斷地受挫和試錯,最終才能選對努力的方向。
是什麼時候開始學習 PHP 的?第一次為 PHP 核心做貢獻是在什麼時候,當時做了什麼?
應該是大二下到大三(17年)開始正式學習程式設計的,第一個選擇學習的就是 PHP 語言,可以說 PHP 就是我的初戀了。
18年底我提交了第一個針對 PHP 內核修復補丁,當時我已經是 Swoole 的活躍貢獻者了,因此對於各種網路協定有了一定的研究,偶然發現 PHP 的 MySQL 客戶端在傳送請求包給伺服器時,包尾存在一些不必要的額外字節,於是就給優化掉了。
由於我的主要精力長期在研發 Swoole 上,其實我給 PHP 核心貢獻的程式碼量相對不算很多。我個人比較喜歡提交一些技術性相對強一些的補丁,有時候修改一行程式碼就需要對 PHP 核心的許多方面有足夠的了解,非常的費時。後來在某次日常的 PR 中,我突然被邀請加入了官方開發團隊,我覺得這對我來說這是一個很高的榮譽和認可,所以直到現在我每天都會盡量抽出一些時間去關注 PHP內核的相關動態。
“PHP 是最好的語言嗎”,為什麼?
這個梗的傳播可以說是相當廣泛,甚至已經出圈,因為我也常被身邊的人問到這樣的問題,而他們大都不是程式設計師。藉著這個機會,我也來好好回答這個問題。
我看過很多程式語言專家對於 PHP 的評價,沒有例外,它們都認為 PHP 是一門糟糕的語言,而對應這個問題的「PHP 是世界上最好的語言」這句話也成了很多人用來嘲弄 PHP 的口號。
PHP 早期的語言設計不僅存在諸多缺陷,也留下了許多歷史包袱。而且,它沒有任何財力雄厚的大公司主導,全靠世界各地的開源愛好者貢獻。既沒有穩定的經濟支撐,也缺乏足夠的宣傳資源。
但同時不可否認的是,儘管如此,PHP 仍是最受歡迎的程式語言之一,而 PHP 社群長期以來的成績是有目共睹的:PHP 7使得大部分 PHP 應用都可以近乎免費地得到巨大的效能提升;PHP 8的 JIT 如約而至,使得 PHP 的計算表現極大增強;越來越多來自社區的語言專家的活躍參與,PHP 的語言特性得到了大量改進。
PHP 現在被官方重新定義為通用腳本語言,PHP 也不再只是 WordPress,它還有 Composer、Symfony、Laravel、Swoole、Hyperf 等等一系列現代化生態。士別三日,也就是更刮目相待──很多人仍在用看 PHP5甚至更早版本 PHP 的眼光來看現在的 PHP,而這些版本是有失公允的。
能發現原先的不足,也意味著 PHP 未來有更大可能提升的空間。此外,我認為衡量語言或是開源專案是否有前景,很好的方法是看它的社群核心維護團隊是否活躍。這幾年我也見過了很多紅極一時的開源項目,但它們都因為社區核心維護力量的突然離去而猝死,只留下一地雞毛。但如果你訂閱了 PHP 官方郵件列表,或是關注 PHP 框架社群的話,你會發現你根本無需對此憂慮,新血液的湧入、活躍而激烈的討論,二十五年如一日,這就是最好的證明。
總而言之,PHP 絕不是就該問題意義上的「最好的語言」,但 PHP 總是在成為更好的語言的路上執著地前行著,這同時也是一種責任和擔當。
那為什麼很多 PHP 程式設計師還是會把「PHP 是全世界最好的語言」這句話掛在嘴邊呢?我認為一部分人是被黑多了,乾脆也加入進去,開始自黑,我覺得這些 PHP 程式設計師是溫和而可愛的,他們足夠自信,又不介意別人加入,大家都得到了快樂。還有一部分是像我這樣,覺得 PHP 語言是我的初戀,沒有她就沒有今天的我,誰會覺得自己的女朋友不是全世界最好的女朋友呢?相較而言,很多端起碗吃肉,放下筷罵娘的人,才是可恥的。
最後,我想提到的另一個有趣的事是,「PHP 已死」這個口號就和這個問題一樣流行,這一口號在1995年和 PHP 語言一同誕生。
和 Swoole 是怎麼結緣的?作為核心貢獻者,您現在對 Swoole 的貢獻佔比有多少?
我上大學的時候,學校的各種系統像是上個世紀的產物,教務系統在搶課時也總是崩潰,我覺得這些系統太爛了,我寫一個都比它好。於是從那時我開始自學編程,然後用 PHP 為學校寫了一套統一全校所有老系統的新的統一系統,然後去找了學校網絡中心的領導談,最終獲得了學校的許可,但我得自己想辦法在全校推廣,由於新系統非常好用,形成了口碑效應,不久之後全校就有80%以上的本科生每天都在使用我寫的系統。
但隨著我對網路程式設計的深入理解,發現 C10K 問題確實沒有那麼簡單,PHP-FPM 單機服務也一樣無法承載搶課時的高並發,這時我發現了 Swoole 這個項目,於是著手開始學習。
其實我早期對 Swoole 的大部分貢獻,是我在用 Swoole 開發應用的時候偶然發現了 Swoole 內核 BUG 並修復的結果。而我對 PHP 的貢獻,都是我在發展 Swoole 擴充時偶然發現了 PHP 核心的 BUG 並修復的結果。
我認為很多程式設計師都是有成為開源專案貢獻者的潛性的,但是他們在遇到開源專案的 BUG 時鮮有人會選擇死磕,這是讓我感覺比較可惜的一點。
這幾年我對 Swoole 核心做了大量的重構和最佳化工作,是 Swoole 協程版本的主要開發者之一,我目前也是除了韓天峰老師之外 Swoole 專案最大的貢獻者。此外,我覺得其實開源專案的貢獻也不只能單單看程式碼提交,版本管理、維護社群、撰寫文件、回答問題等工作也相當重要,這些工作不比貢獻程式碼輕鬆。我覺得很多想要給 Swoole 開源專案貢獻,卻無從下手的小夥伴都可以先朝這些方向進行努力,過程中對於核心的了解逐步加深,產生程式碼上的貢獻也會是水到渠成的事情。
今年 7 月,陳曹奇昊將作為全球開源技術高峰會 GOTC 上「程式語言的藝術」分論壇講師,為大家帶來《What's New in PHP 8》主題演講。
PHP 8 帶來了JIT、註解、聯合類型、命名參數等大量的新特性,這也意味著PHP 8 擁有更好的性能,更豐富的語法、更強大的類型安全支援。而悄然間,PHP 8.1 也已在路上,枚舉和協程的引入為 PHP 世界再添亮色。
在擁有了 JIT 之後,PHP 效能最佳化之路是否已經走到了盡頭?
隨著協程特性的到來,PHP 離一個完整的協程程式系統還有多遠?
Event loop、協程 Hook、CPU 調度這些已在 Swoole 中被驗證的技術是否會在將來被引入?
或許,一切都才剛開始,前方仍是無盡的星辰大海…
這次分享將為大家帶來 PHP 持續迭代的最新消息。
此外,「程式語言的藝術」分論壇也將邀請Java、PHP、Rust、C 等主流程式語言的業內一線專家,為不同技術領域的開發者分享相關程式語言的最新動向,深入剖析各大程式語言在國內的發展趨勢。
GOTC,the Global Opensource Technology Conference,全球開源技術高峰會。
該會議由開源中國社區聯合 Linux 基金會發起,邀請 10 重量級開源基金會與開源社群深度參與,涵蓋 100 公司的相關開源經驗,涉及優秀開源專案 300 。
組成這場開源盛會的專家主要是開源領域內的知名人物,相關的分享議題也聚焦開源,包括開源的技術、開源的營運與治理、開源的發展趨勢、開源技術的實踐、開源的商業化等。
這次會議也史無前例地邀請了當今世界幾大頂級開源基金會負責人同時參與圓桌,共同討論開源新生態。
更有 Linux 創辦人 Linus Trovalds 將分享 Linux 誕生 30 年以來他的心路歷程與開源洞見。
相關推薦:
鳥哥惠新宸:從Web初學者到PHP核心開發者-2021全球開源技術高峰會
推薦學習:《PHP影片教學》