言語プロセッサ
プログラムの実行 |
---|
一般的な概念 |
コードの種類 |
コンパイル戦略 |
有名なランタイム |
|
有名なコンパイラとツールチェーン |
|
プログラミング言語プロセッサ (英: programming language processor)は、コンピュータ言語で書かれたコードに処理を行い、別の形に変換するもののこと[1][2]。 単に言語プロセッサ、言語処理系、またはトランスレータ (translator)と呼ばれることもある。コンパイラ、インタープリタ、アセンブラ、プリプロセッサなどのことをまとめて指すときに使われることが多い。
高水準言語で書かれたプログラムは、ソースプログラムと呼ばれる。たとえば、C++やJavaなどの高レベルで人間が読めるコンピューター言語、Javaバイトコードなどの中間レベル言語、アセンブリ言語や機械語などの低レベル言語、そして異なるコンピュータプラットフォーム間での同様のレベルの言語間のトランスレータも含まれる[1]。
この用語は、同じプログラムのソフトウェア実装とハードウェア実装 (ASICマイクロチップ)の間のトランスレータ、マイクロチップのソフトウェア記述からそれを構築するために必要な論理ゲートまでのトランスレータにも使用される[要出典]。
言語プロセッサの種類
[編集]コンパイラ
[編集]コンパイラは、高水準プログラミング言語を低水準プログラミング言語に変換するために使用される言語プロセッサである。プログラムを利用する前に、あらかじめ全体を一度に変換しようとし、変換中に検出されたエラーを報告する。コンパイラは、高水準言語のコードを低水準のコードに一度に変換してからメモリに保存するため、作業に時間がかかる。コンパイラはクロスコンパイラ、トランスコンパイラなどの用語があることから推察できる通り、プロセッサやプラットフォームに依存する[3][4][5]。
インタプリタ
[編集]インタプリタは、高水準プログラミング言語を、逐次実行するプログラムである。インタプリタは、コードを読み取るとすぐにコードを実行するため、プログラムのソースコードから実行を始める場合はコンパイラよりも高速になる。一度に少しずつコードを実行するため、ソフトウェア開発のデバッグツールとしてもよく使用される。インタプリタはプロセッサに依存しないため、コンパイラよりも移植性が高く、異なるハードウェアアーキテクチャ間で作業することができる[3][4][5]。
アセンブラ
[編集]アセンブラは、アセンブリ言語を機械語に翻訳するために使用される言語プロセッサである。アセンブリ言語のコンパイラと同じ機能を持っており、実行までの時間もインタプリタのように速いが、アセンブリ言語は低水準プログラミング言語であるため、人間が理解することは難しい[3][4]。
関連項目
[編集]- バイナリトランスレータ(バイナリからバイナリ、通常はコード)
- アセンブリ言語トランスレータ(低レベルのソースからソース、コード)
- トランスコンパイラ(高レベルのソースからソース、コード)
- リライター(ソースからソース、通常はコード)
- ファイルコンバーター(バイナリからバイナリ、通常はデータ)
- トランスコーダー(バイナリからバイナリ、データ)
脚注
[編集]- ^ a b “What are compilers, translators, interpreters, and assemblers?”. MicrocontrollerTips (2017年2月17日). 2019年7月19日時点のオリジナルよりアーカイブ。2019年7月19日閲覧。
- ^ “Translators And Utilities For Program Development”. Software Handbook. Intel Corporation. (1984). p. 3-1. 230786-001. オリジナルの2020-01-29時点におけるアーカイブ。 2020年1月29日閲覧。
- ^ a b c https://teachcomputerscience.com/translators/
- ^ a b c https://www.microcontrollertips.com/compilers-translators-interpreters-assemblers-faq/
- ^ a b “Chapter 5. Program execution, Section 5.2. Interpreter and Compiler”. Introduction to Programming using Python - Programming Course for Biologists at the Pasteur Institute. Pasteur Institute. (2008-02-04). pp. 37–40. オリジナルの2015-11-11時点におけるアーカイブ。 2015年1月7日閲覧。 [1]
参考文献
[編集]- Horowitz, Ellis, ed (1979). written at University of North Carolina at Chapel Hill. Assemblers, Compilers, and Program Translation. Computer software engineering series (1st printing, 1st ed.). Potomac, Maryland, USA: Computer Science Press, Inc.. ISBN 0-914894-23-4. ISSN 0888-2088. LCCN 78--21905. オリジナルの2020-03-20時点におけるアーカイブ。 2020年3月20日閲覧。 (2+xiv+270+6 pages)
- “Why Hasn't AI Mastered Language Translation?”. Singularity Hub. Singularity University (2018年3月4日). 2019年12月29日時点のオリジナルよりアーカイブ。2020年2月2日閲覧。
- “Language processors”. Columbia University (Fall 2013). 2019年6月24日時点のオリジナルよりアーカイブ。2020年2月2日閲覧。
- Tucker, Allen; Belford, Geneva G. "Computer science". Encyclopædia Britannica. 2019年7月23日時点のオリジナルよりアーカイブ。2020年2月2日閲覧。