プログラミング言語を学ぶ
わく☆すた,美月です。
今日もおすすめの,一見まわり道だけど,本質的に実力が伸びる勉強法です。
この余裕がある時期におすすめなのは,「新しいプログラミング言語を学ぶ」ことです。
情報処理技術者試験は,IT技術者のための試験です。
技術者にもいろんな職種があるので,直接プログラミングをする必要のない人も大勢いると思いますが,「プログラミングの考え方」は,IT技術者にとって,基本となる,大切な考え方です。
情報セキュリティスペシャリスト試験には,セキュアプログラミングが出題されます。
データベーススペシャリスト試験では,SQLが出題されますし,プログラム設計的な問題も結構出てきます。
ネットワークスペシャリスト試験でも,SMTPなど,プロトコルを実装する問題が出てきますし,開発関連の問題も意外に多いです。
システムアーキテクト(旧:アプリケーションエンジニア)試験は,開発者が,開発した経験を論文に書く試験です。
そしてもちろん,応用情報技術者試験のアルゴリズムやデータベース,情報システム開発は,実際にプログラミングできる力があることが前提の問題です。
これらのことを,試験問題に出てくる都度,付け焼き刃で試験対策本だけを使って学習していると,全部がバラバラになりますし,考え方が身につきません。
主要アルゴリズムを覚えただけでは応用情報技術者試験の問題は解けませんし,セキュリティで「Perl->相対パス,ディレクトリトラバーサル」とか覚えても,ちょっと目先が変わると対応できません。
一度,プログラミング言語をマスターすると,これらの知識はつながってきます。
例えば,今年の応用情報技術者試験の午後問2のアルゴリズムは,C言語での構造体や,リストの表現方法を知っていれば,容易に解ける問題です。
ここで,どの言語を学ぶか,ということが問題になってきます。
多分,プログラミング言語だと何でもいい,というのが本来のスタンスかな,とは思います。ただ,基本情報技術者試験はともかく,応用情報技術者試験以上になると,どうしても,ある言語の特徴を持った出題,というのが多く出題されてきます。
過去問を見る限り,ポインタや構造体はバシバシ出てきますし,C言語を知っていると有利な問題は多いので,一度C言語をやるのは必須に近い感じです。
特に,COBOL系(COBOLやRPGなど)やBASIC系(VBAや古いVisual Basicなど)の言語しか知らない人は,考え方が違うので,新しく学ぶ価値はあると思います。
UMLやオブジェクト指向の問題では,デザインパターンやJavaっぽい問題が多いので,できればJavaもやっといた方がいいと思います。
あとSQL。
SQLは非手続き型言語で,集合論的な考え方がベースになっているので,普通の言語とは毛色が違います。
理解してしまえば,それほどやることは多くないのですが,きちんと考え方を理解する必要はあります。具体的には,相関副問合わせやグループ化の概念は必須です。
ついでに何か1つ,特定のDBMSについて理解しておくとベストです。OracleとかSQLServerのトランザクション管理や権限管理の仕組みとかは,セキュリティを学ぶ上で結構大事です。
細かい話をいろいろ書きましたが,IT技術は,実際にプログラミングされてきたことがベースになっています。ですので,プログラムでの実装のことを考えながら学ぶと,頭に入りやすくなりますし,生きた知識になります。
各分野に共通の,ベースとなる基礎知識という意味でのプログラミングの学習,おすすめです。
具体的な各言語の学習方法については,また後日お話ししたいと思います。