人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaかC#(.net)のどちらかで、インタプリタを作ろうと思っています。インタプリタ上では、テトリス等のゲームや、見積もりなど簡単なアプリを作れるようにしたいです。どちらで作るのが簡単で、それぞれの言語で作るとどんなメリットがあるでしょうか?(ライブラリなど言語を取り巻く環境、将来性なども考慮してください。)

●質問者: kujirahand
●カテゴリ:コンピュータ インターネット
✍キーワード:.NET C# Java アプリ インタプリタ
○ 状態 :終了
└ 回答数 : 10/10件

▽最新の回答へ

[1]インタプリタ上のインタプリタにならないか? shotaro_tsuji

JavaもC♯.NETもインタプリタ上で実行されるものなので実行速度が遅くなると思う。

またインタプリタと一口に言っても中間コードを実行するものやソースを構文木に変換(インタプリトというよりコンパイルですが)してそれを実行するものがあり簡単にはいえない。

どちらの言語もライブラリ、仕様ともにいいものですが通常の手段でネイティブコードを吐けないのが痛いと思います。(Javaはgcjを使えば何とかなるけど)

また簡単なアプリを作るとなると言語に高機能なライブラリが必要なのでどちらの標準ライブラリも豊富なのでそれを使えるかもしれません。


[2]お勧めは C# です SiroKuro

C# には property、indexer、out/ref 引数など、細かな違いですが Java には無い便利な機能があります。また標準ライブラリの Reflection.Emit で .net のバイトコードを動的生成できるのも、処理系実装に有利であると思います。

ただ pnuts, JRuby, JPython など、処理系の実装例は私が知る限りでは C# より Java のほうが多いです。これは java がスクリプト言語との連携を強化し始めたことによるためで、既存の実装例を参考にしたいのならば java を選ぶのも良いかと思います。


[3]>2 後発の.netが有利ということでしょうか。 kujirahand

解説ありがとうございます。

私も、後発の.netが有利かもとは考えていました。

仰るとおり、コンパイラコンパイラの処理系も、Java製のものが多く、

C#製のものは、あまり見当たらなかったので、

さくっと作るなら、Javaが有利かなぁと思っているところです。


[4]>1 実行速度より、利便性を重視したいのです kujirahand

インタプリタ上のインタプリタということで、遅くなるのは仕方ないと思っています。

また、とりあえずは、独自中間コードを吐くようにして、これを実行する仕様を考えていますが、将来的には、これを、Javaか.netのネイティブなコードに変換して速度を出すことも考えています。

どちらの標準ライブラリも豊富とのことですが、どちらの標準ライブラリも似たり寄ったりなのでしょうか?


[5]Javaです。 fgtrjhyu

Javaには、JavaCCなどコンパイラコンパイラと呼ばれる環境があります。結構昔からあるものなので、それなりにインターネットに情報も存在します。JavaCCのほかにもANTLRやCUPなど他にもいくつか選択肢があります。将来性においても、Javaは非マイクロソフトの代表であることに変わりはないので、十分に寿命はあると思います。ここまで広まればそう簡単に消えてなくなったりはしないと思います。

JavaCCについて触れているページ

http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/java/javacc.html

http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld....


[6]>5 コンパイラコンパイラの存在は大きいですよね kujirahand

確かに、JavaCCなど多くのコンパイラコンパイラの存在は大きいと思います。

ただ、C#にも、JayのC#版が存在するので、なくはないのですが…。

私も、まさかJavaが消えることはないと思います。

ですが、.netでなく、javaを選ぶ理由が、非マイクロソフトという理由では決定打としては弱い気がしてます。


[7]>6 決定打、という意味で非マイクロソフトなわけではないのですが・・・ fgtrjhyu

私はアンチマイクロソフトでも親マイクロソフトでもないので、「.netでなく、javaを選ぶ理由が、非マイクロソフトという理由」ではないのですけど・・・。まさか、そこに重きを置かれるとは思いませんでしたが。

Javaを選ぶ理由はコンパイラコンパイラの選択肢の広さと情報の流通量です。

「なくはない」より「あれでもいいこれでもいい」というのは理由になりませんか?

調べたいものが調べやすいというのも開発する上で重要なことです。

少なくとも私なら選択肢の多い方を選びます。

いろんなライブラリやランタイム環境の種類が豊富で、バージョンが進んでいる、という意味での技術の成熟度はJavaに軍配があがります。

選択肢が豊富で、やりやすいやりかたを選択できる、というのは大きなアドバンテージです。

C#とJavaがどの程度の寿命を考えたとき、どちらもプログラミングスタイルに違いのない言語ですから、次にドラスティックな変化を起こすような言語が現れるまでは、どちらも生き残るでしょう。とすれば、寿命が尽きるタイミングはほぼ同じです。

だとしたら、現時点で、成熟度が高いJavaを選択したほうが良いと思います。


[8]>7 詳しい解説をありがとうございます! kujirahand

その反論が聞きたくてちょっと意地悪な書き方をしてしまいました。すみません。

確かに、成熟度、動作環境が多い、Javaの方が勝っていると思います。

素早いフォローも嬉しかったです。ありがとうございました。


[9]どんな仕様のインタープリターを作りたいかにもよると思いますが. chipmunk1984

結局,目的のアプリケーションを作るのには,元のインタープリター(Java or C#)が使いやすかったなんて事にはなりませんか?


[10]>4 いろいろ考えてみましたが… shotaro_tsuji

大抵の言語より豊富です。Javaの方が上だと思います。

Javaの方が枯れている分ポータブルで良さそうです。

特にGUIライブラリでは完全にJavaの勝ちです。C#でもMonoで実装が進んでいますが、JavaはSunがLinuxをサポートしているのも大きいでしょう。

また、とりあえずは、独自中間コードを吐くようにして、これを実行する仕様を考えていますが、将来的には、これを、Javaか.netのネイティブなコードに変換して速度を出すことも考えています。

完璧にJava VMかECMA-335のバイトコードを吐くコンパイラですが、まあ頑張ってください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ