1

この(これらの)質問が漠然としすぎていないことを願っています。私は高校時代からプログラミングを繰り返してきました。そこで Pascal を学び、次に C++ を学び、最後に大学で Java を学びました。その後、プログラミングに多くの時間を費やすことはありませんでした。明らかに、過去 13 年間で多くの変化があり、マインクラフトを除けば、Java は、当時彼らが私たちに言ったほど重要になったように見えません. しかし、私は再びプログラミングを始めることに興味があり、多くの (少し古い記事) が Ruby を宣伝していました。Rubyを調べていましたが、少し混乱しています。ウィキペディアのページを読み、いくつかのサイトを調べました。

Java にある程度精通しているため、Java はバイトコードにコンパイルされ、JVM 上で実行されます。すべての JVM は標準をサポートする必要があるため、たとえば、Java/Swing を使用してグラフィカル ウィンドウ プログラムを作成した場合、ウィンドウ環境を備えたコンピューター上の任意の JVM が実行されます。

もちろん、Apple タブレットも Android タブレットも Java をサポートしておらず、JVM も持っていません (Android は Java に似ていますが)。

Rubyもこんな感じ?ルビー「JVM」はありますか?MRI について何か見ましたが、これは特定の Ruby インタープリターの 1 つにすぎませんよね? また、タブレットには ruby​​ インタープリターがありませんが、それも正しいですか? また、FXRuby のようなさまざまな Ruby GUI ツールキットがありますが、これらはタブレットを含む複数のデバイスで動作しますか? プログラムをインストールするとき、プログラムを実行できるように、ソフトウェアと共にインストールする配布可能ファイルを含める必要がありますか? さらに、iOS向けに開発するためのRubyMotionのようなものを見ましたが、これは基本的にRubyプログラムをobjective-Cに「再コンパイル」して、iOSデバイスで実行しますか? 明らかに、Apple の ToS に違反せずに Ruby インタープリターを iOS デバイスにインストールすることはできません...

また、非常に便利なので、子供たちにプログラミングを少し教え始めたいと思っています。私は Scratch から始めていますが、Ruby は将来、タブレットや携帯デバイスのプログラミングに役立つでしょうか? それとも、機能が豊富なオペレーティング システムを搭載したデバイスに限定されているのでしょうか。

たくさん質問してすみません。これがそのための良いフォーラムであることを願っています。

4

1 に答える 1

5

短い答え: たぶんそうかもしれませんが、おそらくそうではありません。

長い答え: Ruby には共通のバイトコード仕様はありませんが、共通の言語仕様があります。一般に、あるランタイム用に記述された Ruby は他のランタイムで実行されますが、各ランタイムには独自のバイトコードがあるため、コンパイル済みの Ruby バイトコードをランタイム間でやり取りすることはできません。これは、Ruby プログラムを実行するには、ソースを配布する必要があり、ターゲット プラットフォームで使用できるインタープリターが必要であることを意味します。

MRI ("Matz' Ruby Interpreter"、正規の実装)、JRuby (Ruby を JVM バイトコードにコンパイルする)、Rubinius (LLVM を使用して RBX バイトコードを機械語コードにコンパイルする) など、Ruby を実装する多くのランタイムがあります。時間内)、および他の多く。

そうは言っても、Ruby をより制限されたプラットフォームで実行可能にするために行った作業がいくつかあります。すでにわかっているように、 RubyMotionを介して Ruby で iOS デバイスをターゲットにすることができます。これは、基本的に Obj-C にコンパイルされると思います。Coffeescript : Javascript :: RubyMotion : Objective-C のようなものです。

Rubotoは、Ruby を Dalvik バイトコードにコンパイルするためのイニシアチブですが、試したことがないので、個人的にはうまく機能するかはわかりません。また、JVM バイトコードにコンパイルされるMirah (JRuby の作成者による、実際には Ruby ではなく、Ruby に似た言語) を介して Android デバイスをターゲットにすることもできます。さまざまなスクリプト言語ランタイムを Android プラットフォームに導入するSL4Aなどのイニシアチブもありますが、それらは限定的で、おもちゃとしてしか役に立たない傾向があります。ただし、Android ツールは Java 向けにはるかに完全であり、Mirah で記述されたアプリを実行するよりも、Java で記述されたアプリを Android で実行する方が実際には作業が少なくなります。

RubyMotion、Ruboto、Mirah の場合、配布可能ファイルは Obj-C プログラムまたは JVM バイトコード jar になるため、実際にコードを実行するためにランタイムを配布する必要はありません。

ただし、教育に関する限り、特にタブレットはロックダウンされたプラットフォームであり、好奇心旺盛なユーザーが内部をいじるのが難しいため、教育の主な手段としてタブレットを使用しないことをお勧めします. 基本的なプログラムを作成してタブレット上で実行できることは本当に素晴らしいことですが、アプリ開発者は、「通常の」コンピューティング プラットフォームで実行するようなハードウェアに対する権限を実際に持っているわけではありません。間違いなくカリキュラムの一部として含めますが、主要なプラットフォームとして依存しないでください。

とはいえ、Ruby と Python はどちらも優れた教育用言語であり、プログラミングの高度な基礎の多くを教えるために使用できます。私は (フルタイムの Ruby 開発者であるにも関わらず) 教えるための Python が特に好きです。Python は物事をどのように行うべきかについてより独断的であり、あいまいさの余地が少ないため、初心者にとって便利だからです。ただし、タブレットなどの特定のプラットフォームを使い始めると、それらのプラットフォームの主要な言語を使用する方が賢明かもしれません。これらのプラットフォームでの制限により、実際に生産性を発揮する前に克服しなければならない追加の障壁が生じるためです。結局のところ、コンピューターに何をすべきかを伝える方法は、何をするかを知ることよりもはるかに重要ではありません。あなたの子供がプログラマーになる旅の一部に過ぎないことを学ぶでしょう。概念がわかれば、言語はそれらの概念を表現するためのツールにすぎません。

于 2013-08-31T23:00:12.500 に答える