Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

トランスコンパイラとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > トランスコンパイラの意味・解説 

トランスコンパイラ

(トランスパイル から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/09/05 02:07 UTC 版)

ナビゲーションに移動 検索に移動

トランスコンパイラ(他にトランスパイラ、ソース・トゥ・ソースコンパイラ、などとも)は、あるプログラミング言語で書かれたプログラムソースコードを入力として受け取り、別のプログラミング言語の同等のコードを目的コードとして生成する、ある種のコンパイラである。一般に、コンパイラが「比較すると高水準な言語のソースコード」を入力とし、「比較すると低水準な言語の目的コード」を、コンパイル結果として出力するものであったのに対し、トランスコンパイラは同じ程度の(抽象化の)水準のコードをコンパイル結果として出力する。

それらの処理系における具体的なコンパイルの処理、すなわち、入力から出力への変換において実際に行われることは、それぞれの処理系によってさまざまである。字句のレキシカルな変換やsyntactic sugar(糖衣構文)の展開といったような程度の場合もあれば、高度なコンパイラ最適化を施して機械語をコード生成するような、通常のコンパイラと全く同様の処理をおこなっているものもある。

たとえば、PascalのコードをCのコードへと変換するといったものや、「自動並列化コンパイラ」のように、見た目としては逐次的なfor文などで書かれいているコードを、OpenMPのような並列化メタデータFortranforall文のような言語構造に変換する[1]、といったものがある。

トランスコンパイルの別の目的は、基本的なプログラミング言語の次期バージョンを使う場合や、APIの後方互換性が壊れた場合などに、レガシーなコードから変換することである。プログラムの実行環境が変わる場合(例えば、Python 2からPython 3に変換する場合や古いAPIから新しいAPIに変換する場合)や、コンパイルによりプログラムのサイズが極端に大きくなったり実行速度が遅くなったりした場合はリファクタリングを行う。

トランスコンパイラは、元のソースコードの開発やデバッグを簡単に行うことができるよう、元のコードをコメントなどに残す(ことができる)ものもある。また、元のコードから変換した際に構文が大幅に変わった場合は、同等のコードには見えないようなコードに変換されることもある[2]。元のコードから変換されたソースコードにマッピングを行うデバッグツールもある。

トランスコンパイラを主たる実装として開発されている言語の例としてはClosure Compiler英語版, Coccinelle, CoffeeScript, Dart, Haxe, TypeScript[3], Emscripten[4]がある。

歴史

ここでは1980年前後以降の例を示す。

1981年にゲイリー・キルドールによって書かれたデジタルリサーチのXLT86がある。それはIntel 8080用の.ASMソースコードからIntel 8086用の.A86ソースコードに変換した。8080のレジスターを用いた全体的なデータフロー解析を用い、出力されるコードサイズを最適化し、CP/M-80MP/M-80英語版のプログラムが自動的にCP/M-86MP/M-86に移行できるよう呼び出しを処理した。XLT86自体はPL/I-80でかかれ、CP/M-80環境のみならず、DEC VMS (for VAX 11/750 or 11/780)でも動くようになっていた[5]

似たような、しかしもっと洗練されていないプログラムは1980年86-DOSの一部としてティム・パターソンによって書かれたTRANS.COMがある。それは、いくつかのZ80アセンブラのソースコードを8086用の.ASMソースコードに変換した。しかし、これは制御コードレジスタ、モードのサブセットのみをサポートしており、かなりの手動変換や手直しを必要とした。それはレジスタやジャンプ最適化を行わなかった[6][7]

言語実装

いくつかの言語実装は当初トランスコンパイラとして開発され、それらの言語実装の中には2016年現在もトランスコンパイラのものもある。以下の表に加え、CoffeeScriptのメンテナがJavascriptに変換できる言語の一覧を提供している[8]

コード変換

開発者が、既存コードの大部分を別の言語に変換する場合、すべてを手動変換するよりもトランスコンパイラを使用するほうがよい場合が多い。「機械的」に変換が可能なのであれば、手動変換するのは単に手数を掛けるだけ無駄なばかりではなく、手作業にはミスがつきものだからである。一方で機械的な変換が不可能な場合もまたあり、ソース言語と目的の言語の組み合わせや、実際のコード次第でもあるがケースバイケースであって、一般論としては何も決定的なことは言えない。

関連リンク

脚注

  1. ^ Types of compilers”. compilers.net (1997–2005). 2010年10月28日閲覧。
  2. ^ Fowler, Martin (2013年2月12日). “Transparent Compilation”. 2013年2月13日閲覧。
  3. ^ Henson, Valerie (2009年1月20日). “Semantic patching with Coccinelle”. lwn.net. 2010年10月28日閲覧。
  4. ^ HTML5 Epic Citadel”. 2016年10月20日閲覧。
  5. ^ Digital Research (1981): XLT86 - 8080 to 8086 Assembly Language Translator - User's Guide. Digital Research Inc, Pacific Grove ([1]).
  6. ^ Seattle Computer Products (1980): 86-DOS - Disk Operating System for the 8086. User's manual, version 0.3 - Preliminary. Seattle Computer Products, Seattle ([2]).
  7. ^ Microsoft DOS V1.1 and V2.0: Z80 to 8086 Translator version 2.21 /msdos/v11source/TRANS.ASM”. Computer History Museum, マイクロソフト (2013年12月19日). 2014年3月25日閲覧。 (NB. While the publishers claim this would be MS-DOS 1.1 and 2.0, it actually is SCP MS-DOS 1.25 and TeleVideo PC DOS 2.11.)
  8. ^ List of languages that compile to JS”. 2014年12月15日閲覧。
  9. ^ Peter van Eerten. “BaCon - A free BAsic CONverter for Unix, BSD and MacOSX”. Basic-converter.org. 2014年7月8日閲覧。
  10. ^ Script# by nikhilk”. Scriptsharp.com. 2013年8月2日閲覧。
  11. ^ Smart Mobile Studio”. SmartMobileStudio.com. 2014年3月9日閲覧。
  12. ^ Babel · The compiler for writing next generation JavaScript”. babeljs.io. 2016年4月10日閲覧。
  13. ^ Traceur is a JavaScript.next-to-JavaScript-of-today compiler”. github.com. 2014年7月2日閲覧。
  14. ^ j2objc - Java to iOS Objective-C translation tool and runtime.”. j2objc.org (2014年2月13日). 2015年8月18日閲覧。
  15. ^ java2c-transcompiler - A simple source-to-source from Java to C - Google Project Hosting”. 2014年10月8日閲覧。
  16. ^ IntelLabs/julia”. GitHub. 2016年10月20日閲覧。
  17. ^ Google Groups”. google.com. 2016年10月20日閲覧。
  18. ^ MoonScript, a language that compiles to Lua”. 2016年9月21日閲覧。
  19. ^ Shed Skin, An experimental (restricted-Python)-to-C++ compiler”. 2014年10月1日閲覧。
  20. ^ Maptastic Maple (3.3.9). “Sass: Syntactically Awesome Style Sheets”. Sass-lang.com. 2014年7月8日閲覧。
  21. ^ Xtend, modernized Java”. Eclipse project. 2014年10月1日閲覧。
  22. ^ Js_of_ocaml”. 2014年10月8日閲覧。
  23. ^ J2Eif Research Page - Chair of Software Engineering”. Se.inf.ethz.ch. doi:10.1007/978-3-642-21952-8_4. 2014年7月8日閲覧。
  24. ^ C2Eif Research Page - Chair of Software Engineering”. Se.inf.ethz.ch. 2014年7月8日閲覧。



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「トランスコンパイラ」の関連用語

トランスコンパイラのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



トランスコンパイラのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのトランスコンパイラ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS