# ファイル管理(2 -04) ## ディレクトリ - ルートディレクトリ:階層構造の最上位のディレクトリ   - サブディレクトリ - カレントディレクトリ:現在の操作対象のディレクトリ ## パス指定 - 絶対パス指定 ... ルートディレクトリが起点 - 相対パス指定 ... カレントディレクトリが起点   → 1階層上のディレクトリに移動するには . . で表す ----------------   # プログラムの性質(2−05) - 再配置可能(リロケータブル) .. どこに配置しても実行可能 - 再入可能(リエントラント) .. 複数のタスクが同時に使用 - 再使用可能(リユーザブル) .. 再ロードしなくても使用可能 - 再帰的(リカーシブ) .. 自分自身を呼び出す   - 再帰関数 .. 終了条件まで処理を繰り返し、求めた値を代入 ---------------- # プログラム言語(2-06) ## プログラム言語 ### 1.低水準言語  コンピュータが理解しやすい機械語(近いもの含む)で記述 - 機械語 .. 1と0で構成、コンピュータが理解できる唯一の言語 - アセンブラ語 .. 機械語を1対1で記号に置き換えた言語 ### 2.高水準言語 人間が理解しやすい自然言語に近い形式で記述 - COBOL .. 事務処理向け - FORTRAN .. 科学技術計算向け - C++ .. C言語にオブジェクト指向の概念を取り入れた言語 - JAVA .. インターネットや分散システム環境で利用されるオブジェクト指向型言語 ## 言語プロセッサ 原始プログラムを機械語に翻訳するためのプログラムの総称 - アセンブラ .. アセンブラ言語 ⇨ 機械語 - **インタプリタ** .. 高水準言語のプログラムを**1命令ずつ**解釈して実行する          *例) PHP, Perl, **Python**, etc* - **コンパイラ** .. 高水準言語のプログラムを**一括して**機械語に翻訳する          *例) C, C++, FORTRAN, COBOL, **Swift**, etc* - ジェネレータ .. 処理の目的に応じたプログラムを自動的に生成する ## ソフトウェアの作成手順(コンパイル方式)   **原始プログラム**     ⬇︎ *コンパイル* byコンパイラ    ⬇︎  **目的プログラム**(※)    ⬇︎ *リンク* byリンカ    ⬇︎   +ライブラリモジュール **ロードモジュール**    ⬇︎ *ロード* byローダ    ⬇︎   [実行] (※)原始プログラム(ソースプログラム)を機械語に翻訳したもの ### ■コンパイラ 4ステップ!! **1.字句解析** プログラムを表現する文字の列を、意味のある最小の構成要素の列(トークン)に変換する 例) hoge=100+10-30      ↓ hoge,=,100,+,10,-,30 **2.構文解析** 言語の文法に基づいてプログラムを解析し、文法誤りがないかチェックする **3.意味解析** 変数の宣言と使用とを対応付けたり、演算におけるデータ型の整合性をチェックする **4.最適化** レジスタの有効利用を目的としたレジスタ割付けや、不要な演算を省略するためのプログラム変換を行う(=プログラムの実行時間の短縮) ### ■リンク - 動的リンキング .. **必要になった時点で**ライブラリやモジュールをロード - 静的リンキング .. 開発時に必要なプログラムを**事前に**すべてリンクしておく            (それ単体で実行可能) ### ■ロード ロードモジュールを主記憶上にロードする ## デバッグツール(デバッガ)  プログラムに潜んでいるバグを発見し修正を支援をするツール。  (ダンプファイル:ダンプした内容を出力したファイル) - トレーサ .. 命令の実行順序や結果の**履歴**を出力 - スナップショットダンプ .. 特定の命令の**実行ごとに**メモリの内容を出力 - ファイルダンプ  .. **磁気テープファイルや磁気ディスクファイルなどの**内容を出力 - メモリダンプ .. 実行中に**エラーが発生したときに**メモリの内容を出力 ## 統合開発環境(IDE)  プログラミングに必要なソフトウェア(※)が統合された開発環境   (※)エディタ、コンパイラ、デバッガなど 例)Eclipse(Java等の開発), Xcode, Android Studio       ###### tags: `基本情報技術者試験`