0

この記事を読んだ後、私は疑問に思っています。PHP はインタープリター言語であるといういくつかのフォームや記事を読んでいましたが、 Stackoverflowでも同じことがわかりましたが、ここから読むと混乱しました。特定の認証済みリンクまたは参照を使用して、これについて説明してもらえますか。

3 コメントの後の追加:- 記事には次のように記載されています:-

PHP became a compiled language in the year 2000, when PHP 4 was released for the first time. Until version 3, PHP source code was parsed and executed right away by the PHP interpreter.

言及された記事を見ずに、そのまま答えを出さないでください。この記事を読んで疑問に思ったのですが、この記事の内容にさらに興味を持ち、

4

3 に答える 3

5

そうではありません。
あなたが言及した記事では、実行を高速化するために PHP を C++ にコンパイルするための Facebook のツールである HipHop について説明しています。


編集:

記事で説明されているように:

PHP は、PHP 4 が初めてリリースされた 2000 年にコンパイル済み言語になりました。バージョン 3 までは、 PHP ソース コードはPHP インタープリターによって解析され、すぐに実行されていました。最初のフェーズでは、PHP ソース コードを解析し、Zend オペコードとして知られるPHP コードのバイナリ表現を生成します

これは、PHP コードが解析されて直接実行されるのではなく、最初にその場でコンパイルされることを意味します。
そうです、何らかの方法でコンパイルされますが、内部的にはユーザーの介入なしで、Java や C++ などの実際のコンパイル済み言語とは異なります。

個人的な解釈ですので、違っていたらコメントください。

于 2012-05-29T11:41:24.360 に答える
0

これに関連して:

PHP は、PHP 4 が初めてリリースされた 2000 年にコンパイル済み言語になりました。バージョン 3 までは、PHP ソース コードは PHP インタープリターによって解析され、すぐに実行されていました。

これも正しいですが、これが何を意味するのかを本当に理解するには、「コンパイル済み」または「解釈済み」の定義を調べる必要があります。その区別は実際にはそれほど明確ではありません。コンパイラが意味するものは、一般に、ソース コードを実行可能な形式に変換するソフトウェアと考えられています。ただし、コンパイラのより正式な定義は、記事でも言及されているように、ある形式の表現を別の形式に変換するものです。

インタープリターは、(単に) 変換するのではなく、ソース コードで定義されているアクションを実際に実行するソフトウェアです。その定義に基づいて、PHP は依然として (デフォルトでは、HipHop などを除いて) 解釈されます。PHP4 のリリースで行われた変更は、ソース コードが直接解析および実行されるのではなく、まずインタープリターによってメモリ内の中間表現 (この場合はオペコード) にコンパイルされてから実行されることでした。この種の「コンパイル」は、さまざまな言語のほとんどすべての現代の通訳者が何らかの形で今日行っていることです。

于 2012-05-29T12:01:15.337 に答える
0

あなたが言及している記事は、古典的な PHP ではない HipHop というプロジェクトに関するものです。

HipHop は、php プロジェクト (php ファイル) を受け取り、同じ動作をする別のファイル セットを C++ で生成します。

プロジェクトが C++ プロジェクトになると、コンパイルが必要なプロジェクトになります。

HipHop は、スタック全体を別の言語で書き直すことなく、コードのパフォーマンスを向上させるために Facebook のエンジニア (彼らは PHP をよく使用します) によって作成されました。

PHP は PHP4 以降のコンパイル済み言語であるという引用を明確にするために、PHP4 以降、スクリプトは解析時に実行されないのは事実です。インクルードされた各ファイルは opCode に事前に「コンパイル」されており、動的に実行されるのはこの opcode です。

この 2 段階のプロセスにより、PHP の実行時間を大幅に改善できる特定の opCode キャッシング ツールの作成が可能になりました。たとえば、 http: //xcache.lighttpd.net/を参照してください。

opCode は、これらの opCode を解釈する方法を知っている「仮想マシン」によって実行されます (Java 仮想マシンに少し似ています)。

HipHop では、この opCode レイヤーがバイパスされるため、パフォーマンスが向上します。

于 2012-05-29T11:52:44.887 に答える