プログラマーは (一般に) 優れたプログラミング言語を、自分が最もよく知っている言語、または最も頻繁に使用する言語と定義します。私は PHP プログラマー、ジョンは JavaScript プログラマー、DHH は Ruby プログラマー、Schwartz と Randall は Perl プログラマーです。 プログラマーによって問題の見方は異なりますが、総合的に最良とみなされるプログラマーは常に 1 つまたは 2 つあります。
PHP 開発者として、PHP が軽視されているのを聞くたびに心が痛みます。
Web アプリケーションの言語として PHP を使用する必要がありますが、これは悪い言語であり、その使用を必要以上に推奨したりサポートしたりすべきではありません。
おっと、私が毎日使っている言語が悪い評価をされていると聞くと、自分が選んだ言語について、自分が同意していれば他人の評価は気にしなくていい、と言う人もいるかもしれません。本当にそうすべきではないと思います。この発言が意味するのは、言語と開発者がひどいだけでなく、私たち PHP 開発者もひどいということです。
それでは、他人の大きな口を封じるために具体的に何をすべきでしょうか? PHP 言語を尊重できるようになるのでしょうか? これを実現できるいくつかの側面を分析してみましょう。
1. すべてを壊す
PHP7 はすべてを壊します。 PHP 開発者は、バージョン間の下位互換性を破壊するという法則を受け入れる必要があります。広範な下位互換性が許可されない限り、PHP7 は非常に尊敬される言語となるでしょう。
1. 特定のコア言語を作成します
すべてのライブラリ メソッドを削除し、オブジェクト セット内のコア メソッドを保持します。 外部ライブラリや拡張機能を使用せずに、基本的な入出力、文字列処理、および数学のための優れた完全な言語を作成できる PHP7 を作成できるはずです。ライブラリ外の拡張は承認される必要があります。
2. すべてをオブジェクトとして扱います
Ruby、Smalltalk、および (主に) Java からオブジェクトを取得し、それをすべてオブジェクトとして扱います。 整数はオブジェクトであり、文字列はオブジェクトであり、それぞれに操作可能なメソッドがあります。Ruby と Smalltalk がオブジェクト間でメッセージを渡す必要があり、オブジェクト メソッドを呼び出すことが最善であるという概念が PHP には必要ないと思います。
3. 一貫した名前のメソッドとクラス
PHP に関する最大の不満の 1 つは、(needle,haystack) または (haystack, neede) または some_function() または function_some() を常にチェックしなければならないことです。 someFunction() を使用するには、一貫した形式を開発する必要があります。
4. 厳密にしてください
float 文字列をメソッドに渡してみませんか? これは警告です。
5. すべてが Unicode です
PHP6 のすべての文字列が Unicode であることは良いことであり、私は PHP7 も維持されるべきだと主張します。
6. 中心的な起動ポイント
すべてのコード実行の起点となるメインクラスまたは初期化を作成します。
7. C コードをクリーンアップする
私は C の専門家ではありませんが、PHP の C コードよりも Ruby の C コードについて詳しく知っていれば、PHP と Ruby の内部を簡単に理解できます。 私は PHP に精通しているので、独自の拡張機能を作成する方が簡単です。
8. eval() を取り除く
eval() は悪です。 これを使用している場合、これは間違った考えです。これにより PHPUnit が壊れます。今後は破棄してください。
9. 演算子のオーバーロードをサポート
すべてがオブジェクトであるため、開発者はオブジェクトを操作するメソッドを習得するだけで済みます。
10. 許可されるメソッド シグネチャ
真のメソッド シグネチャを許可するため、プログラマは異なるパラメータ リストまたは戻り値の型を持つ同じ名前のメソッドを持つことができます。
<ol class="dp-c"> <li class="alt"><span><span class="keyword">class</span><span> A { </span></span></li> <li> <span class="keyword">public</span><span> int </span><span class="keyword">function</span><span> doSomething(int </span><span class="vars">$a</span><span>, float </span><span class="vars">$b</span><span>) { </span> </li> <li class="alt"> <span class="comment">// Same as $a->*($b->to_int()); </span><span> </span> </li> <li> <span>int </span><span class="vars">$c</span><span> = </span><span class="vars">$a</span><span> * </span><span class="vars">$b</span><span>->to_int(); </span> </li> <li class="alt"> <span class="keyword">return</span><span> </span><span class="vars">$c</span><span>; </span> </li> <li><span>} </span></li> <li class="alt"> <span class="keyword">public</span><span> float </span><span class="keyword">function</span><span> doSomething(int </span><span class="vars">$a</span><span>, float </span><span class="vars">$b</span><span>, float </span><span class="vars">$c</span><span>) { </span> </li> <li> <span class="comment">// Same as calling $a->*($b->*($c)); since * is a method on each object $a and $b. </span><span> </span> </li> <li class="alt"> <span>float </span><span class="vars">$d</span><span> = </span><span class="vars">$a</span><span> * </span><span class="vars">$b</span><span> * </span><span class="vars">$c</span><span>; </span> </li> <li> <span class="keyword">return</span><span> </span><span class="vars">$d</span><span>; </span> </li> <li class="alt"><span>} </span></li> <li><span>} </span></li> </ol>
11. PHP 仮想マシン (PVM) を構築する
私は言語設計者ではないので、これが可能かどうかは完全にはわかりませんが、PHP 仮想マシンがあればいいでしょう。 PHP バイトコードを実行でき、明示的なヒープとスタックが可能です。
12. コピーオンライト (COW) の削除
COW は非常に馴染みのない概念であり、その存在を知らないと、新しい開発者にとって問題が発生する可能性があります。
13. PHP 公式リリース仕様
W3C HTML5 仕様と同様に、PHP 仕様では、開発者が独自のバージョンの PHP を実装し、コンパイルする特定のサンプルが存在することを保証します。
2. 言語を尊重する
私たちは言語を尊重するよう努めるべきです。 私たちは、非常に強力な機能を備えた PHP7 を開発する開発者を募集するために最善を尽くすべきです。 私たちは巨大なコードを安全かつ読みやすくし、新しい開発者に正しい方法でプログラミングすることを教える必要があります。
Ruby の狂気については知りませんが、Ruby 言語を尊敬しています。 私は Ruby on Rails の威力を認めていますし、Ruby on Rails は非常に優れたフレームワークだと考えていますが、私の好みではありません。評判の良い開発者からの認知や尊敬を得ることができれば、PHP はさらに進化するでしょう。
3. 開発者を尊重する
上記の理解から、私たちは非常に尊敬される PHP 開発コアチームを必要としています。 彼らはコードをリリースし、講演し、物事の「正しい方法」を人々に示し、このチームはすぐに多くの開発者の尊敬を得るでしょう。
結論
PHP の将来に興奮しています。 私のアイデアが実現されるかどうかは非常に疑わしいですが、社会全体に役立つと心から信じています。 世界第 2 位の Web サイトが、PHP による素晴らしいコミュニティの構築を支援していると発表したとき、私はとても興奮しました。 PHP は消えることはなく、改良に努め続ける限り、いつかは PHP が開発者から一般的に尊敬される言語になるでしょう。
最後に、私は言語デザイナーではありません。 私のアイデアはまったくナンセンスだと思われるかもしれません。 私のどこかが間違っている場合は、丁寧にお知らせください。喜んでお話しします。 PHP が高く評価され、強力で高速かつ効率的な言語になるよう、協力していきましょう。コンパイルにエラーがある場合は、修正してください。