翻訳器またはプログラミング言語プロセッサは、人間が理解しやすい形式で書かれたプログラミング命令を、コンピュータが理解して処理できる機械語コードに変換するコンピュータプログラムです。これは、コンパイラ、アセンブラ、またはインタプリタなど、あるコンピュータ言語から別のコンピュータ言語にコードを変換するあらゆるものを指す一般的な用語です。[ 1 ] [ 2 ]これには、 C++やJavaなどの高レベルで人間が読めるコンピュータ言語間、 Java バイトコードなどの中レベル言語、アセンブリ言語や機械語などの低レベル言語、異なるコンピューティング プラットフォーム上の同様のレベルの言語間、およびこれらのいずれからいずれかへの変換が含まれます。[ 1 ]
この用語は、同じプログラムのソフトウェア実装とハードウェア/ ASICマイクロチップ実装の間、およびマイクロチップのソフトウェア記述からその構築に必要な論理ゲートへの変換を行うトランスレータにも使用されます。
ソフトウェア開発プロセスは、開発者が使用する翻訳ツールの種類によって大きく異なります。もちろん、翻訳ツールごとに異なります。翻訳ツールの影響を受ける開発プロセスの段階には、初期プログラミング段階、デバッグ段階、そして最も重要な実行プロセスが含まれます。これらの段階で影響を受ける要素には、コードのパフォーマンス、デバッグプロセスのフィードバック速度、言語機能、プラットフォーム非依存性などがあります。コードの翻訳に使用される代表的なプログラミング言語プロセッサには、コンパイラ、インタプリタ、アセンブラなどがあります。[ 3 ]
Compiler software interacts with source code by converting it typically from a higher-level programming language into object code that can later be executed by the computer's central processing unit (CPU).[4] The object code created by the compiler consists of machine-readable code that the computer can process. This stage of the computing process is known as compilation. Utilizing a compiler leads to separation in the translation and execution process. After compilation, the new object code is saved separately from the source code resulting in the source code no longer being required for the execution process. With compiler programs, translation is a one-time process which results in efficient code that can be executed quickly any number of times.[4]
There are clear benefits when translating high-level code with a compiler.[5]
There are clear disadvantages when translating high-level code with a compiler.[5]

Some notable programming languages that utilize compilers include:[6]
Interpreter programs function by interpreting high-level code into machine useable code while simultaneously executing the instructions line by line. Unlike compilers, interpreters do not need to compile the code prior to executing the instructions. The translation and execution process are done simultaneously and is interrupted in the event of an error in the program. The use of an interpreter allows developers to test and modify code in real-time. It makes the debugging process easier as well as aids in making more efficient code. Since the translation and execution process is done simultaneously, the execution time for interpreter programs is substantial.[3]
高水準コードをインタプリタで翻訳することには、明確な利点がある。
インタプリタで高水準コードを翻訳する場合、明らかな欠点があります。[ 5 ]
インタプリタを利用する注目すべきプログラミング言語には、以下のようなものがあります。[ 3 ]
アセンブラプログラムは、低レベルのアセンブリコードをCPUが読み取れる従来のマシンコードに変換することで機能します。アセンブリ言語の目的は、他のプログラミング言語と同様に、マシン言語でのプログラミングよりもプログラミングプロセスをユーザーフレンドリーにすることです。アセンブラ言語は、オペコード、オペランド、および特定のメモリ アドレスを区別するために、ニーモニック デバイスとシンボル アドレスを使用します。これらのコンポーネントの多くは人間にとって読みやすいものではないため、ニーモニック、シンボル、およびラベルによってコードを解読可能にします。アセンブラは、コードを一度に 1 行ずつ処理し、次の命令に進むことで機能します。アドレス指定位置によって発生する問題を解消するために、アセンブリと呼ばれる変換プロセスは通常 2 パスで実行されます。アセンブリの最初のパスは、シンボル名に対応するバイナリ アドレスを識別するために実行されます。これは、行ごとのマシン言語への変換である第 2 パスをガイドするために不可欠です。[ 7 ]
一般的に使用されるアセンブラには以下のようなものがあります。