• ベストアンサー

応用プログラミングとシステムプログラミングの違い

応用プログラミングとシステムプログラミングの相違点ってなんですか? 一つ一つの意味は分かっても、相違点っていわれると難しくて; システムプログラミングは「OSの機能を直接使ったプログラム作成」だと思うんですけど、 応用プログラミングはこれと何が違うのでしょうか? よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

> システムプログラミングは「OSの機能を直接使ったプログラム作成」だと思う これは違うでしょう。アプリケーションがOS機能を直接使う場合もありますし。 応用プログラミングは利用者が直接使うアプリケーションの作成ですね。 システムプログラミングはそのアプリケーションが基盤として利用するプログラムの作成です。デバイスドライバとか、組込み系ではOSを含むこともあります。

noname#46996
質問者

お礼

そうだったんですか。「OSの機能を直接使ったプログラム作成」をシステムプログラミングということもある。。ということだったんですね。 相違点も分かりやすかったです。 どうもありがとうございました。

その他の回答 (1)

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.1

両方ともプログラムという点は同じですが、バグの影響はずいぶんと違います。 応用プログラムでは、バグがあってもそのプログラムがコケるだけですし、デバッグのためのプリント文を入れたりデバッガの助けを借りる事もできます。 しかしシステムプログラムでは、そのような便利な機能がなく、デバッグが大変難しくなっています。特に Linux 等の本格的な OS では、コーディングに沢山の約束事があって、それをちゃんと守らないと、後々おかしくなる場合があります。アドレスも論理アドレスだけでなく物理アドレスもありますので、ごっちゃにするとあらぬアドレスを参照してしまったりします。基本的にマルチスレッド動作なので排他制御もちゃんとしないと、動いたり動かなくなったりしますし、lock を間違えるとデッドロックしたり(だんまり状態)します。 変なバグをいれるとそこを通った瞬間にOSが停止しますので、デバッグのためのプリント文も役にたたなかったりします。最悪ファイルシステムを壊してしまったりもします。もちろんデバッガを使ってデバッグすることは(ほとんど)できません。 ということで、システムプログラミングではより「慎重」で「安全」なプログラミングが必要になります。

noname#46996
質問者

お礼

詳しい説明をありがとうございました。 すごく勉強になりました。