回答受付が終了しました

ID非公開

2021/5/9 6:12

77回答

組み込み系システムはC言語で書かれることが多いと聞きますが、もし仮にRubyやPythonで書いたらどうなりますか?

回答(7件)

0

RubyやPythonがインタプリタ前提である以上、システム記述できる言語にはなりえません。 インタプリタ前提であるということは、以下のようなことを期待して設計された言語ということです。 ・実行の主体(python.exeのような)が別に存在する ・実行コードは何らかの入力から文字列として読み込まれ解釈される ・実行にあたっての入出力は、システムの標準入出力やファイルシステム、ネットワーク経路などを使い行われる ・メモリやCPUなどの必要リソースはシステムコール経由で得る ・エラーが起きた場合、ソフトウェア例外などを発生させて後始末する 一方でシステム記述言語に求められるのは「自分が実行の主体となり、入出力機構、システムコール、ソフトウェア例外等そのものを実装できる機能」です。 インタプリタ前提の言語にはこのような実装を行うための機能が用意されていません。

0

期待されている回答の方向性が、ちょっと分からないですが、 仮に、Pythonで書かれるという感じだとすると、 その組み込まれるハードウェアに、Pythonを解釈するアプリが乗っかている状態か、もしくは、そのハードウェアのOS自体がPythonを解釈するような感じになるか(一時期のJavaのような、バーチャルマシーン的な動き)かなぁとは思います。 そういった環境に、何某かのメリットがあれば、そういう方向性の実装もあり得るとは思いますが、すぐに思い浮かぶようなメリットは無いかなぁとも思います。

0

どうなりますか?以前に、え?それマジで言ってんの?レベルであり得ない。 言語による開発効率の増加と、インタプリタ搭載と動作のオーバーヘッドのデメリットとの釣り合いが全くとれない。

1

例えばよく使われるArduino UNOの ROM32KB RAM2KBのメモリーにはRubyやPython、Javaは載りません。書いたらどうなるか、とかいう以前に動かせるかどうかというレベルです。ある程度メモリがあっても、言語部分を動かすだけで一杯々々で、プログラムを置くスペースがない、なんてことも起こります。 また、CPUの能力が低ければ、インタプリタ型の言語だと遅くて使えない、という場合も出てきます。

1人がナイス!しています

0

高機能言語が用意されているなら構わないが、例えば8ビットチップだとCしかない場合も多い。 汎用機と違って言語の選択肢は非常に少ない。

>ROM32KB RAM2KBのメモリーにはRubyやPython、Javaは載りません そういや、マイコンに触り始めた頃は「Tiny BASIC」ってのがあったっけな、あれって容量どのくらいだったろう? 次にでたのが「4K BASIC」で、その次の「8K BASIC」は相当なことができるようになった。 RAMだって最初は128バイト(キロも付かない)だったし。 乗せようと思えば乗るから、頑張ってキミが作っちゃえば? ちなみに、PICもAVRもC以外にBASICやPASCALはある、もちろんコンパイルタイプだけど。