システムソフトウェア
[Wikipedia|▼Menu]
プログラマはハードウェアやその他のシステムの特徴を前提として、それらを利用してコードを作成する。例えば、そのハードウェアで効率がよいとわかっているアルゴリズムを採用したりする。

以下のような低レベルなプログラミング言語が使われることが多い。

リソースに制限のある環境で動作可能な言語を使う。

効率がよく、実行時オーバーヘッドの小さい言語を使う。

ランタイムライブラリが非常に小さいか、全くライブラリを持たない言語を使う。

メモリアクセスや制御構造を直接制御できる。

プログラムの一部を直接アセンブリ言語で書くことが出来る。


リソースが制限されているためデバッガが使えない場合もあり、そうするとデバッグが困難になる。このため、エミュレータ上でデバッグを行ったりする。

システムプログラミングはアプリケーションプログラミングとかなり異なるため、プログラマはそれぞれの領域に特化する傾向がある。高い実行効率が求められるため、プログラマーにはアルゴリズムとデータ構造に関する深い知識が要求されることもあるが、資源の制約などで高度なアルゴリズムやデータ構造が使えないという縛りの下でのプログラミングが必要なこともある。

システムプログラミングでは、プログラミングに利用できる道具が制限されることが多い。ガベージコレクションは一般的ではないし、デバッグが困難な場合もある。ランタイムライブラリはあったとしても貧弱で、あまりエラーチェックをしない。このような制限があるため、モニタリングデータロギングといった技法が使われることが多い。オペレーティングシステム(特にカーネル)はそのようなロギングを多用している。

古くは、システムプログラマは例外なくアセンブリ言語を使っていた。高水準言語をシステムソフトウェアに使った初期のものとしては、バロース B5000ALGOLMulticsPL/Iがある。1960年代後半から、BLISSBCPLC言語などが使われるようになり、UNIXの普及もあって1980年代にはそれが一般化した。macOSのI/O Kitドライバなどでは、Embedded C++ が使われることもある。

21世紀に入ると、セキュリティの重要性が否応にも増していることから、型システムによってより強い安全性が保証されたプログラミング言語でシステムソフトウェアを書くことも、研究レベルでは進んでいる。

オペレーティングシステムやネットワーク関連の実装ではシステムプログラミングが必要となる(例えば、仮想記憶を実装する場合やデバイスドライバを実装する場合など)。
関連項目

ソフトウェア工学

オペレーティングシステム

アプリケーションソフトウェア

ファームウェア

脚注^ a b c d e f g IT用語辞典、システムソフトウェア
^ Lexico, system software
^Mitsuhisa Sato講義ノート「言語処理系とは」

外部リンク

Webopedia

sourceforge.net

典拠管理データベース: 国立図書館

フランス

BnF data

ドイツ

イスラエル

アメリカ


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:14 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef