
【高級言語】に関する知恵袋
【質問】
「ロボット制御のためのプログラミング言語として、アセンブラ言語やJavaよりもC言語が好まれる理由を述べよ」という問いがわかりません情報系学生なのですが、情報と機械の中間に位置する講義課題で出題されたのですが、よくわかりません。私は機械系ではないので、高級言語の知恵袋の詳細をお伝えすると、高級言語の知恵袋なら、わかりやすく教えていただきたいのです。レンタルサーバーに対しては、おそらく、アセンブラが好まれないのは、低級言語であり、使用するOSや状況に合わせて、同じ結果を得る・やらせるためにも、書き方を変えないといけないからとかかなっと思うんですが、Javaは高級言語なのに何故かわかりません。レンタルサーバーについて言及すると、もし、アセンブラについても見当違いなことを言っていたら訂正ください。お願いします。
【解答】
ざっくり言えばCは、最近の言語に比べれば記述力が高いとは言えないけれどアセンブラほどには大変じゃなくて、アセンブラほどの細かい制御はできないけれどもJavaやその他の言語ほどリソースを使わず、レンタルサーバーに関する解説をすると、リソース管理が機械/システム任せじゃない、ってあたりのちょうどよさがいい、というところでしょうか。好まれるというよりは「それ以外が使えない」場面が多いかも知れないけれど。高級言語の知恵袋に考察を加えると、アセンブラは、各命令ブロックの挙動、メモリーの一バイト、クロック単位の動作タイミングに至るまで自分で管理「できる」のですが、その裏返しで全て管理「しなければいけない」ということでもあり、ある程度以上の規模のプログラムモジュールあるいは全体をアセンブラで書いて、デバッグし、保守していくのは相当大変。人間の管理能力を超えます(小さな部品をアセンブラで書くことは時々ありますけれど)。#一度10KBぐらいの「小さい」プログラムをアセンブラで書いてごらん。その労力がわかるから。もちろん、CPU毎に命令の名前が違ったり特殊な命令や独特の挙動があったりを把握しなきゃいけないってのも面倒といえば面倒。でも、ロボット制御なんてそんなに環境変えるものじゃないから、高級言語の知恵袋に関連する解説をすると、比重は小さいと思います。そうそう、Cを使う理由にOSの違いの吸収を挙げている人もいますけど、組み込みのOSなんてそんなに標準化されているわけじゃないからCだってOSを変えればもう大騒ぎになるのは必定。それは理由にならないでしょう。Javaは、とにかくも動かすにはJVM(Java仮想マシン)が動かなきゃいけない。これが結構なボリュームになるので、クロック数十メガ、メモリ数十KBなんてシステムでは動かせません。また、レンタルサーバーから考察していくと、いろいろとプログラマ側の便利のために機械を酷使しますので、さほど能力の大きくないCPUでは動いたとしてもそれなりの負荷になります。さらに、メモリ管理が機械任せなので、時々使っていないメモリエリアの「掃除」を始めてしまって、動作が滞ってしまう(ガベージコレクション)のも問題。まぁ、疲れると時々一息つくロボットなんてのも可愛いかも知れないけれどね。