13

私はそれを楽しむためにSmalltalkの亜種を開発してきましたが、バックエンドをターゲットにすることになると、stackoverflowersの仲間の選択肢は何でしょうか。これらは私の現在の考慮事項でした:

.NET、JVM:これら2つのVMは主に静的型付け言語用であり、smalltalkのような動的言語をターゲットにするのは非常に難しいと思います。

Python(ソースコードとして):最も簡単な方法のようです。また、Pythonバイトコードを出力できればより良いでしょうが、他のVMのAFAIKとして十分に文書化されていません(詳細についてはPythonのソースコードを掘り下げる必要があります!)。

自作の通訳:面白くないので問題外です:-)

LLVM、NekoVM、Parrotは、私がチェックしている他のオプションです。これについてどう思いますか?

4

14 に答える 14

15

.NETまたはJVMをそれほど早く値引きしないでください。動的言語は両方のために開発されており(例えば、JVM上のGroovy、JRuby、Jython、.NET上のIronRuby、IronPython)、.NETは「DLR」(動的言語ランタイム)を獲得しています。(詳細については、 Jim Huguninのブログを参照してください。)

于 2008-11-04T15:13:03.890 に答える
4

私はJVMを選択しますが、主な理由は、JVMに精通しているためです。

JVMの客観的な理由は次のとおりです。メインプラットフォームがサポートされ、多くのライブラリと優れたパフォーマンス(与えられた選択肢の範囲内で最高のパフォーマンスが得られる可能性があります)。

.NetはWindowsで最適に動作します。それを選択した場合は、Monoでテストして、プラットフォームに依存しないようにする必要があります。

Pythonも良い選択のようです。しかし、JVMの場合、より多くのライブラリが利用可能だと思います。

私の意見では、オウムは新鮮すぎます。成熟するには時間がかかります。しかし、将来のための興味深い代替案。

他の選択肢は私にとって新しいものです、私はそれらを見ていきます。

于 2008-11-04T15:12:16.420 に答える
4

「実際の」コードをまだ出荷していなくても、Parrot は本当にクールです。しかし、プロジェクトはただの楽しみのためのものなので、それであなたを止めるべきではありません:D.

于 2008-11-04T15:21:31.017 に答える
3

Smalltalk を実装しようとしているのであれば、 YARVrubiniusのようなRuby用の smalltalk にインスパイアされた VM の 1 つを検討してみてはいかがでしょうか。どちらも smalltalk にインスパイアされており、高性能を目指しています。YARV は新しい標準の Ruby VM になります。

于 2008-11-04T15:59:33.657 に答える
3

Parrot を使用する利点の 1 つは、ChitChat と呼ばれる Smalltalk の亜種を含む、多数のサンプル言語が同梱されていることです。したがって、他の誰かが Parrot で同様の言語をどのように実装したかを確認するための参照として使用できます。

于 2008-11-04T16:11:30.217 に答える
3

PyPyをご覧になることをお勧めします。このプロジェクトは Python (のサブセット) で Python 言語を実装するために存在しますが、彼らが採用しているアプローチでは、複数のフロントエンドと複数のバックエンド (CLR、JVM、LLVM を含む) を使用できます。 、C、さらには Smalltalk や JavaScript まであると思います)。たとえば、JIT の作業は、 Prolog をフロントエンド言語として使用し、CLR をバックエンド言語として使用して行われました。そのため、Smalltalk を実装するためにパーティーに参加した後、知らないうちに他の誰かが Prolog を実装するのを手伝っていたことに気付くかもしれません... :-)

于 2008-11-04T16:13:55.857 に答える
2

これが楽しみであるなら、オープンソースである Squeak のコードベースから始めて、それを変更してみませんか。Smalltalk の実行時間は短く、小さな楽しいバリアントは、ほとんど微視的である squeak からのブートストラップ環境から開始し、そこから構築できます。

.NET と JVM に対する私の最大の不満は、サイズが非常に大きいことです。実行時の「オペレーティング システムから smalltalk へ」のインピーダンス マッチング レイヤーが Squeak でどれほど小さいかを見てください。

楽しいプロジェクトは、まあ……楽しいものであるべきではありませんか?きしみには多くのものがありますが、ビジネスライクはその1つではありませんが、楽しい...間違いなく.

于 2010-02-02T14:28:55.720 に答える
2

Factor ( http://factorcode.org/ ) は、これに役立つ機能を提供する場合があります。

于 2008-11-04T16:14:08.573 に答える
1

最初の選択肢としてのJVM。それは初日から幅広い図書館のサポートを可能にするでしょう。それがClojureにどのように役立ったかをご覧ください。

また、LLVMは興味深い選択かもしれませんが、LLVMバックエンドを使用して成熟した言語を実装することはできないため、それがどれほど「証明」されているかはわかりません。

.NETは避けたいと思います。それはあなたの新しい言語の周りのコミュニティとサポートを集めるのを難しくするでしょう、そしてあなたはすぐにそれを必要とするでしょう。また、クロスプラットフォームではありません。

何を選んでも、そうすることで多くのことを学ぶことができます。

于 2008-11-04T15:13:44.137 に答える
1

JVM はより安定しており、十分に文書化されており、一般的には .Net よりも移動するターゲットになる可能性が低くなります。.Net の場合、人材は非常に少なく、ほとんどが Microsoft で働いているため、支援する時間がない可能性があります。

于 2008-11-04T15:55:42.853 に答える
0

間違いなく.Netは動的言語ランタイムを使用しています。オブジェクトは、終了するまでにC#およびV.Netユーザーが直接使用できるようになります(何かを出荷するつもりですか?:-)

特に、SilverLightの縮小された.Netで実行されているターゲットを使用すると、最新のWebリッチUIバイインを取得できます。

于 2009-01-18T02:13:33.460 に答える
0

動的言語のCLRの上にあるDLRとしての.NET。

于 2008-11-04T15:12:35.263 に答える
0

.Net で実行してください。結局のところ、楽しみのために実行したいのです。だから、少し挑戦的にしてください。そして、DLR とそれがサポートする言語の改善のために、調査結果を Microsoft に報告することができます。

于 2008-11-04T16:03:15.707 に答える
0

.Net の使用を検討する場合は、Beautiful Code を参照してください。.Net CLR での動的コード生成に関するエッセイがあります。

于 2008-11-04T16:16:28.257 に答える