コンピュータ初心者が学ぶのに適したプログラミング言語は?
先日、大学の先生から、プログラミングの科目を新設するにあたって相談にのって欲しい、と連絡があり、お話をしてきました。
その学科は、理系で、情報系の学科ではないのですが、IT企業へ就職する学生も少なからずいるそうです。
ITに関する科目の現状は、
・コンピュータを扱う科目については、今までは、GISとCADがある。
・Word、Excelも教えているが、企業からは、もう少し使えるようになっていて欲しい、と言われることがある。
ということで、まったくコンピュータに触れていない訳では無いのですが、そんなに力は入れていない様子です。
IT企業への就職を増やしたい、ということではないのですが、理系なので、多量なデータを取り扱うことがよくあるため、データをコンピュータ内部でどう取り扱うかを体験するために、プログラミングを学習させて、CSVからデータを読み込んで処理するくらいのことは出来るようになって欲しい、とのことでした。
相談の内容は、言語、開発環境、内容(教科書)をどうしたらよいか、というものです。
CやJavaでは、ちょっと難易度が高すぎて、半期(15回)では、そこまでは難しいと感じているようでした。
現在、わたしは、その先生と同じ大学の「マネジメント工学科」の「コンピュータ演習」の中で、C言語によるプログラミングを教えています。前期はExcelなど他のことをやっていたので、C言語をやるのは後期(15回)だけです。この授業は2時間/回、つまり30時間でCをやる、ことになります。
「マネジメント工学科」も、その先生の学科と同様にIT系の科目の少ない学科ですので、Cを習得させる、というよりは、Cを通じてプログラミングを体験する、といった内容になっています。
半分の時間で、となると、もっと教える内容を絞らなくてはいけません。これはかなり厳しいように思います。
また、わたしは、IT企業向の新人教育や専門学校で、Javaを教えています。
Javaは、きちんと言語を学ぶには、非常に適していると思います。教材も情報も豊富です。でも、Javaの場合、ファイルの入出力を取り扱うのに、ストリームの概念が必要になります。
それを、なんとなくでも理解するには、クラスやインスタンスなどもやらない訳に行かないので、15回、つまり15時間で、目的のところまで到達するには、C言語より厳しいかも知れません。新人教育や専門学校では、最低でも、その3倍は時間をかけています。
確かに、CやJavaでは難しそうです。
では、どのような言語なら良いのか。
最近では、高校の授業でも、プログラミングが取り扱われています。
高校の「情報」の教科書「最新情報の科学」(実教出版)には、ExcelとVBAを使った「二分探索」などの例(ソースコード)が載っています。
確かに、Excelはデータを取り扱うものですし、VBAは、言語の難易度的にも、易しい部類に入ると思います。しかも、Excelがあれば、無料の開発環境が整っています。これは大きな魅力です。
しかし、学生に教えるにあたって、大きな問題が2点あるような気がします。
(1) Excelで行うことと、プログラムで行うこととが切り分けにくい
Excelでは、並び替えの操作が行えます。そういうことを使いこなしている人が、VBAで新たにプログラムを組んで、というのなら兎も角、Excel自体も十分に理解しているか怪しい状態では、何をやっているのか混乱してしまいがちです。
(2) セルなどのオブジェクトの取扱いが理解しにくい
プログラミングの初学者が最初に躓くのは、配列とインデックス、関数と引数、それにオブジェクトの参照です。
セルのデータを取り扱うのに、2次元配列やオブジェクトがパッと出てきますが、本当は難しいことなのです。
VBAは、コーディングは比較的簡単に出来ますが、一からプログラミングを学ぶにはあまり向いていないように思います。
で、今回、話していて有力な候補になったのがVBでした。
開発環境も、「Visual Basic 2010 Express」が無償でダウンロードでき、インストールから29日間はこのまま使用できます。
もちろん、それだけでは期間が合わないのですが、30日後もWindows Live IDがあれば、無償のライセンスを取得できます。
ただし、ちょっと問題があります。この開発環境が高機能過ぎるのです。
実は、前述の「マネジメント工学科」の「コンピュータ演習」では、最初、Visual Studio 2010(Visual C++)を使ってやろうとしていたのですが、全員がインストール、プロジェクトの作成、ファイルの作成を終えるまでにかなりの時間がかかってしまいました。
多くのメニューに圧倒されてしい、プロジェクトの作成、ファイルの作成といった作業自体、このような開発環境に慣れない学生には難しいのです。
初心者がプログラムを学習する場合、多くのサンプルを入力・実行する、といった作業を繰り返す必要がありますが、その都度、プログラミングとは関係のないところで時間を取られてしまうのはあまりにも非効率的でした。
結局、苦しんで覚えるC言語 というサイトで用意されている簡易的な開発環境「学習用C言語開発環境」を用いて進めることにしました。これは簡単にインストールでき、一切の設定なしに、すぐにプログラミングが始められるので、教える側も非常に楽です。
「Visual Basic 2010 Express」は、「Visual C++」と比較すれば、楽に進められそうではありますが、ちょっと不安はあります。
将来、プログラマを目指すのであれば、もちろん、こうした高機能な開発環境に慣れ親しんでおくことは良いことだと思います。
Javaの学習の場合なんかは、テキストエディタとコマンドプロンプトで教える書籍も多いので、「最初からEclipseを使うべきで、テキストエディタとコマンドプロンプトで教える必要はない」という意見も良く耳にします。
しかし、それは、やはり、プログラミング初心者でも、IT業界を目指すくらいの、ある程度、コンピュータの扱いに慣れている人(少なくともその時点で既に興味を持っている人)の場合の話だと思います。
普通の学生にとって、高機能な開発環境はかなり敷居が高く、うまく動かなければ、途方に暮れ、一気に興味を失ってしまいます。
インストールに時間がかかる、起動に時間がかかる、それだけで、不安になってパソコンの電源を切ってしまう、そういう学生だっているのです。
限られたメニューしか使わないから大丈夫、と言っても、正しい操作が毎回できるとは限りません。
もちろん、テキストエディタとコマンドプロンプトも、パソコンに慣れていない人にとっては、決して敷居が低い訳ではありません。
cd でディレクトリ(フォルダ)を移って、dir でファイルの一覧を見て、なんて、ものすごいカルチャーショックだと思います。
でも、テキストエディタとコマンドプロンプトであれば、講師が簡単にフォローできます。
Eclipseなどでは、動かないから、と生徒が勝手に設定を変えてしまっている場合もあり、しかも、それが、何をやったか分からないので、講師もすぐに原因を特定できないこともあります。再インストールが必要、ということも少なくありません。
15時間しかない、しかも、一人の講師で数十名の生徒を相手にする場合、こういう事態は最も避けたい、ところです。
それであれば、カルチャーショックには目を瞑って「テキストエディタとコマンドプロンプト」を選択する方が賢明です。
Javaの場合は、CPad for Java2 SDK というフリーの開発環境があるので、それをお勧めしますが。
ちょっと、話が「開発環境」に偏ってしまいましたが、「テキストエディタ」と「コマンドプロンプト」で良いのであれば、「シンプル」で「習得が容易」と言われているPythonもいいんじゃないかな、なんて思います。
何より、Pythonは、インデントによるブロック表現など、可読性が高いのが魅力です。
その先生も視野に入れて、いくつかPythonの本を入手されていました。
- 「みんなのPython」(ソフトバンククリエイティブ)・・・ちょっと目標・対象としているレベルより高度
- 「10日でおぼえる Python」(翔泳社)・・・学習目的がそもそも違う、10日という内容ではない
Pythonは、CやJava、VBなどと比較すると、日本では、書籍の数が圧倒的に少ないのが難点です。
そんな中で、「Pythonスタートブック」(技術評論社、辻真吾著)は、なかなか良い感じでした。
まさに、これからプログラミングを始めたい、という人を対象としていて、取り扱っている内容、ボリュームも丁度良いように思いました。
しかし、
「IT企業の面接を受けた時に、Pythonをやってました、というのと、CやVBをやってました、というのとでは、イメージが違うのではないか?
Pythonでは企業の人も『知らない』ケースがあるのでは?」
と先生。
まあ、確かに技術者は兎も角、人事や営業の中には(偏見かもしれませんが)そんな人もいそうです。
先ほどの書籍の話もそうですが、日本での人気はもう一つ伸びていないように思います。
Pythonは言語として習得の難易度は高くありませんが、低機能という訳では無く、商用サイトでも採用されていますし、プログラミング言語の人気の指標である「TIOBEプログラミングコミュニティインデックス」(検索のヒット数などを元に、プログラミング言語の人気をランキング化)では、ベスト10に入っているんですけどね。
結局、今回は、VBで行くことになりそうです。