| 受験者は以下的能力を備えているべきである: | メモおよびガイドライン |
|---|---|
| コンピュータシステムがオペレーティングシステム (OS) を必要とする理由を説明する | |
| オペレーティングシステムが行う主要な管理タスクを説明する | メモリ管理, ファイル管理, セキュリティ管理, ハードウェア管理(入力/出力/周辺機器), プロセス管理 を含む |
| オペレーティングシステムに提供される一般的なユーティリティソフトウェアの必要性を理解する | ディスクフォーマッタ, ウイルスチェック, デフラグメーションソフト, ディスク contents アナリシス / ディスク修復ソフト, ファイル圧縮, バックアップソフト を含む |
| プログラムライブラリを理解する | 開発中のソフトウェアは多くの場合、プログラムライブラリからの既存コードで構成される • ライブラリファイルを使用して構築されたソフトウェアによる開発者への利点、特にダイナミックリンクライブラリ (DLL) ファイルを含む |
システムソフトウェア
A-Level コンピューター科学 · トピック 5
21:02
オペレーティングシステム
あなたは一度も見たことがなく、これからも見ることはない——それにもかかわらず、常にそこにあります。開くアプリ、保存するファイル、画面をタップする每一次に、見えない…
英語ナレーション・英語+中文字幕 burning-in
5.1
オペレーティングシステム
シラバス
出典: Cambridge International シラバス
コンピュータがOSが必要な理由
ハードウェアだけでは指令を取得・実行するだけであり、ファイル、プログラム、ネットワーク、ユーザーについては何も知らない。オペレーティングシステム(OS) は以下のことをするソフトウェアレイヤーである。
- ハードウェアを管理する(プロセッサ、メモリ、I/O、ストレージ) running programsのため。
- サービスを提供する(ファイルシステム、ネットワーク、ユーザーアカウント)明確なインターフェースを通じて提供されるため、プログラムはハードウェアに直接通信する必要がない。
- ユーザーインターフェースを提供する(コマンドライン、GUI、タッチ操作)。
- 複数のプログラムがハードウェアを安全に共有できる — 各プログラムには公平なCPU時間が割り当てられ、他のプログラムのメモリ領域に干渉しないように管理される。
OSがない場合、すべてのプログラムに独自のドライバーが必要となり、一度に安全に動作できるのは一つのプログラムだけとなる。
「OSの目的を説明せよ」— 5点リスト。 OS (1) ユーザーとハードウェアの間にインターフェースを提供します;(2) ハードウェアの複雑さをユーザーおよびアプリケーションプログラムから隠蔽します;(3) ハードウェアリソースを管理します — プロセッサ時間、メモリ、ストレージ、入力/出力デバイス — およびプログラム間でそれらを共有します;(4) アプリケーションソフトウェアをメモリに読み込んで実行し、すべてのプログラムが同じプラットフォーム上で動作できるようにします;(5) 複数のプログラムを同時に動作させること(マルチタスク)を可能にしつつ、プログラムやユーザーのデータを安全に保ちます。5つの異なるポイントを挙げること。単に「コンピュータを動かす」「リソースを管理する」とだけでは点数は得られない。


主要な管理タスク
カリキュラムでは5つが挙げられている。以下の各ポイントはOSが実際に行う作業の一つであり、「説明せよ」の問題が求めている内容である。
- メモリ管理 — プログラムが読み込まれた際にメモリを割り当て、各プログラムのメモリを分離して保持する(メモリ保護)ことで、一つが他を上書きできないようにし、プログラム終了時にメモリを解放する。また、RAMと二次記憶装置(ディスク)の間でページをスワップする(仮想メモリ / ページング)ことで、物理メモリの容量よりも多くのプログラムを開いておけるようにする。
- プロセス管理 — 動作中のプログラムはプロセスと呼ばれる。OSはプロセスを作成・終了させ、次のどのプロセスにCPUを割り当てるか(スケジューリング)を決定し、その処理時間(タイムスライス)を指定する。プロセス間の切り替えを行い、2つのプロセスが同一のリソースを要求した際の競合を解決し、応答しなくなったプロセスを強制終了することもできる。
- ハードウェア管理(入出力および周辺機器) — デバイスドライバを通じて各デバイスと通信し、プリンタなどの低速デバイスへのデータ転送をキューやバッファで待機させ、デバイスからの割り込みに応答し、1台のデバイスを複数のプログラムで共有する。
- ファイル管理 — ファイルやフォルダの作成、命名、コピー、移動、削除を行う。磁盘上の各ファイルの格納場所を記録するディレクトリ構造を維持し、ファイルにディスクスペースを割り当て、各ユーザーに対してアクセス権限(読取り/書込み/実行)を適用する。
- セキュリティ管理 — ユーザーアカウントとパスワード(認証)、アクセス権限、保存データの暗号化、ファイアウォール、自動セキュリティアップデート、および誰が何を行ったかのログ。


メモリ管理とプロセス管理がマルチタスクをどう支えるか(4点満点の人気問題)。メモリ管理は複数のプログラムを同時にメモリに読み込み、それぞれを独立した保護領域に収め、どのアドレスがどのプログラムに属するかを追跡する。プロセス管理はプロセッサーをこれらで共有する — 各プロセスは一定のタイムスライスだけ実行され、OSはその状態を保存して次のプロセスに切り替える。この切り替えが非常に速いため、すべてのプログラムが同時に動いているように見える。割り込みにより、OSはデバイスに注意が必要なたびにプロセスからプロセッサーを取り戻せる。
割り込み。 ハードウェア割り込みはデバイスから発生する:キー押下、マウスクリック、紙切れ、ディスク転送完了、停電など。ソフトウェア割り込みはプログラムから発生する:ゼロ除算、無効な命令、所有していないメモリの使用試み、またはOSサービスの要求など。OSの割り込みハンドラは動作中のプロセスの状態を保存し、割り込みを処理した後、プロセスを復元する(トピック4ではfetch–executeの詳細を扱う)。
ユーティリティソフト
ユーティリティプログラムは、ユーザーのタスクを行うのではなく、コンピュータの保守、修理、最適化を行うシステムソフトウェアである。採点者は「パフォーマンスやセキュリティを向上させる特定の保守タスクを実行する」という表現も許容する。ほとんどのOSにはこれらの機能がパッケージされている:

- ディスクフォーマッタ — 新しいディスク(または古いディスクの消去)を使用準備にする:既存のデータを削除してファイルシステムとパーティションを設定する。
- ウイルスチェッカー(アンチウイルス) — ファイルとメモリをスキャンし、コードを既知のウイルスシグネチャデータベースと比較し、不審な挙動を監視する。その後、検出物を隔離または削除する。スケジュールに基づいて実行され、ダウンロード時にも動作し、新しいウイルスが出現するたびに更新が必要である。
- デフラグソフト(ディスクデフラグツール) — ハードディスクは、利用可能なブロックを順に割り当ててファイルを格納するため、多数の保存や削除が行われるとファイルが散らばり(断片化)、読み書きヘッドが各部分間を移動する必要がある。デフラグツールは各ファイルの断片を隣接させ、空きスペースを一つの領域に集約することで、ファイルの読み込み速度が向上し、新しいファイルも断片化されずに格納される。SSDには可動ヘッドがないため不要である。
- ディスク内容分析 / ディスク修復ソフト — どのファイルがディスク容量を使用しているか(大容量、重複、一時ファイルなど)を表示して削除可能にし、不良セクター、ロストクラスタ、ファイルシステムエラーを検出・修復する。
- ファイル圧縮(圧縮) — ファイルを圧縮して必要なストレージ容量を削減し、転送速度を速くする。アーカイブ機能は複数のファイルを一つのファイルに束ねる。
- バックアップソフト(バックアップ) — 設定されたスケジュールでファイルを別の媒体(外部ディスク、ネットワーク、クラウド)にコピーし、データ損失、破損、またはランサムウェア攻撃後に復元できるようにする。完全バックアップ後、変更分のみを記録する増量バックアップが行われる。
- ファイアウォール(ルールに基づいてネットワークトラフィックをフィルタリング)および暗号化ツールによるセキュリティ対策。システムモニターと自動的なアップデート。
これらをOSに同梱することで、ユーザーが個別にインストールする必要がなくなる。
各ユーティリティの役割。 パフォーマンス: デフラグ(ファイルアクセスの高速化)、ディスク修復(エラーのあるディスクは遅延または故障)、ディスク内容分析(不要ファイルの削除による空き容量確保)、圧縮(ディスクへの収容量の増加)。セキュリティ: ウイルスチェック、ファイアウォール、暗号化、バックアップ(ランサムウェアに対する唯一の復元手段)。「線を引く」問題では各ユーティリティを一つの目的と正確にペアリングする — 上記のペアとカリキュラムの名称を覚えること。
** worked example(解題例)。** デフラグがコンピュータのパフォーマンスを向上させる仕組みを説明せよ(3点満点)。
時間とともにファイルはハードディスク上の分散したブロックに格納されるため、読み取りには読み書きヘッドの多くの移動が必要となる。デフラグツールはブロックを再配置し、各ファイルを連続的に格納し、空きスペースをまとめて配置する。その結果、ファイル読み取り時のヘッド移動数が減少し、読み込みが速くなり、新しいファイルも連続したスペースに書き込まれる。
オペレーティングシステムの位置づけ
各レイヤーをタップせよ。OSは中央のレイヤーであり、アプリケーションとハードウェアの間に位置し、機械を安全に共有することでプログラムがハードウェアに直接触れないようにする。
| English | 日本語 |
|---|---|
| operating system/ˈɒpəreɪtɪŋ ˈsɪstəm/ | オペレーティングシステム |
| processor/ˈprəʊsesə/ | プロセッサー |
| multitasking/ˈmʌltitæskɪŋ/ | マルチタスク |
| memory management/ˈmeməri ˈmænɪdʒmənt/ | メモリ管理 |
| memory protection/ˈmeməri prəˈtekʃn/ | メモリ保護 |
| RAM/ræm/ | RAM |
| secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ | 補助記憶 |
| virtual memory/ˈvɜːtʃuːəl ˈmeməri/ | 仮想メモリ |
| paging/ˈpeɪdʒɪŋ/ | ページングである |
| process management/ˈprəʊses ˈmænɪdʒmənt/ | プロセス管理 |
| process/ˈprəʊses/ | プロセス |
| scheduling/ˈʃedjuːlɪŋ/ | スケジューリング |
| time slice/taɪm slaɪs/ | タイムスライス |
| device driver/dɪˈvaɪs ˈdraɪvə/ | デバイスドライバ |
| interrupts/ˈɪntərʌpts/ | 割り込み |
| directory/daɪˈrektəri/ | ディレクトリ |
| access rights/ˈækses raɪts/ | アクセス権限 |
| authentication/ɔːˌθentɪˈkeɪʃn/ | 認証 |
| firewall/ˈfaɪəwɔːl/ | ファイアウォール |
| hardware interrupt/ˈhɑːdweə ˈɪntərʌpt/ | ハードウェア割り込み |
| software interrupt/ˈsɒftweə ˈɪntərʌpt/ | ソフトウェア割り込み |
| interrupt handler/ˈɪntərʌpt ˈhændlə/ | 割り込みハンドラ |
| utility program/juːˈtɪlɪti ˈprəʊɡræm/ | ユーティリティプログラム |
| antivirus/ˌæntɪˈvaɪrəs/ | ウイルス対策ソフト |
| backup/ˈbækʌp/ | バックアップ |
| compression/kəmˈpreʃn/ | 圧縮を使う |
| disk defragmenter/dɪsk ˌdiːˈfræɡmentə/ | ディスクデフラグメンター |
| signatures/ˈsɪɡnɪtʃəz/ | シグネチャである |
| fragmented/fræɡˈmentɪd/ | 分断型(fragmented) |
| incremental backups/ˌɪŋkrɪˈmentl ˈbækʌps/ | 増分バックアップ |
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | プログラムライブラリ |
| subroutines/ˈsʌbruːtiːnz/ | サブルーチン |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | ライブラリルーチン |
| static library/ˈstætɪk ˈlaɪbrəri/ | 静的ライブラリ |
5.1
プログラムライブラリ
プログラムライブラリとは、サブrutine、クラス、モジュールなどの事前作成済みコードであり、プログラム側が自ら記述する代わりに再利用する — 数学ライブラリ、ネットワークライブラリ、グラフィックスライブラリなどが該当する。

利点: 時間の節約(市販コード)、信頼性(充分なテスト済み、広く使われている)、標準化(一貫した挙動)。
評価官が期待する開発者向けのメリットリスト。 ライブラリルーチンは既に記述・テスト済みであるため、開発が迅速かつ安価である。また、信頼性が高く、多くのプログラムによって使用されているため largely error-free(ほぼバグがない)。開発者はその分野(グラフィックス、圧縮、暗号化、経路探索など) expertise(専門知識)を必要としない。共通コードが一处に存在するため、プログラムの保守管理が容易である。チーム全員が同じルーチンを使用できるため、一貫した結果が得られる。欠点: ルーチンが完全にニーズを満たさない場合があり、修正できない。ライブラリが利用可能で、正しく、安全であることが必須であり、ライブラリのバグやセキュリティホールは自身のプログラムのバグとなる。呼び出し方を学ぶ必要がある。
- 静的ライブラリ はコンパイル時に実行ファイルにコピーされる(単独動作可能だが、サイズが大きく、更新には再ビルドが必要)。
- 動的ライブラリ(DLL, Dynamic Link Library;
.so) は実行時にロードされる(実行ファイルが小型、複数のプログラムで共有、一度更新すれば全て対応)。
*静的: ライブラリは実行ファイルにコピーされる。動的: 共有ライブラリファイルは実行時にロードされる。
Dynamic Link Library (DLL) ファイル。 DLL は、プログラムが呼び出した瞬間にのみメモリにロードされ、実行時に実行ファイルにコピーされるのではなく独立したファイルとして残るライブラリである。利点: 実行ファイルが小さくなる。複数の実行中のプログラムがメモリ上で DLL の一つのコピーを共有する。DLL を更新(バグ修正、新デバイス対応)しても使用するプログラムの再コンパイルが不要。メモリはルーチンが必要な間のみ使用される。欠点: DLL が欠落、移動、あるいは誤ったバージョンの場合、プログラムは動作しない。更新された DLL により、旧動作に依存していたプログラムが壊れる可能性がある。偽の DLL に差し替えられれば、そのプログラムと同じ権限で動作する。
** worked example(解題例)。** レストランロボットのソフトウェアを開発するチームが、テーブル間の最短経路を探すルーチンを含むプログラムライブラリを使用する場合、チームにとっての二つの利点と一つの欠点を説明せよ。
利点: ルーチンは既に記述・テスト済みであるため、チームは時間を節約でき、結果を信頼できる。経路探索アルゴリズム自体を理解する必要がなく、ロボット独自の機能開発に時間を割ける。欠点: ルーチンがレストランの具体的なニーズ(椅子の移動、片道通路など)を完全に処理できない可能性があり、チームがそれを修正できないため、制限を回避するための工夫が必要になるかもしれない。
コンピューティング概念ラボ
具体的な例を、それが示すコンピューティングのアイデアに基づいて分類せよ。
5.2
ランゲージトランスレーター(言語翻訳器)
シラバス
| 受験者は以下的能力を備えているべきである: | メモおよびガイドライン |
|---|---|
| 以下の必要性を理解する: • アセンブラソフトによるアセンブリ言語プログラムの翻訳 • コンパイラによるハイレベル言語プログラムの翻訳 • インタプリタによるハイレベル言語プログラムの翻訳と実行 | |
| コンパイラまたはインタプリタを使用することの利点と欠点を説明し、それぞれの使用を正当化する | |
| ハイレベル言語プログラムが部分的にコンパイルされ、部分的に解釈される可能性があることに留意する(Java(コンソールモード)など) | |
| 一般的な統合開発環境 (IDE) に見られる特徴を説明する | コーディングには、文脈依存プロンプトを含む • 初期エラー検出には、動的構文チェックを含む • 表示には、prettyprint、コードブロックの展開と折りたたみを含む • デバッグには、ステップバイステップ、ブレイクポイント、つまり変数、式、レポートウィンドウを含む |
出典: Cambridge International シラバス
ソースコードは人間が記述するが、コンピューターは機械語を実行する。翻訳器はこの両者を相互に変換する。
アセンブラ
アセンブラはアセンブリ言語を機械語に変換します:各MNEMONIC命令(LDD, ADD, JMP)はちょうど1つの機械語命令に変換され、記号アドレスやラベルは実在のアドレスに置き換えられます。プロセッサが機械語のみを実行できるため必要であり、プログラマがハードウェアを直接制御したい場合(組み込みシステム、デバイスドライバ)に使われます。
コンパイラ
コンパイラは高レベルプログラムを一度だけ変換して実行前に機械語に変換します。
- コンパイル時にすべてのエラーを報告します;クリーンな状態になれば、コンパイラなしでも動作する独立した実行可能ファイルを生成し、複数回実行可能です。
- 一般的に実行時に速い(実行中に翻訳しない)、ただし1つのCPU/OSに依存するため、プラットフォームごとに再コンパイルが必要です。
2点満点の説明:コンパイラは高レベルプログラム全体を実行前に機械語(オブジェクトコード)に変換し、実行可能ファイルを生成し、翻訳の最後にすべての構文エラーを一覧として報告します。 プログラム自体は実行しません。
インタープリタ
インタープリタは高レベルプログラムを1行ずつ翻訳・実行し、実行可能ファイルを生成しません。
- その行に到達した際にエラーを報告して停止します;修正して継続できるため、開発に適しています。
- プログラムを実行するにはインタープリタがインストールされている必要があります;一般的に遅い(毎回再翻訳する)、しかしプラットフォーム間の移植は容易です。
2点説明:インタプリタは高レベルプログラムの1文を順に翻訳し、直ちに実行して次の文に進みます;実行可能なファイルは生成されません;遭遇した最初のエラーで停止し、それを報告します。 プログラムを実行するたびに、ソースコードとインタプリタの両方が存在している必要があります。

どちらを選ぶか
| コンパイラを使用する場合: | インタプリタを使用する場合: |
|---|---|
| 実行時の速度が重要である場合 | 編集から実行までのサイクルを素早くしたい場合 |
| デベロップメントツールなしでユーザーに配布する場合 | クロスプラットフォーム用スクリプトを書く場合 |
| プログラムを多数回実行する場合 | プログラムが小さい、または一度だけ実行する場合 |
| 初心者の教育に |
採点基準に記載されている利点と欠点。
| コンパイラ | インタープリタ | |
|---|---|---|
| 実行速度 | 速い — すでに機械語であるため | 遅い — 毎回翻訳されるため |
| ユーザーが必要とするもの | 実行可能なファイルのみ必要です。翻訳者も不要であり、ソースコードは秘密に保たれます | ソースコードとインタプリタ |
| エラーの検出 | 全プログラムが翻訳された後に、すべてのエラーが一括してリスト表示される | 開発中に発生した各エラーが該当する行で即座に報告される |
| コードの変更 | 変更ごとにプログラム全体を再コンパイルする | 編集後、すぐに再度実行できる |
| ポータビリティ | 機械語は1つのプラットフォームでのみ動作するため、各プラットフォームごとに再コンパイルが必要 | インタプリタが存在するあらゆる場所で同じソースコードが動作する |
演習例。 開発者は、プログラム作成時にインタプリタを使用し、完了時にはコンパイラを使用します。それぞれ如何使用を説明してください(4点)。
開発中、インタプリタは完全な翻訳を待たずに部分実装済みのプログラムを直ちに実行します。エラーが発生すると対応する行を報告するため、開発者は修正後すぐに再度実行できます。これはデバッグしやすい高速な編集-実行サイクルを提供します。プログラムが完成した後、コンパイラは全プログラムを実行可能なファイルに翻訳します。これにより、より高速に動作し、ユーザーのコンピュータ上で翻訳者を必要とせず、ソースコードも開示されないため、一般に販売することが可能になります。
ハイブリッド:Java
Javaはバイトコード(プラットフォームに依存しない中間形式)にコンパイルされ、仮想マシン(JVM)によって解釈されます、あるいは** JITコンパイル**を使用してホットな部分をネイティブコードに変換します。そのため、エラーが早期に検出され、JVMがあるあらゆる場所でのバイトコード実行が可能となり(「一度書けば、あらゆるところで動作」)、長期間動作するプログラムはほぼネイティブレベルの速度に達します。C#やPythonも同様の設計を採用しています。
カリキュラムの用語は「部分的にコンパイルされ、部分的に解釈される」です:コンパイル段階では構文エラーを検出し、コンパクトでポータブルなバイトコードを生成します。解釈段階では、この1つのバイトコードファイルを、仮想マシンを持つあらゆるマシンの上で動作させることができますが、その分速度が犠牲になります。コンソールモード(コマンドラインから実行されるテキストプログラム)のJavaがカリキュラムの例として挙げられています。

worked example. Javaソースコードはバイトコードにコンパイルされ、その後JVMによって解釈される。なぜ機械言語に直接コンパイルするのではなく、この二つのステップを踏むのか? コンパイラは一つのプロセッサとオペレーティングシステム向けの機械言語を生成するため、あるマシンでコンパイルされたプログラムは別のマシンでは動作しない。Javaのコンパイラは代わりに仮想マシンをターゲットにするため、生成されるバイトコードはどの環境でも同一であり、各プラットフォームは独自のJVMを提供してそのバイトコードを自身のネイティブ命令に解釈する。したがって、一度コンパイルしたファイルはJVMが存在するどこでも動作する=「一度書けば、どこでも実行可能」。その代償は速度である:バイトコードの解釈はネイティブコードの実行より遅いため、実際のJVMはJITコンパイルも使用し、頻繁に実行されるバイトコードを実行中にネイティブコードに変換する。両方の名前を答えること。採点ポイントは、速度を犠牲にして得られたポータビリティであること。bought at the cost of speedという表現を含むこと。
コンパイラの経路:ソースから実行可能なプログラムへ
コンパイラがどう動作するかを確認する — プログラム全体を一度だけ翻訳してから実行する。インタプリタ(一行ずつ翻訳して実行する)と比較せよ。
| English | 日本語 |
|---|---|
| compiler/kəmˈpaɪlə/ | コンパイラ |
| object code/ˈɒbdʒekt kəʊd/ | オブジェクトコード |
| interpreter/ɪnˈtɜːprɪtə/ | インタプリタ |
| bytecode/ˈbaɪtkəʊd/ | バイトコード |
| virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ | 仮想マシン |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | ジャストインタイムコンパイル |
| portable/ˈpɔːtəbl/ | ポータブル |
| integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ | 統合開発環境 |
5.2
統合開発環境 (IDE)
統合開発環境(IDE)とは、コードの記述、テスト、デバッグに使用するツールを一つのアプリケーションにまとめたものです:

カリキュラムでは、これらの機能を4つのグループに分類しています。どの機能是哪个グループに属するかを理解し、問題でそれらを分類したり、各グループから1つずつ説明したりする準備をしておきましょう。
- コーディング用: コンテキスト敏感プロンプト — 入力中、 IDEがその地点に適した識別子、キーワード、パラメータをポップアップ表示します; オートコンプリート で名前を自動補完します; 自動インデントと括弧の対応により、入力中のレイアウトを適切に保ちます。
- 初期エラー検出用: 動的文法チェック — エディタが入力中に文法をチェックし、プログラムが翻訳される前に即座に誤りを下線またはハイライト表示します; 翻訳後には行番号付きのエラーメッセージが表示されます。
- 表示用: prettyprint — キーワード、識別子、文字列、コメントを異なる色やフォントで表示し(構文強調表示)、一貫性のあるインデントで構造を一目で確認できるようにします; コードブロックの展開と折りたたみ — ループ、IF文、サブROUTINの本体を非表示にして、アウトラインだけを表示します。
- デバッグ用: ブレイクポイント — プログラムが指定された行に到達すると一時停止します; ステップ実行 — 一時停止状態から、コードを1行ずつ実行します; 変数や式 の現在値が変化しながら表示されるウィンドウ; エラー、警告、出力をリスト表示する レポートウィンドウ。
その他の機能: トランスレータとの統合(1つのキーでコンパイル/実行、エラーをインライン表示)、上記のデバッグ機能を実行する デバッガー、バージョンコントロール 統合(git)、プロジェクト管理、ヘルプシステム、リファクタリング ツール(安全な名前変更)、ユニットテスト 統合。

IDEは、記述 → 実行 → デバッグ → 修正という一連のプロセスを1つのインターフェース内で行うことで開発速度を向上させます。一般的なIDE:Visual Studio, PyCharm, Eclipse, VS Code。

** worked example.** プログラムを実行した際、関数 Calculate() が予期しない値を返しました。一般的なIDEのデバッグ機能が原因の特定にどのように役立つかを説明してください(4点)。
関数 Calculate() の最初の行に ブレイクポイント を設定します。そうすると、プログラムは全体を実行するのではなく、そこで一時停止します。次に、関数を ステップ実行 して1行ずつ進めます。各ステップの後に、変数や、IDEに 監視 させている式の値を読み取り、予想していた値と比較します。値が正しくなくなった最初の行の直前が、ロジックエラーの場所です。レポートウィンドウ には、ランタイムエラーメッセージや、これまで生成された出力が表示されます。
** worked example.** 以下の各機能をカリキュラムのグループに割り当ててください:prettyprint, コンテキスト敏感プロンプト, 動的文法チェック, ブレイクポイント, コードブロックの展開/折りたたみ, レポートウィンドウ。
コーディング:コンテキスト敏感プロンプト。初期エラー検出:動的文法チェック。表示:prettyprint, コードブロックの展開/折りたたみ。デバッグ:ブレイクポイント, レポートウィンドウ。
| English | 日本語 |
|---|---|
| debugger/ˈdiːbʌɡə/ | デバッガー |
| context-sensitive prompts/ˈkɒntekst ˈsensɪtɪv prɒmpts/ | コンテキスト敏感プロンプト |
| auto-complete/ˈɔːtəʊ kəmˈpliːt/ | 自動完了 |
| dynamic syntax checks/daɪˈnæmɪk ˈsɪntæks tʃeks/ | 動態構文チェック |
| prettyprint/ˈpretɪprɪnt/ | prettyprint |
| syntax highlighting/ˈsɪntæks ˈhaɪlaɪtɪŋ/ | 構文ハイライト |
| breakpoints/ˈbreɪkpɔɪnts/ | ブレイクポイント |
| single stepping/ˈsɪŋɡl ˈstepɪŋ/ | 単一ステップ |
| report window/rɪˈpɔːt ˈwɪndəʊ/ | レポートウィンドウ |
| version control/ˈvɜːʃn kənˈtrəʊl/ | バージョン管理 |
| refactoring/rɪˈfæktərɪŋ/ | リファクタリング |
| unit test/ˈjuːnɪt test/ | 単体テスト |
5.2
出題者が認める定義
定義問題は固定された用語に基づいて採点されます。これらを正確に暗記し、一つの答えのみを答えてください。
| 用語 | 定義 |
|---|---|
| オペレーティングシステム | パソコンのハードウェアとリソースを管理し、ユーザー、アプリケーションプログラム、ハードウェアの間にインターフェースを提供するソフトウェア |
| ユーティリティソフト | 特定のタスク(ウイルスチェックやデフラグなど)を行ってコンピュータを維持・最適化・保護するためのシステムソフトウェア |
| プログラムライブラリ | プログラム自身が独自に記述する代わりに使用できる、事前に書かれておりテスト済みのルーチン(サブROUTIN、クラス、モジュール)の集合体 |
| 動的リンクライブラリ (DLL) | プログラムが呼び出したタイミングでのみメモリに読み込まれ、複数のプログラム間で共有されるルーチンを持つプログラムライブラリ |
| アセンブラ | アセンブリ言語のプログラムを機械言語に変換するトランスレーター。アセンブリ言語の各命令に対して1つずつ対応する。 |
| コンパイラ | 高レベル言語で書かれたプログラム全体を、実行前に機械語に変換し、実行可能なファイルを作成するトランスレータ |
| インタープリタ | 高レベル言語で書かれたプログラムを、1文ずつ翻訳しながら実行するトランスレータ |
| 統合開発環境 | プログラムの記述、翻訳、実行、デバッグに必要なツールを単一のアプリケーションとして提供するもの |
| コンテキスト敏感プロンプト | コードの現在の地点に適した識別子、キーワード、パラメータを提案するポップアップ |
| 動的文法チェック | コードを入力する際に文法をチェックし、翻訳される前にエラーを通知すること |
| prettyprint | キーワード、識別子、コメントを異なる色やフォントで表示し、一貫性のあるインデントを適用してコードを可読性を高めること |
| ブレイクポイント | 実行中のプログラムを一時停止させ、変数をęd査できるようにするための指定された行 |
| ステップ実行 | プログラムを一時停止させた状態で、プログラマーの操作に応じて1文ずつ実行すること |
5.2
試験対策
- シラバス名(メモリ、プロセス、ハードウェア、ファイルおよびセキュリティ管理)に基づきOSのタスクをリストアップし、各タスクが何をするかを説明する。「リソースを管理する」だけでは不十分である。
- コンパイラ vs インタープリタ vs アセンブラを比較する:それぞれが何を翻訳するか、いつ翻訳するか、そしてエラーがどのように報告されるかを説明する。
- IDEが提供するものをシラバスのグループ(コーディング、初期エラー検出、表示、デバッグ)を用いて説明する。
- 「開発者へのメリット」に関する回答は、開発者の節約要素(時間、コスト、専門知識、信頼性、保守)を挙げる。「デメリット」に関する回答は、依存関係(入手可能性、バージョン、適合性、セキュリティ)を挙げる。
- トランスレータの動作を「説明せよ」と問われた場合、3つの点を答える:何を翻訳するか(プログラム全体か1文単位)、いつ翻訳するか(実行前か実行中)、そしてエラーはどのように報告されるか(すべてまとめてか最初のエラーのみ)。
一般的なミス
- 「OSはコンピュータを制御している」や「リソースを管理している」という記述に具体的なタスク例がない場合。各マークは、名称とその動作が示された1つのタスクに対応する。
- インタープリタが「行ごとにコンパイルする」と言うのは誤りである。インタープリタは各ステートメントを翻訳して実行する; executable(実行可能ファイル)を生成することはない。
- コンパイラがプログラムを実行すると言うのは誤りである。コンパイラは翻訳するのみであり、executableは後にコンパイラなしで実行される。
- DLLを「実行可能ファイルの内部に置く」のは誤りである。それは静的ライブラリであり、DLLは別ファイルとして残され、実行時にロードされる。
- デフragmentation(断片化解除)がファイルを「削除」したり「圧縮」したりする、あるいはSSDで必要であると語るのは誤りである。ブロックを移動させて各ファイルを連続的に格納するのみである。
- prettyprint(美観整形)やブロックの折りたたみを「デバッグ」の下に分類するのは誤りである。これらは表示機能であり、デバッグはブレイクポイント、ステップバイステップ、変数の監視、レポートウィンドウのことである。
| English | 日本語 |
|---|---|
| executable/ɪɡˈzekjʊtəbl/ | 実行可能ファイル |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | 動的ライブラリ |
| translator/trænˈsleɪtə/ | 翻訳器 |
| machine code/məˈʃiːn kəʊd/ | 機械語 |
| assembler/əˈsemblə/ | アセンブラ |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | アセンブリ言語 |
このトピックのインタラクティブ授業
一歩ずつ進め、即時チェック付きの問題で学習します。