プログラマーはコードコンパイラの知識を学ぶ必要があります
優れたコンピューター サイエンス学校はすべてコンパイラー コースを提供していますが、それを学部コースの必須の一部にしている学校は比較的少数です。この記事は、「なぜコンパイラの知識を学ぶ必要があるの?」という質問に答えます。たとえコンパイラを書くつもりがないとしても。
この記事を書いた理由の 1 つは、学部時代にコンパイラのコースが大好きだったが、それが実際に使われているところをほとんど見たことがなかったということです。教材のほとんどは単純なものか難解なもののように思えました (実際、私が見つけたコンパイラー教材のほとんどは退屈なものでした)。いずれにせよ、私はこの種のコースが実際になぜそれほど役立つのかを要約するのに数年を費やしました。その理由は次のとおりです。
アナライザーとパーサーはどこにでもあります
真剣な PHP プログラマーは、アナライザーとパーサーを理解する必要があります。なぜなら、常に小さなプログラムを書くだけではないからです。拡張可能なプログラムを作成したり、新しいタイプの入力ファイルを処理したりするたびに、それら (アナライザーとパーサー) について知る必要があります。グリーンスパンの第 10 法則:
「一定のレベルまで複雑な C または Fortran プログラムには、機能が半分しかなく、仕様を完全には満たしておらず、バグが多く、動作が非常に遅い一時的な Common が含まれています。 Lisp の実装。」そうです。重要なことは、どのような場合に既存のコードを借用するか、既存のツールを使用する必要があるかということです。理論的な知識が役立つのはどんな場合ですか?私たちが毎日使用する小規模な言語には、どのような言語設計原則が適用できるでしょうか?
正しいコードを書くことができるようになります
コンパイラは入力言語を正当なプログラムに正しく変換する必要があります。この目標を達成するには、コンパイラー開発者は、通常のプログラマーが目にすることのないいくつかのまれな問題を含め、入力言語全体を理解する必要があります。この理解プロセスは、通常コードを書くときに見るものとは異なり、プログラミング言語の本質に向かう重要なステップです。たとえば、シーケンス ポイント、未定義の動作、および一般的な算術変換の詳細を学んだ後、C 言語に対する私の理解は完全に変わりました。 C コンパイラ作成者はこれらの概念を習得していますが、ほとんどの初級および中級プログラマはこれらの概念を認識していません。言語の性質を知れば、言語についての考え方が変わり、より正確になると言っても過言ではありません。これはあらゆる言語、特に C や C++ のようなセマンティクスが不明確な言語に当てはまります。
より高速なコードを書くことができます
コンパイラーを理解することによって、それがどれほど合理的で単純に見えるかに関係なく、コンパイラーが最適化できる最適化と最適化できない最適化を明確に知ることができます。一般的にどのタイプのコードが最良のコード ブロックを構築するのか、なぜそうするのか、そして何をするのかを学びます。通常のオプティマイザを使用する場合と異なり、レジスタ バンクの半分をフィルタ係数のキャッシュに使用し、レジスタ バンクの半分をサンプルのキャッシュに使用する FIR フィルタなど、一部のコードのパフォーマンスが向上する理由がわかります。あなたとお気に入りのコンパイラは、効率的に作業するために使用したり、先読み最適化などの無意味なトリックを使用してコードを変更したりできる高速コードを作成するチームです。
第 2 に、コンパイラ バックエンドはターゲット アーキテクチャと密接に関連しています。もちろん、最新のアーキテクチャはアセンブリ プログラマに優しいプラットフォームを提供しようとしていますが、そう遠くないところにあります。コンパイラーのバックエンドと、バックエンドがそのようにコードを生成する理由を理解することで、コンピューター アーキテクチャの動作をより深く理解できるようになります。
概要
コンパイラは(理論的には)3つの部分から構成されます:
1.
言語関連のフロントエンド(分析、型検出)
2.言語とターゲットに依存しないミッドエンド(最適化))
3.ターゲット依存のバックエンド(マシンコードを生成)
はここにありますこの記事では、将来的にコンパイラを実装したり変更したりしない場合でも、コンパイラのあらゆる部分を理解することに価値があることを説得しようとしました。
LAMP Brothers オリジナルの PHP ビデオチュートリアル CD/「Essential PHP inDetails」を無料で受け取ります。詳細については、公式カスタマーサービスにお問い合わせください:
http://www.lampbrother.net
|

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
