基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,開発ツールについてシンプルにまとめています。ソフトウェア開発言語,プログラム言語,プログラム言語の分類(低水準言語,高水準言語,手続型言語,非手続型言語),低水準言語(機械語,アセンブラ言語),高水準言語(C言語,COBOL,Fortran,BASIC,Java,C++,C#,Phthon,Swift),スクリプト言語(PHP,Ruby,JavaScript),マークアップ言語など(HTML,XML,CSS,SQL),言語プロセッサ(言語処理系),言語プロセッサの種類(アセンブラ,コンパイラ(ソースプログラム(原始プログラム),字句解析,構文解析,意味解析(三つ組形式,四つ組形式,逆ポーランド表記法(後置表記法)),最適化,コード生成,オブジェクトプログラム(目的プログラム),ライブラリファイル(ライブラリ),リンカ(連係編集プログラム),ロードモジュール(実行可能ファイル),ローダー),インタプリタ,中間コード方式,仮想マシン,ジェネレータ),開発支援ツール(デバッグを支援するツール(静的解析ツール,動的解析ツール),テストを支援するツール(カバレージモニターなど),IDE(統合開発環境))について簡単に説明しています。覚えることが多いですが,しっかり頑張りましょう。
ソフトウェア開発言語
プログラム言語
プログラム言語とは,コンピュータープログラムを記述・編集するために用いる言語のことをいいます。
低水準言語
低水準言語とは,コンピューターが理解しやすい言語のことをいいます。
※ 人間には理解しにくい
機械語 | コンピューターが,直接理解できる言語。0,1のビット列で表される |
アセンブラ言語 | 機械語の命令を,(人間が理解しやすい)アルファベットの命令語に対応させた言語 |
高水準言語
高水準言語とは,人間が理解しやすい人間寄りの言語のことをいいます。
C言語 | コンパイラ型 | オペレーティングシステム(OS)など,組み込みシステムの開発に適している言語 |
COBOL | コンパイラ型 | 会計処理や事務処理などの業務システムの開発に適している言語 |
Fortran | コンパイラ型 | 科学技術計算に適している言語 |
BASIC | インタプリタ型 | プログラミングの入門用に利用されていた言語 |
Java | コンパイラ型 | 業務システムやWebアプリケーション,モバイルアプリケーションの開発に適している言語。オブジェクト指向プログラミングをサポートしている。Javaで作成したプログラムは,JVM(Java Virtual Machine;Java仮想マシン)により,基本的にはどのようなコンピューターでも動作する |
C++ | コンパイラ型 | C言語を拡張した言語で,オブジェクト指向プログラミングをサポートしている |
C# | コンパイラ型 | Windows向けのアプリケーションやWebアプリケーション,(Unityなどを使用した)ゲームの開発に適している言語。オブジェクト指向プログラミングをサポートしている |
Python | インタプリタ型 | Webアプリケーションの開発や,データ処理,人工知能(AI)などの分野に適している言語 |
Swift | コンパイラ型 | MacやiPhoneなど,Apple製品向けのアプリケーションの開発に適している言語。オープンソース化されている |
スクリプト言語
スクリプト言語とは,簡単なプログラムを記述・実行できるように,仕様を簡略化した言語のことをいいます。
PHP | インタプリタ型 | Webアプリケーションの開発に特化した言語。オブジェクト指向プログラミングをサポートしている。データベースとの連携や動的コンテンツの生成(動的なWebページの生成)が容易にできる |
Ruby | インタプリタ型 | Webアプリケーションの開発に適している言語。オブジェクト指向プログラミングをサポートしている |
JavaScript | インタプリタ型 | Webページの作成に適している言語。JavaSciptで作成したプログラムはWebブラウザ上で実行することができる |
マークアップ言語,その他
マークアップ言語とは,文書の見栄えを指定するデータ(タグなど)を記述する言語のことをいいます。
HTML | Webページの論理的な構造の記述に適している言語 |
XML | 文書やデータの論理的な構造の記述に適してる言語。独自のタグを定義可能 |
CSS | Webページの見栄えなどの記述に適している |
SQL | 関係データベースの管理や操作をするための言語 |
言語プロセッサ(言語処理系)
言語プロセッサとは,プログラム言語で記述されたソースプログラムを,(コンピューターで実行するために)オブジェクトプログラムに変換するソフトウェアのことをいいます。
※ ソース(原始)プログラム…人間がプログラム言語を使用して記述したプログラム
※ オブジェクト(目的)プログラム…機械語に変換されたプログラム
言語プロセッサの種類
アセンブラ
アセンブラは,アセンブラ言語で記述されたソースプログラムを機械語に変換するソフトウェアです。
コンパイラ
コンパイラは,高水準言語で記述されたソースプログラムを機械語に変換するソフトウェアです。
※ 変換過程で最適化されるため実行速度が速い
※ オブジェクトプログラムだけでは実行できない(オブジェクトプログラムから呼び出されるコードが記述されている他のオブジェクトプログラムやライブラリファイルなどと連結していないため)
字句解析 | ソースプログラム内の文字列を,予約語や定数,区切り記号などの最小単位(トークン)に分解する |
構文解析 | トークンを読み込んで構文木を生成し,構文規則に従っているかをチェックする |
意味解析 | 変数の使用や演算におけるデータ型の整合性などをチェックし,(最適化を行いやすくするために)中間コードに変換する ※ 中間コードには,三つ組形式や四つ組形式,逆ポーランド表記法(後置表記法)などがある ※ 四つ組形式の例)(+.A,B,T)⇒ T=A+B |
最適化 | プログラムのサイズを小さくしたり,実行速度を向上させるために構造を変換させるなどする |
コード生成 | オブジェクトプログラムに変換する |
リンカ(連係編集プログラム)
リンカは,オブジェクトプログラムやライブラリファイルなどを連結してロードモジュール(実行可能なファイル)を作成するソフトウェアです。
ローダー
ローダーは,ロードモジュールを実行するソフトウェアです。
※ ロードモジュールを主記憶装置の指定されたアドレスにロードし実行する
インタプリタ
インタプリタは,高水準言語で記述されたソースプログラムを機械語に変換しながら実行するソフトウェアです。
※ 変換しながら実行するため,実行速度は(コンパイラ型に比べて)遅い
※ ソースプログラムを即座に実行できるため,開発や修正が容易
中間コード方式
中間コード方式は,ソースプログラムを仮想マシン上で実行できるバイトコードに変換する方式です。実行時には,中間コードを,実行先のコンピューターの仕様に合ったネイティブコードに変換してから実行します。
※ 中間コード…特定のOSやハードウェアに依存しないコード
※ 動的コンパイル…プログラムの実行当初は,中間コードをインタプリタとして実行し,繰り返し実行される処理については実行途中にコンパイルして実行する方式。実行速度の向上が期待できる(Javaなど)
仮想マシン
仮想マシンとは,コンピューターの機能を仮想的に構築したソフトウェアのことをいいます。
※ 仮想マシン上でOSを動作させることができる ⇒ 利用者からは物理的なコンピューターのように見える
ジェネレータ
ジェネレータとは,プログラムコードなどを自動的に生成するソフトウェアのことをいいます。
※ 処理などに必要な条件を指定することで,自動的にプログラムが生成される
開発支援ツール
デバッグを支援するツール
静的解析ツール
静的解析ツールは,(プログラムを実行せずに行う)静的テストを支援するツールです。
※ 静的テストには,プログラムを1行1行トレースしたり,プログラムに記述されている文などを検証したりするものなどがある
※ 詳細は,「」を参照
動的解析ツール
動的解析ツールは,(プログラムを実行しながら行う)動的テストを支援するツールです。
※ 動的解析ツールには,ダンプツールやトレーサー,アサーションチェッカーなどがある
※ 詳細は,「」を参照
テストを支援するツール
ドライバ/スタブなどの 生成ツール | 結合テストで必要となるダミーのテスト用モジュール(ドライバやスタブ)やテストケースを生成するツール |
カバレージモニター | プロブラム内の経路のうち,どのくらいの割合をテストしたかを算出するツール |
IDE(Integrated Development Environment;統合開発環境)
IDEとは,ソフトウェア開発に必要な機能をひとまとめにしたソフトウェアのことをいいます。ソースプログラムを記述するためのエディターや,コンパイラ,デバッガ,バージョン管理機能などを持っているものが多いです。
※ Microsoft社の「Visual Studio」や,Apple社の「Xcode」,オープンソースソフトウェアの「Eclipse」などがある
まとめ
今回は,開発ツールについて,シンプルにまとめてみました。たくさんありましたが,基本的な内容ですので,確実に覚えるようにしましょう。