本記事の内容
本記事は基本情報技術者試験におけるデータ管理とファイルシステムについて、情報及びコンピュータの素人目線から説明する記事です。
OSについて知っている必要があるため、以下の記事も併せてご覧ください。
本記事の位置づけ
開発ツール
人間が書いたプログラムが、コンピュータによって実行されるまでには、いくつかの変換が必要です。
これらの作業には開発ツールと呼ばれるプログラムが使われています。
基本情報技術者試験では、以下の3つの用語が頻出。
- 最適化コンパイラ
- リンカ
- 静的テストツール
プログラムが実行されるまで
下図は人間が書いたプログラムが、コンピュータで実行されるまでの過程を表した図です。
ソースコードとオブジェクトコード
コンピュータは0と1しか認識できませんが、人間は0と1の羅列はとても読みづらいです。
そこで人間はプログラム言語という人間にとって読みやすい言語を使ってプログラムを書いています。
それをコンピュータが理解できる形に変換することで、コンピュータに命令を出しています。
- 人間にとって読みやすいプログラム言語で書かれたプログラム:ソースコード
- 0と1の羅列に変換されたプログラム:オブジェクトコード
コンパイラ
コンパイラはソースコードをオブジェクトコードへ翻訳するツールです。
コンパイラは翻訳機
コンパイラの処理手順
コンパイラが実行する処理を細かく見ると、5つの処理を行うことで、ソースコードをオブジェクトコードに変換しています。
- 字句解析
ソースコードを細かい要素に分けて、間違いがないかチェックする - 構文解析
プログラムの文法が間違っていないかチェック - 意味解析
プログラムの手続きに矛盾がないかチェック - 最適化
計算の順序などを改善して、効率的なプログラムに変換する - コード生成
オブジェクトコードのプログラムを作る
なお、現在のコンパイラは、単にプログラムをオブジェクトコードに変換するだけでなく、上記のようにプログラムの最適化も行います。
このように最適化の手順を含むコンパイラのことを最適化コンパイラといいます。
リンカとロードモジュール
コンパイラが生成したオブジェクトコードは、コンピュータが読める形にはなっていますが、このままではまだ実行できません。
なぜなら、オブジェクトコードを実行するうえで必要となる別のオブジェクトコードやライブラリなどが1つにまとまっていないからです。
そこで、リンカというツールを使って、複数のオブジェクトコードとライブラリを1つにまとめて、実行できるプログラム(ロードモジュール)を生成します。
- リンカ
コンパイラが翻訳した複数のオブジェクトコードに、ライブラリなどを加えてコンピュータが実行できる1つのプログラムを作るツール - ロードモジュール
コンピュータが実行できるプログラム。
実行可能プログラムともいう。
ロードモジュールはローダと呼ばれるツールによって主記憶に格納され、CPUによって実行される。
テストツール
テストは
- 人間によるテスト
- コンピュータによるテスト
の2つに分けられます。
人間によるテストの代表例はレビューです。
位峰で、コンピュータによるテストは
- 静的テスト
プログラムは実行せず、ドキュメントやソースコードをチェックすることで、プログラムの間違いを見つけるテスト手法 - 動的テスト
プログラムを実行し、その結果からプログラムの間違いを見つけるテスト手法
に分けられます。
コンピュータによるテストでは、テストツールというプログラムの間違いを見つけるプログラムを用いてテストを行います。
なお、世の中には様々な津0るがありますが、試験によく出題されるのはソースコード解析ツールです。
- ソースコード解析ツール
ソースコードを解析して、プログラムの誤りを見つけるソフトウェア
インタプリタ
インタプリタとは、ソースコードを1文ずつ解釈しながら実行するツールです。
Pythonをイメージするとよいと思います。
コンパイラがソースコードを一括で変換するのに対し、インタプリタはソースコードを1文ずつ変換しながら実行します。
インタプリタは書いたソースコードをすぐに実行できるので、こうりつよくソフトウェアを開発できるというメリットがあります。
一方で、コンパイラのようにソフトウェアの最適化が行われないため、実行時の効率が悪いというデメリットがあります。
オープンソースソフトウェア
Eclipseとコピーレフトが頻出
オープンソースソフトウェアとは
オープンソース
オープンソースとは、ソースコードが公開されていて、誰でも自由に見たり、変更したりすることができるよいう考え方である。この思想の元に作られたソフトウェアがオープンソースソフトウェア(OSS)です。
Eclipse(えくりぷす)
Eclipseとは、OSSの統合開発環境です。
統合開発環境とは、テキストエディタやコンパイラ、テストツールなど開発に必要なツールが1つにまとまったソフトウェアです。
EclipseはJava言語によるシステム開発などで広く利用されています。
その他ソフトウェア
オープンソースソフトウェアのほかに商用ソフトウェアとパブリックドメインソフトウェアがあります。
- 商用ソフトウェア
企業が有料で販売するソフトウェア - パブリックドメインソフトウェア
著作権が放棄されたソフトウェア
コピーレフト
コピーレフト
コピーレフトとは、プログラムの著作者は作者が保持するが、誰もがプログラムの複製、改変、再配布ができ、さらに2次著作物(派生物)にもオリジナルと同じ配布条件を求める考え方である。コピーレフトのポイントは、2次著作物にもという文章です。
これは、改変したプログラムを再配布する場合はソースコードも公開しなければならないということです。
結
今回は、基本情報技術者試験における開発ツール、オープンソースソフトウェアについて、情報及びコンピュータの素人目線から説明しました。
ソースコードを書いてから実行される流れとして、コンパイラがソースコードをオブジェクトコードに変換し、リンカがオブジェクトコードとライブラリを連結し、ローダがロードモジュールを主記憶装置に格納し、実行されます。
オープンソースソフトウェアは、ソースコードが公開されていてだれでも自由に見たり変更したりできるソフトウェアです。
質問、コメントなどお待ちしております!
どんな些細なことでも構いませんし、この記事に限らず、「定理〇〇の△△が分からない!」などいただければお答えします!
Twitterでもリプ、DM問わず質問、コメントを大募集しております!
コメントをする