基本情報のプログラミングはどれを選択すべきか

プログラミングの選択は多くの人が悩むところであり、その検索で本サイトを訪問されている方も多いようです。基本情報午後試験でどのプログラミング言語を選択すればよいかの基準を掲載します。

理系で情報分野を専攻している学生

C言語かJavaかアセンブリがおすすめです。C言語は情報科学を教えている大学ならほぼ確実に実装させられたことがあると思うので、一番今まで取り組んできた時間が長い言語を選ぶと良いでしょう。「私は関数型言語のHaskellしか書けません」みたいなコアな事を言っている人でもC言語はちゃっかり書けると思うのでCを選択しましょう。

オブジェクト指向を学んでないのにJavaを選択するのは無謀なので、Javaはオブジェクト指向やソフトウェア工学、デザインパターンをやったことのある人だけにしましょう。

アセンブリはコンピュータアーキテクチャが得意すぎるとか、CPUをFPGAで作ったことがあるとか、コンパイラを作ったことがあるという人なら選択していいと思います。アセンブリは少し知ってるけどものすごく詳しいかと言われればそうでもない、という人は素直にCにしておきましょう。

商業高校出身の人やSIerでCOBOLの保守をしている人

商業高校は必修でCOBOLをやっているはずなのでCOBOLを選択するのが楽でしょう。また金融系のSEをやっている人の中にはCOBOLをいじっている人がいますので、そういった人もCOBOLを選択すると楽です。

Javaは新人研修でやって以来ご無沙汰の文系出身SEの人

Javaの問題は研修でちょこっとやったくらいでは解答するのは難しいです。普段からJavaで実装する実装系SEをしていないと厳しいでしょう。要件をまとめる事務系SEだとなおさらきついです。そういった人は表計算の方が解きやすいです。表計算はワークシート関数の他にExcelVBAを想定したマクロの問題も出題されますが、ワークシート関数一覧やマクロ関数一覧は問題冊子に載っているのでその説明を読めば解けるようになっています。Excelのワークシート関数と仕様が違っているものもあるのでしっかり問題冊子のワークシート関数をあらかじめ読んでおきましょう。ワークシート関数の仕様は年度によって変化がないので、事前に読んでおけば試験時間中に読む時間を減らすことができます。

文系出身でIT系の仕事をしているわけでもなく趣味でITをやっているわけでもない人

とにかく何らかの資格を取得しなくてはならず、その中でも「基本情報」が国家試験の中で簡単らしいと聞いたいうことで受けようと思っている人を想定しています。

特にSEをやっているわけでもITの仕事をしているわけでもなく、趣味でプログラミングをしているわけでもない、でも基本情報に合格する必要があるという人は「表計算」が一番近道でしょう。

試験ではExcelと具体的な製品名は出てきませんが、表計算といえばExcelを想定して問題が作られています。

過去問の表計算の問題をみて、それと同じものをExcelで再現してみましょう。関数仕様は若干違うので、そのままコピペしただけではExcelでは動きません。どうやったら動くかそこを考えながら作るのも演習のうちです。

またExcelVBAのBはBasicを指しており、VisualBasicのBasicと源流は同じです。Basicは情報科学分野を専攻していない人でも、プログラミングを社会人になってからのOJT叩き上げでもできるように作られた言語なので、文系の人かつITに疎い人にとってはBasic系の言語が一番適しています。表計算の問題はBasicとイコールではありませんが、ワークシート関数やマクロはBasicと同程度の難易度なのでC言語に比べたら修得までに要する勉強量が著しく少ないです。過去問で表計算の問題をすべて解いて練習しましょう。

試験難易度は関係なく、今後のために真に役立つものという基準で勉強したいと思っている人

Javaがおすすめです。本当はJavaよりC#の方が役立つのですが、C#はほとんどJava(というよりマイクロソフトがJavaのいいとこどりしてブラッシュアップしたのがC#)なので、Javaを選択しておけばすんなりC#にも進めます。

Javaを修得するには様々なルートがあると思いますが、まずC言語からはじめるのが正攻法です。C言語でメモリリーク検出プログラムくらい作れるくらいになっておきましょう。

時間があればC++を経由してもいいかもしれませんが、そうでなかったらC言語の次はJavaを勉強しましょう。そのとき必然的にオブジェクト指向やデザインパターンも勉強することになります。

現在世の中で「しっかりした分野」で用いられている言語はJavaかC#かC++です。「しっかりした分野」というのは、もしそのソフトウェアが停止したら人命にかかわる、莫大な経済的損失が発生するという分野です。SNSでJava、C#,C++が少ないのはSNSが止まっても人命が失われるわけではないからです。そういった重要でない分野はPHPやPerlやRubyでもいいわけです。

つまりまともなソフトウェアはJavaかC#かC++で作られています。米国国防総省の業務ソフトウェアはJavaです。今後長く日本でも米国でも使われるF35戦闘機はC++でプログラミングされています。両方とも米国民3億人以上の生命がかかっている分野ですから、そういったしっかりした言語が使われています。

またe-TaxのようなWebサイト(アプリケーション)もJavaです。JavaやC#はWebサイトの作成からパソコンにインストールするタイプのソフトウェアまでカバーしています。

日本の企業もほとんどの社内ソフトウェアはJavaであり次がC#です。官公庁もJavaです。私はC#がベストだと思っていますがJavaは未だに強いです。

今現在プログラミング言語の本流とされているのがC#とJavaである以上、Javaを勉強しておけばC#にもJavaにも適応できるようになります。オブジェクト指向も必然的に勉強せざるを得ないので身につきます。

よって「実用性の高い役に立つプログラミング言語」を勉強したい人はJavaを選択すると良いでしょう。試験とは関係なく余談ですが、実際に自分でソフトウェアを作る段階になったらC#をおすすめします。