私は長い間 JavaScript を断続的に学習していましたが、その時の苦痛は薄れ、今は PHP を学習しています (本を読むのではなく、Web ページを読む + 練習する) が、PHP は特に使いにくいと感じています。 JavaScript も PHP も設計が悪い言語として評価されていたことを思い出し、この問題を考えてみました。
返信内容:
まず最初に宣言しておきます。私は PHP を 2 年間書いてきましたが、構文にはかなり慣れています (複雑すぎて覚えるのが難しいため)。私は PHP のシンプルさと人気を高く評価しており、PHP のさまざまなフレームワークが好きですが、PHP の構文はあまり好きではありません。
=============
個人的には、js の構文とコア API を好みます。変数の名前付けにお金をかける必要はありません。 . 関数は最初のタイプで、API は覚えやすく、最も重要なのは仕様とゲーム ルールがあることです。
もちろん、js にも欠点はあります。コールバック地獄が少し悪い、イテレータの導入が少し遅い、クラス構文が十分に甘くない、などです。いくつかの点では PHP と同じくらい使いやすいですが、すべて問題ありません。すべてゆっくり修正できます。
==================================
PHP はstart :
変数名の制限により、PHP を見るとすぐにキーボードについて苦痛を感じます。
変数名は大文字と小文字を区別しませんか、それとも関数名は大文字と小文字を区別しませんか?
コア API の命名はさらに悪く、PHP を書いた 2 年間は PHP 本を持ち歩いていました。
手動では、最も一般的に使用される文字列処理方法でさえ、熟練のレベルに達することができません。アンダースコアの名前付けを使用するべきか、キャメルケースの名前付けを使用するべきか、それともすべて小文字の名前を使用すべきか、それとも手続き型 API を使用すべきか、それとも oop スタイルを使用すべきか、常に考えています。 API;
ラムダを導入する前は、PHP は単純な string.replace(regex, fn) でさえも苦労しましたが、その結果、文字列を使用して関数を作成していました。または、関数名を文字列に書き込んで渡すのは非常に面倒です。
新しく導入された匿名関数は、パフォーマンスと使用法が従来の名前付き関数とは大きく異なります。
スコープがありません。チェーン、不正なグローバル、面倒なクロージャーの使用、すべてが排泄物にパッチを当てようとしているようなもので、とても醜いです。
==================================
私はよく知っていますPHP の構文と API の見解では、そのような分厚いパッチを適用する代わりに、最初からやり直してはどうでしょうか?しかし、それでも PHP と呼べるのでしょうか? 。
JS と PHP にはどちらも設計上の間違いがたくさんあります。
違いは、JS の進化によって古い落とし穴が埋められ、新しい落とし穴がほとんどなくなったことです。 PHP はすべてのバージョンで落とし穴を埋めていますが、常に不完全であり、新たな落とし穴が発生します。
【補足】
元の設計を見ても、PHPよりもJSの方が確実に優れています。ブレンデン・アイヒ氏は設計と実装にわずか 10 日しかかかりませんでしたが、それでもラスムスよりもはるかに高かったです。ラスムス自身は、これはただの遊びのためであり、デザイン言語のためではまったくなかったと述べた。
言語の特徴について少しだけ。 JS にはクロージャがあり、大きな欠点がたくさんある場合でも、多くの優れたライブラリやフレームワークを作成するのに十分なサポートを提供します。 PHPはこれまでクロージャを追加してきましたが、使いにくいのと同じくらい役に立ちません。
【追加】
@鲁小夫がコメントで PHP の大文字と小文字の規則について不満を述べました。「php は Unix スタイルに従っています。つまり、変数は大文字と小文字が区別されますが、関数は大文字と小文字が区別されません。センシティブ。" "。この「UNIX スタイル」については聞いたことがありません。
PHP の大文字化ルールの起源については、私が書いたこの記事を参照してください: なぜ PHP の大文字化ルールは非常に不規則なのでしょうか? · 問題 #29 · hax/hax.github.com · GitHub
あなたは言語の落とし穴を気にする必要があるほど進化しましたか?構文が違うだけじゃないの?
PHP の元のバージョンはテンプレート言語でした。 。 。
おそらく、ニーズは時代によって異なります。PHP の本来の目的は、動的な Web ページを迅速に作成するための言語を作成することでした。PHP では、文字列を記述するのではなく、コードを HTML に初めて埋め込みました。 PHP の創設者は当時頭を悩ませたかもしれませんが、今日の人々が MVC を普及し、ビュー コードとロジック コードの分離に忙しくなるとは予想していませんでした。 PHP のコンセプトは当時、動的な Web ページを作成する技術として非常に成功していたので、すぐにヒットしました。 PHP 自体は動的な Web ページのために生まれたものであると同時に、多くの点で他の言語とは異なる可能性があるため、PHP はすべてのバージョンで主流の汎用言語に発展しようとしています。よく言えば「成長」ですが、悪く言えば「穴を埋める」と言えば聞こえはいいのですが。
1 つは個人ホーム
ページ (最新の再帰的略語でも単に PHP: ハイパーテキスト
プリプロセッサ です。
もう 1 つは Java
スクリプト です。
から)
JS がユニバーサル中間言語になった今でも、PHP は Web しか実行できません。
実際、Brendan Eich はそれを実装しています。 JS の最初のバージョンでは検討されていましたが、PHP については、バージョン番号のアップグレードとパッチ適用以外に何も検討されていませんでした。
もちろん、Hack/HHVM は後継です。 PHP コミュニティの顔を叩きましたが、プロモーションがなければ役に立ちません
さて、PHP を見ると、必要なものがすべて揃っており (ジェネリックや ADT も追加された)、ハイエンド プログラミングのように見えます。
JavaScript を見てみると、それは Andres Hejlsberg と Erich Gamma の手によって作られたものです。
車輪の再発明に関して言えば、PHP
6 や ECMAScript
4 について聞いたことはありませんか?
これはjsがハッキングされた最悪の時期です
構文的に言えば、特に JSON の導入後は JavaScript が勝ちます。
C や Java に近いという観点から見ると、PHP の方がとっつきやすいです。
さまざまなライブラリを除けば、
JavaScript は非常に合理化されており、組み込みオブジェクトはわずかですが、ほとんどのプログラミング ニーズを満たすことができます。
PHP は、さまざまな組み込み関数や一貫性のない名前があり、肥大化しているように見えます。
PHP は世界で最高の言語です。
私は熱心な PHP ハッカーですが、あなたのハッキングには意味がありません。PHP を学んだ直後は使いにくいことをご存知ですか?使いにくい点を教えてください。
学習するときに先入観を持っていませんか? PHP の唯一の利点は、すぐに学習できることです (またハックしました)
言語は理解できないほど複雑ですか?