検索
ホームページ見出しPHPバード兄さん:昔はプログラミングに「向いてない」人間だった

Hui Xinchen@Laruence は、中国で最も影響力のある PHP 技術専門家であり、PHP 開発チームの中心メンバー、PECL 開発者、そして Zend Company の外部コンサルタントです。彼は Yahoo、Baidu、そして現在は Sina Weibo でプラットフォームおよびデータ部門のチーフ アーキテクトおよび PHP チーフ コンサルタントとして働いてきました。 Hui Xinchen は PHP NG のコア開発者であり、PHP5.4 および 5.5 の主要開発者です。 PECL 開発者として、Yaf、Yar、Yac、Taint などの多くの優れたオープンソース作品に貢献しており、APC、Opcache、Msgpack などのプロジェクトのメンテナーでもあります。

インターネットで PHP チュートリアルを検索する初心者から、PHP 開発チームの中心メンバーに至るまで、Hui Xinchen はプロセス全体が「モンスターと戦い、アップグレードする」ようなものだと感じています。 Javaと同じくブルーカラー言語として知られるPHPは、誰もがプログラミングできる時代においては、より多くのプログラマーを育成できるゆりかごであり、技術の進歩を推進できる人材がさらに輩出されるはずだと氏は考えている。彼は、PHP 言語と Zend エンジンに関連する研究、テクノロジー、ニュースをブログ Fengxuezhiyu で共有しています。左手に暗号、右手に詩。

PHPバード兄さん:昔はプログラミングに「向いてない」人間だった

#Q: プログラミングに興味を持ったきっかけは何ですか?

私が初めて「プログラミング」をしたのはXiaobwang学習機だったようです。その後、大学でコンピューター サイエンスを学び、大学院生のときは、学校の多くの中等学部の Web サイトを含む、多くの Web 開発の仕事を積極的または受動的に担当しました。その際、学内BBSのメンテナンス等を行います。考えてみると、私がプログラミングに夢中になったきっかけやきっかけはひとつではないようです。この業界で働くのがとても自然で、嫌だとは思わなかったのでそのまま続けました。

Q: PHP に興味を持ったきっかけは何ですか?どのようにして PHP 開発チームの中心メンバーになったのでしょうか?

大学院生の頃、ウェブサイトを作りたいと思い、作り方が分からずネットで検索したところ、たまたま作り方を教えてくれるPHPのチュートリアルを見つけました。シンプルな Web サイトだったので、それに従ってみました。調べた結果、インストールとデプロイが非常に便利であることがわかりました (当時はそのような一元的なデプロイ ツールはありませんでしたが、LAMP のデプロイ方法に関するチュートリアルはたくさんありました)。 、コードを書いてテストします。構文は C 言語に非常に似ており、さらに API の名前も libc API と同じです。こうして私と PHP との切っても切れない絆が始まりました。


それは 2011 年のことです。当時、Ap (Yaf の前身プロジェクト) は Baidu 向けに開発されており、Baidu の内部でよく使われていたため、PECL に貢献して修正することを考えました。しばらく学んでから、その名前を Yaf に変更し (PHP には多くのフレームワークがあるため、この名前も少し自虐的です)、PHP メール グループに電子メールを送信しました。英語は苦手で、そのプロセスは依然として非常に曲がりくねっていますが、幸いなことに、当時はピエール・ジョイが私を大いに助けてくれて、ヤフをPECLに入学させてくれました。


さらに、Yaf を提出する前に、実際に PHP のソース コードを勉強していたため、多くのバグや修正も提出しました。たとえば、ある日の正午、Rasmus ( PHP の父) が IRC にいたところ、バグが見つかったとのことで、ほぼ 5 分で修正を提供しました。


徐々に何人かの人と仲良くなり、全員の信頼を得た後、申請を開始し、PHP のコア コードを提出する許可を取得し、PHP の直接開発とバグ修正に参加しました。 PHP を開発し、開発チームのメンバーになりました。


核心に関しては、実際、それは相互信頼のプロセスでもあります。誰もがあなたの仕事を認めれば、あなたの意見を尊重するでしょう。私は徐々に Dmitry Stogov に精通し、Zend のコア部分の提出許可を取得し、多くのコアなバグ修正と新機能を提出しました。その後、私は Zend の外部コンサルタントになり、徐々にコア開発者になりました。


モンスターを倒してアップグレードするような感じですね。


Q: Yaf はどのような状況で開発されましたか?当時、Baidu はどのように Yaf の開発をサポートしましたか?

Yaf が登場する前は、実はフレームワークの使用の有無について古典的な議論がありました。「フレームワークを使用するとパフォーマンスが低下し、フレームワークを使用しないと開発効率が低下する」というものでした。

#当時、Baidu には、オープンソースの Yii、ZF などを含む多くの内部フレームワークや、一部のチームが独自に作成したフレームワークがありました。 1 つの問題は、クラス ライブラリでは、一部の周辺機能が相互に通信できないことです。

もう 1 つの理由は、多くのフレームワーク作成者がフレームワークをリリースした後、さまざまな人々がフレームワークにさまざまな変更を加えることに気づき、その結果、フレームワークがリリースされると、時間の経過とともに、フレームワークが次のようになります。さまざまな亜種が出現し、その後の統一アップグレードが不可能になっています。

そこで、PHP 拡張機能を使用してこれらの問題を解決するフレームワークを実装することにしました。もちろん、この拡張機能を作成する前はあまり自信がありませんでしたし、パフォーマンスがどの程度向上するかわかりませんでした。拡張がもたらす可能性があります。幸いなことに、最終結果は非常に良好です。


Q: Yaf を記述するために C 言語を使用することにしたのはなぜですか?

PHP は C 言語で書かれているため、その拡張機能も C 言語で書かれているため、Yaf を書くために C 言語が選択されました。

Q: なぜ百度を辞めて新浪微博に来たのですか?

これには実際には多くの理由があります。たとえば、当時私は Baidu の T7 でしたが、ビジネスにあまり関与していないと感じていました。やるべきことがたくさんあって、少し無駄に感じました。

さらに、私は当時、Baidu の商業検索部門に所属していて、大規模なトラフィックを伴うシステムに直接触れていなかったので、より実践できる大きなプラットフォームを見つけたいと思っていましたが、たまたま Weibo がそれを見つけました。そのようなプラットフォームになります。

Weibo に来てから、これまでに経験したことのない多くの課題に直面するようになり、自分の知識がより大きな舞台で活用できるようになったとも感じています。

Q: 現在、Sina Weibo で何を担当していますか?

私は現在、Weibo テクノロジー部門に所属しており、基本的なサービス チームを率いています。最初の 2 年間の主な仕事は、Weibo のパフォーマンスを最適化することです。 Weibo LAMP 各種基本フレームワーク、ツール開発、環境最適化、仕様策定など。

過去 2 年間で、Weibo の LAMP アーキテクチャは安定し、全体的なパフォーマンスは数倍向上しました。また、独自の高性能 LAMP 全体ソリューションもあります。したがって、LAMP を最適化するための作業が少なくなります。現在は、キャッシュ中間層、トランスコーディングサービス、通信プラットフォームなどのインフラストラクチャの研究開発に主に焦点を当てています。

質問: PHP7 (PHPNG) は、Sina Weibo プラットフォームで PHP を使用する際のニーズと問題点を重要なフィードバックとして考慮しましたか?

もちろん、これは真実です。私が開発チームに加わって以来、他の多くのメンバーと同様の議論をしてきました。私はパフォーマンスが重要だと考えていますが、新機能が非常に重要であると考えている人もいます。 , そうなると、新機能がパフォーマンスに影響を与えるときに論争が起きるでしょう。

私はパフォーマンスの向上に非常に夢中になっています。そのため、後にドミトリー・ストゴフとさらに協力するようになりました。彼も特にパフォーマンスに関心を持っていたからです。

私がパフォーマンスを気にする主な理由は、1% のパフォーマンス向上が中国最大の LNMP プラットフォームである Weibo にもたらす価値をよく理解しているからです。 Weibo の全体的なパフォーマンスは 2 年前に比べて大幅に向上しましたが、開発効率に影響を与えずにさらなる改善を実現するには、言語と環境のパフォーマンスの向上のみが必要であると認識しています。したがって、この部分が Weibo の PHP に対する要求です。

WordPress 5.6 と比較して、PHP7 は実質パフォーマンス (QPS) が 100% 以上向上しています。来年、PHP7 がリリースされると、Weibo 全体の LAMP プラットフォームのさまざまなビジネスが可能になると思います。パフォーマンスも 100% 向上します。

Q: PHP7 (PHPNG) の開発に参加するプロセスはどのようなものですか?他の開発チームのメンバーとどのように協力していますか?

PHPNG は当時、秘密のプロジェクトでした。当初の参加者は Dmitry と私だけでした。当時私たちが取り組んでいた JIT プロジェクトのことを今でも覚えています。 PHP5 は効果が不十分だったので見送られました。はい、皆さん落ち込んでいます。

Dmitry さんは、ZVAL を再設計し、サイズを圧縮してメモリ使用量を削減するというアイデアがあると述べました。それで二人で話し合ったんですけど、実は僕らも毎日いろんなアイデアを出しているので、その時は「なるほど、このアイデアはいけるかもしれない」って思ったんです。しかし、まだあまり自信がありません。

当時の主なアイデアは、効果をテストするために実用的なプロトタイプを迅速に作成することでした。このプロセスでは、主にアイデアを話し合って、やりたい部分を実装し、マージします。

主な連携ツールは Skype ですが、彼はサンクトペテルブルクにいて時差があるため、電子メールでのやり取りや Github を介したコードのレビューも行います。

その後、プロジェクトがほぼ完了したとき、私たちは「これは良いアイデアで、うまくいく」と気づきました。その後、公になりました。その後は、アイデアがあれば RPC を送信し、パッチを送信し、投票して全員が反応し、マージするという通常のコラボレーション モードになりました。

Q: これまでに PHP7 に追加または削除された機能は何ですか?リリース前に他にどのようにパフォーマンスを改善できるでしょうか?

主にパフォーマンスの向上を提供する PHPNG ブランチに加えて、AST (抽象構文ツリー) のサポート、均一変数構文、64 ビット長の文字列のサポート、いくつかの新しい構文シュガーもあります。 、および最近のネイティブ TLS など。

PHP7 は 2015 年 10 月に正式にリリースされる予定です。その前に、zend_array を使用して Hashtable を直接置き換えるなど、再セクション化やソートを指定して iTLB を削減するなど、試してみたいアイデアがいくつかあります。たとえば、JIT (型オーバーターン) の最適化メソッドの一部を PHP に導入し、型固有の OPCodeHandler を使用して、コード データの局所性をさらに向上させ、キャッシュ ミスを減らすなどです。

もちろん、並行して取り組んでいる JIT プロジェクトもありますが、PHP7 がリリースされたときにこのプロジェクトが準備できるかどうかが非常に心配です。

Q: 新しいバージョンの PHP は、PHP6 から PHP7 に直接アップグレードされますか?なぜ?

主な理由は、PHP には PHP6 という開発バージョンがあったのですが、その後このバージョンが失敗してリリースされなかったことです。したがって、このバージョンは PHP7 である必要があります。

Q: Facebook がリリースした言語 Hack と PHP の関係は何ですか? Hack の目的は PHP を置き換えることですか?これら 2 つの言語の互いに対する利点は何ですか?

あまり問題ではありませんが、Hack は PHP ではありません。置き換えに関しては、彼ら(Facebook)はそのような考えを持っているかもしれないと思いますが、それはコミュニティがそれを受け入れるかどうかによります。

私は Hack についてはあまり詳しくないので、具体的にコメントすることはできません。

Q: PHP は学びやすく敷居が低いため、プログラミングに向いていない人が入ってきたのではないかと考える人もいますが、この見方についてはどう思いますか?

私はこの見方にはまったく同意できません。私も学部卒業時に開発の仕事を探していくつかのユニットの面接を受けましたが、当時面接を受けた人たちの目には私はただのプログラミングに向いていない人間だったのかもしれません。

しかし、PHPは敷居が低いため、「プログラミング」の結果がすぐに分かり、初心者にとってはポジティブなフィードバックやインセンティブ効果があり、興味のある人はさらに興味を持ちます。プログラムする人が増えれば増えるほど、誰かが現れてテクノロジーの進歩に貢献する可能性が高くなります。

さらに、将来のプログラミング言語は使いやすさを目指して開発され、プログラミングの敷居がさらに下がる日が来るかもしれません。

Q: 資格のある PHP エンジニアの知識構造はどのようなものですか?

以前、「PHP エンジニアは万能薬だ」という言葉があったことを思い出しました。実際、この言葉は PHP エンジニアにだけ当てはまるのではなく、すべてのエンジニアに当てはまるはずです。

知識構造は幅広くなければなりません。 Web 開発には、HTML、CSS、JS、SQL に加えて、Nginx、Linux、および Mysql の構成、メンテナンス、トラブルシューティングのためのいくつかの一般的な方法も知っておく必要があります。

Q: 技術力以外に、面接で重視する点は何ですか?

#私は明確な思考、コミュニケーション、スピーキングに特に注意を払います。実際、率直に言って、将来一緒に仕事をする場合に障害はあるのか、大きな成長の可能性はあるのか。


質問: phpe.net の元ウェブマスターである Chen Bole は、現在男性用の靴下を販売しています。あなたの将来の計画は何ですか?あなたはずっとプログラマーであり続けますか?

実のところ、私はとても怠け者で、あまり先のことは考えず、今は酔っぱらっています。だから、将来についてはあまり明確ではありませんが、今はまだプログラミングが好きで、自分の仕事を通じてみんなに利益をもたらし、コミュニティから賞賛されることが好きだと思っています。そして、これからもそうしていくつもりです。それ。

声明
この記事は开源中国で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。