トランスレータまたはプログラミング言語プロセッサは、人間が理解しやすい形式で記述されたプログラミング命令を、コンピュータが理解して処理できる機械語コードに変換するコンピュータプログラムです。これは、コンパイラ、アセンブラ、またはインタープリタ、つまり、あるコンピュータ言語から別のコンピュータ言語にコードを変換するものすべてを指す一般的な用語です。[ 1 ] [ 2 ]これらには、 C ++やJavaなどの高水準で人間が読めるコンピュータ言語、 Javaバイトコードなどの中水準言語、アセンブリ言語や機械語などの低水準言語間の変換、異なるコンピューティングプラットフォーム上の同様のレベルの言語間の変換、およびこれらのいずれかから他のいずれかのレベルへの変換が含まれます。[1]
ソフトウェアとハードウェアは、コンピューティングにおける異なる抽象化レベルを表します。ソフトウェアは通常、人間が理解して操作しやすい高レベルのプログラミング言語で記述されますが、ハードウェアの実装には、物理コンポーネントとその相互接続の低レベルの記述が含まれます。トランスレータコンピューティングは、これらの抽象化レベル間の変換を容易にします。[3]全体として、トランスレータコンピューティングは、ソフトウェアとハードウェアの実装間のギャップを埋める上で重要な役割を果たし、開発者が各プラットフォームの長所を活用し、アプリケーションの特定の要件に応じてパフォーマンス、電力効率、およびその他のメトリックを最適化できるようにします。[4]
プログラミング言語プロセッサ
ソフトウェア開発プロセスは、開発者が使用するトランスレータの種類によって大きく異なりますが、これはもちろんトランスレータごとに異なります。トランスレータの影響を受ける開発プロセスの段階には、初期のプログラミング段階、デバッグ段階、そして最も重要なのは実行プロセスがあります。これらの段階で影響を受ける要因には、コードのパフォーマンス、デバッグプロセスのフィードバック速度、言語機能、プラットフォームの独立性などがあります。コードの変換に使用されるプログラミング言語プロセッサとして、コンパイラ、インタープリタ、アセンブラなどが知られています。[5]
コンパイラ
コンパイラソフトウェアは、ソースコードを高水準プログラミング言語からオブジェクトコードに変換することでソースコードと対話し、その後、コンピュータの中央処理装置(CPU)で実行します。 [6]コンパイラによって作成されたオブジェクトコードは、コンピュータが処理できる機械可読コードで構成されています。コンピューティングプロセスのこの段階は、コンパイルと呼ばれます。コンパイラを使用すると、変換プロセスと実行プロセスが分離されます。コンパイル後、新しいオブジェクトコードはソースコードとは別に保存されるため、実行プロセスにソースコードは不要になります。コンパイラプログラムを使用すると、変換プロセスは1回だけ実行され、何度でもすばやく実行できる効率的なコードになります。[6]
高水準コードをコンパイラで翻訳すると明らかな利点があります。[7]
- コンパイルにより、プログラムを実行する際の実行時間が短縮されます。コードは実行前に変換されるため、結果が最適化され、高速になります。
- コンパイラは、盗作からコードを保護し、権限のない第三者によるソースコードの使用を防ぐ場合に最適です。
- オブジェクト コードは、ソース コードをコンパイルするときに 1 回だけ作成する必要があります。
高水準コードをコンパイラで翻訳する場合、明らかな欠点がある。[7]
.svg/500px-Compiler_scheme_(en).svg.png)
- コンパイル中に生成されるオブジェクト コードは、マシンの命令セット アーキテクチャ(ISA) に固有のものです。このため、オブジェクト コードを実行するには特定の種類のマシンに依存することになります。
- 開発プロセスのデバッグ段階は、プログラムが完全にコンパイルされるまで開始できません。エラーはコンパイル後にのみ表示されます。
- 変更されたソース コードは、再度実行するには完全に再コンパイルする必要があります。
コンパイラを利用する注目すべきプログラミング言語には以下のものがある: [8]
通訳者
インタプリタプログラムは、高水準コードを機械が使用できるコードに解釈しながら、同時に命令を1行ずつ実行することで機能します。コンパイラとは異なり、インタプリタは命令を実行する前にコードをコンパイルする必要はありません。翻訳と実行のプロセスは同時に行われ、プログラムにエラーが発生した場合は中断されます。インタプリタを使用すると、開発者はリアルタイムでコードをテストおよび変更できます。これにより、デバッグプロセスが容易になり、より効率的なコードの作成に役立ちます。翻訳と実行のプロセスが同時に行われるため、インタプリタプログラムの実行時間はかなり長くなります。[5]
高レベルのコードをインタープリタで翻訳すると、明らかな利点があります。
- 解釈プロセスではオブジェクトコードが作成されないため、コードに必要なメモリが少なくなります。[5]
- インタプリタ言語はマシン固有のコードを作成しないため、あらゆるタイプのマシンで実行できます。[7]
- 開発とデバッグのプロセスは、複雑さが少ないため通常はより速く、柔軟性も高くなります。[7]
高水準コードをインタープリタで翻訳する場合、明らかな欠点がある。[7]
- プログラムを実行して解釈するには、マシンにインタープリターがインストールされている必要があります。
- プログラムの実行時間はコンパイラよりも遅くなります。
インタプリタを利用する代表的なプログラミング言語としては次のようなものがある: [5]
アセンブラ
アセンブラ プログラムは、低レベルのアセンブリ コードを CPU が読み取り可能な従来のマシン コードに変換することで機能します。アセンブリ言語の目的は、他のコーディング言語と同様に、プログラミング プロセスをマシン言語でのプログラミングよりもユーザー フレンドリにすることです。アセンブラ言語は、ニーモニック デバイスとシンボリック アドレスを使用して、オペコード、オペランド、および特定のメモリ アドレスを区別します。これらのコンポーネントの多くは人間が簡単に読み取ることができないため、ニーモニック、シンボル、およびラベルによってコードを解読可能にします。アセンブラは、コードを 1 行ずつ処理し、次の命令に進みます。アドレス指定場所によって発生する問題を排除するために、アセンブリと呼ばれる変換プロセスは通常、2 パス プロセスで実行されます。アセンブリの最初のパスは、シンボリック名に対応するバイナリ アドレスを識別するために行われます。これは、マシン言語への行単位の変換であるパス 2 をガイドするために不可欠です。[9]
よく使用されるアセンブラは次のとおりです。
- x86アセンブリ言語(IntelおよびAMDプロセッサで使用)[10]
- ARMアセンブリ言語(モバイルデバイスで使用)[10]
- MIPSアセンブリ言語(ゲーム機で使用)[10]
- PowerPCアセンブリ言語[10]
- LC-3アセンブリ言語(主に教育でLC-3コンピュータをプログラムするために使用)[9]
参照
- バイナリ トランスレータ(バイナリからバイナリ、通常はコード)
- アセンブリ言語トランスレータ(低レベルのソースからソース、コード)
- ソースからソースへの翻訳者(高レベルのソースからソース、コード)
- リライター(ソースからソース、通常はコード)
- ソースコードフォーマッタ(ソースからソース、通常はコード)
- ファイルコンバータ(バイナリからバイナリ、通常はデータ)
- トランスコーダ(バイナリからバイナリ、データ)
参考文献
- ^ ab Thornton, Scott (2017-02-17). 「コンパイラ、トランスレータ、インタープリタ、アセンブラとは何か?」MicrocontrollerTips . 2019-07-19 のオリジナルからアーカイブ。2020-02-02 に取得。
- ^ 「プログラム開発のためのトランスレータとユーティリティ」 。ソフトウェア ハンドブック(PDF) 。Intel Corporation。1984 [1983]。p. 3-1。230786-001。2020年 1 月 29 日のオリジナルからアーカイブ(PDF) 。2020年 1 月 29 日に取得。
- ^ Beaulieu, Adrien (2022). 「A15. フロントエンドとバックエンドのテクノロジー: 複数のプログラミング言語の習熟の重要性」
- ^ Pagadala、Santosh Kumar (2004)。「複合構造用のコンピュータ支援設計環境のポータブル実装」。
- ^ abcd 「言語プロセッサ:アセンブラ、コンパイラ、インタープリタ」。GeeksforGeeks 。 2018年8月9日。 2024年3月15日閲覧。
- ^ ab "CSE 5317/4305: コンパイラの設計と構築". lambda.uta.edu . 2024年3月15日閲覧。
- ^ abcde 「トランスレータタイプ」。Ada Computer Science。2024年3月15日。 2024年3月15日閲覧。
- ^ 「コンパイル言語とインタープリター言語」www.ibm.com . 2024年3月15日閲覧。
- ^ ab Patt、Yale; Patel、Sanjay (2019-08-15)。コンピューティングシステム入門:ビットとゲートからC / C ++までとその先(第3版)。ニューヨーク、NY:McGraw-Hill。pp. 231–243。ISBN 978-1260150537。
- ^ abcd Stokoe, William (2024-05-06). 「手話の構造」. Annual Review of Anthropology . 9 : 365–390. doi :10.1146/annurev.an.09.100180.002053 . 2024年3月15日閲覧。
さらに読む
- Calingaert, Peter (1979) [1978-11-05]。ノースカロライナ大学チャペルヒル校で執筆。Horowitz , Ellis (編)。アセンブラ、コンパイラ、プログラム翻訳。コンピュータソフトウェアエンジニアリングシリーズ (第 1 刷、第 1 版)。米国メリーランド州ポトマック: Computer Science Press, Inc. ISBN 0-914894-23-4. ISSN 0888-2088. LCCN 78-21905. 2020年3月20日時点のオリジナルよりアーカイブ。2020年3月20日閲覧。(2+xiv+270+6ページ)
- Pring-Mill, David (2018-03-04). 「なぜ AI は言語翻訳をマスターできないのか?」Singularity Hub . Singularity University . 2019-12-29 にオリジナルからアーカイブ。2020-02-02に取得。
- Edwards, Stephen A. (2013 年秋)。「言語プロセッサ」(PDF)。コロンビア大学。2019年 6 月 24 日のオリジナルからアーカイブ(PDF) 。2020年 2 月 2 日閲覧。
- Tucker, Allen; Belford, Geneva G. 「コンピュータサイエンス」。ブリタニカ百科事典。2019年7月23日時点のオリジナルよりアーカイブ。 2020年2月2日閲覧。
