株式会社わくわくスタディワールド

試験で問われるプログラミングのレベル

はてな匿名ダイアリーにあった,「プログラミング出来ない奴ちょっと来い」が役に立ちそうだったので,ちょっと紹介します。

確かに,世の中のプログラミング本は,「プログラミング言語」の書き方の説明ばっかりで,「プログラミング」ができるようになる本って,なかなかないですね。
初心者の方は特に,このエントリにあるような方法で,実際に書いてエラーを出しながらマスターすることは大切だと感じています。

そして,情報処理技術者試験のプログラミング,アルゴリズム問題は,この「プログラミングができるようになったかどうか」を試すための試験です。

注意しないといけないのは,試験で問われているのは「プログラミングができる」ことであって,「プログラミング言語について知っている」ことではないということです。
ですので,CやJavaの入門書を読んでも,基本情報技術者のCやJavaの問題は解けるようになりません。
実際にある程度のプログラムを組んで,それなりに動かせるようになった人が解けるような問題を出題してくるからです。

基本情報技術者の午後アルゴリズム問題や応用情報技術者の午後プログラミング問題も,プログラミング能力を試すための問題です。
プログラミング言語の中から,それぞれの言語に依存する部分を取り除いた骨組みをもとに,すべてのプログラミングに共通するスキルを試すような問題になっています。

ですので,当たり前なのですが,プログラミング問題を解くための正攻法は,「実際のプログラミングを行って,初心者レベルを脱出すること」です。

といっても,別にそれほど難易度が高いわけではありません。
基本情報技術者試験,応用情報技術者試験で問われているのはあくまで,「中級者レベル」だからです。

上記のエントリ「プログラミング出来ない奴ちょっと来い」から一部引用させていただくと,中級者レベルとは,以下のようなプログラマです。

2. 中級者レベル
・プログラミング歴 半年 〜 3年
・1つ以上のプログラミング言語は使える
・オブジェクト指向は理解している
ただし以下に当てはまる。
・自分が制作しているアプリケーション向けに "実用的なフレームワークやライブラリ" を書けない
・1万行以上のコードだとスパゲッティコードになり、保守不能になる
・重複するコードが多く存在する
・適切なサブルーチン化できない

半年ぐらいプログラミングをやれば,このレベルには到達できると思います。
そして,基本情報技術者や応用情報技術者の試験の場合には,これで十分です。

以前のソフトウェア開発技術者やプロダクションエンジニアのアルゴリズム問題では,これより上の上級者レベルを判断する問題が出ていたように感じています。
木構造など,データ構造が難しい問題が結構出ていましたし,抽象化して考える必要がある問題も多かったです。

今の応用情報技術者試験の問題は,明らかに中級者レベル向けの問題になっていると思います。
だから,昔からプログラミングをやっている人から見ると,すごく簡単になったと感じるはずです。

ただ,初心者レベルだと解けない問題であるのも事実です。
ある程度プログラミングをやって,「初心者の壁」は超えないと解けないとは感じています。
何も勉強しない人が解けないのは当たり前ですし,そうでないと試験の意味がありません。

ですので,プログラミング問題を解けるようになるためには,初心者レベルを脱出するような勉強をすればOKです。
具体的な方法は参照したエントリに書いてあるので,こちらを見ていただければいいと思います。
試験問題で演習を繰り返す方法もありますが,実際にプログラムを組みながら身につけた方が,楽しいし実用的です。

プログラミングスキルは,身につけるのにある程度時間がかかりますので,「あと1ヶ月で今プログラミング,アルゴリズム問題が全然解けないのが解けるようになる」は現実問題として難しいです。
ちゃんとマスターするつもりなら,秋の試験に向けて勉強を始めるぐらいの予定がちょうどいいと思います。

ちなみに,基本情報技術者試験の午後表計算の問題も,問われる形式が違うだけで,問われている内容は基本的に同じだと感じています。
プログラミングする時に使用する論理的思考を,ワークシートを使った演算で聞いているだけだからです。
こちらも,解けるようになるためには他のプログラミング言語同様,実際にExcelを使ってマクロを作ったりして,プログラミングを行ってみることが王道だと思います。

焦って一足飛びに突破しようとすると,勉強自体が苦しくなってしまいます。
あせらず一歩一歩,無理なくスキルを身につけていきましょう。