3

私は、次のアイデアの先行技術を特定しようとしています:

1) ユーザーが (insert_name_here) という言語で何らかのコードを入力します。

2) ユーザーは、既知の出力候補 (javascript、ruby、perl、python) のリストから目的の言語を選択します。

3) プロセッサは、insert_name_here を宛先言語の実行可能なコードに変換します。

4) プロセッサは、選択した言語に基づいて関連するシステム コールを使用してコードを実行します。

これが機能する理由は、insert_name_here からサポートされているすべての宛先言語へのすべての言語構造の間に、事前に確立された 1 対 1 のマッピングがあるためです。

(免責事項:これは明らかに、目的の言語に合わせて調整された「エレガントな」コードを生成するものではありません。実行可能な初歩的な変換を行うだけです。目的は、開発者がアルゴリズムの迅速で汚れた実装を取得できるようにすることです。車輪を再発明する気がなく、何らかの理由で特定のプロジェクトで特定の言語を使用する必要がある場合に備えて、いくつかの異なる言語。)

これはすでに存在しますか?

4

5 に答える 5

5

.NET CLRは、C ++。Net、C#.Net、およびVB.Netがすべて同じマシン言語にコンパイルされるように設計されており、そのCLIをこれらの言語のいずれかに「逆コンパイル」することができます。

そうです、あなたが説明している通りではありませんが、それはすでに存在していると思います。

于 2008-12-03T21:57:34.433 に答える
3

さまざまな言語で利用できるコンバーターがあります。あなたが抱える問題は、図書館を扱うことです。言語ステートメント間のマッピングは簡単かもしれませんが、ライブラリ関数間のマッピングを見つけることは非常に困難です。

そのタイプのコードジェネレーターがどれほど役立つかはよくわかりません。ある言語で何かを書き、すぐに別の言語に変換したいのはなぜですか?ダイアグラムやモデルをコードに変換する第4世代言語の理論的根拠はわかりますが、あなたの努力のポイントはよくわかりません。

于 2008-12-03T22:05:36.350 に答える
3

はい、プログラムをある表現から別の表現に変換するプログラム存在します。これを「コンパイラ」と呼びます。

そして、それが常に可能かどうかという質問については、ターゲット言語が少なくともソース言語と同じくらい強力である限り、可能です. したがって、ターゲット言語がチューリング完全である場合、チューリング完全言語よりも強力な言語は存在しないため、常に可能です。

ただし、ばかげた 1:1 マッピングである必要はありません。

たとえば、CIL バイトコードを JavaScript ソースコードにコンパイルする Microsoft Volta コンパイラには問題があります。.NET にはスレッドがありますが、JavaScript にはありません。ただし、継続を使用してスレッドを実装できます。JavaScript にも継続はありませんが、例外を指定して継続を実装できます。そのため、Volta は CIL を CPS に変換してから、例外付きで CPS を実装します。(JavaScript の新しいバージョンには、ジェネレーターの形でセミコルーチンがあります。それらも使用できますが、Volta は、明らかに Internet Explorer の JScript を含む、幅広い JavaScript バージョンで動作することを意図しています。)

于 2008-12-04T08:22:57.603 に答える
2

これは少し奇妙に思えます。「先行技術」という用語を最も一般的な形で使用している場合は、特許を受ける可能性のあるアイデアについて話していることになります。その場合、次のものがあります。

1/ アイデアを公開し、特許出願を開始しました - おそらく間違って、あなたは米国に拠点を置いていると思い込んでいます。

2/地球全体にあなたのアイデアを伝えました。つまり、非常に迅速に行動しない限り、特許を取得しようとしてもほとんど役に立ちません。

これについて特許を取得することを考えておらず、素人の意味で「先行技術」という用語を使用しているだけである場合は、お詫び申し上げます. 私は特許を非常に真剣に受け止めている会社で働いており、出願前に情報をどのように扱うことが許されているかを非常に詳細に掘り下げています。

そうは言っても、特許可能なアイデアは、斬新で、有用で、自明ではないものでなければなりません。多くのパスカルから c および fortran から c へのコンバーターの先行技術を持つ言語翻訳者について説明しているため、これらの 3 番目のアイデアは通用しないと思います。

わずかな希望は、あなたのアイデアが複数の出力言語 (p2c と f2c ではできない) の 1 つを生成できることですが、それでさえ、クロス コンパイラ (gcc など) などの多くの異なるオブジェクト言語の 1 つにソースします。

IBM には Visual Age Generator と呼ばれる製品があります。この製品では、1 つの (独自の) 言語でコードを記述し、それを COBOL/C/Java/その他に変換して、PC から大規模な System z メインフレームまで、さまざまなターゲット プラットフォームで実行できます。問題 (世界最大の特許権者である IBM が既に使用しているアイデアの特許を取得することを考えています)。

于 2008-12-03T23:07:36.537 に答える
2

それらのトン。p2c、f2c、および C++ と Objective C の元の実装は、すぐに私を襲います。それを超えて、あなたが記述しているものを他のコンパイラと区別するのはちょっと難しいです。

于 2008-12-03T23:54:37.830 に答える