初心者にプログラミングを教えることになりました
会社の新人教育とかじゃなく、プライベートで。そこで、プログラミング初心者にどの言語を教えたらいいか自分なりに考えてみました。
私が使える言語は C/C++, C#, Java, JavaScript, Python, Ruby なので、これらが候補。
プログラミング言語の文法を覚えるところから初めて、最終的には Web アプリを公開してもらうところまで考えているので、それを選定基準にします。
C/C++
私が最初にさわったプログラミング言語は、大学で学んだ C++ でした。当時をふりかえると、プログラミングの講義では、相当数の生徒がポインタや再帰でつまづいていたように思います。中には脱落した生徒も…。
そういった経験から、C/C++ は、プログラミング初心者が最初に挑戦する言語じゃない、って個人的に思っています。なにより、私自身、C/C++ を教えるに十分なスキルを身につけていません。C/C++ を教えるのは無し。
C#/Java
C/C++ にくらべると、つまづきそうなところ(ポインタとかポインタとかポインタとか)が少ない印象。私は C# 歴が一番長いので、教えることもできそうです。Java もなんとか…。Visual Studio や eclipse といった強力な開発環境が無料で手に入るのもポイント高いです。
ただ、IED の操作を覚えるのに一苦労しそうだったのが懸念材料。私も、Visual Studio 使いこなせてるとは言えませんし。プログラミング言語以外にも最初に覚えることが多いと、プログラミング初心者の頭は混乱しそうです。
C#/Java ともにデスクトップ・Web・モバイルなんでも作れるので、覚えておいて損はない言語。2番目に覚えるのがよさそう。
JavaScript
JavaScript はブラウザとエディタさえあれば勉強できます。開発環境は最初から揃っている状態。
ただ、今回は Web アプリを作って公開するところをゴールにしています。Node を使えば作れはしますが、後述する Python や Ruby を差し置いて、初心者がいきなりサーバーサイド JavaScript ってどうなんよ?と思ったので見送り。
JavaScript は必要になってから勉強してもらえばいいかな。
Python
Python は構文がシンプルでわたし好み。インデントを強制する、たった1つのやり方を提供する、といった Python の思想は、プログラミングの良い習慣が身に付きやすいです。
標準ライブラリは豊富だし、Django や Flask といった Web アプリケーションフレームワークもあります。Python は、私が設定した選考基準は満たしていました。
Ruby
Ruby は書いてて楽しい言語でした。言語内 DSL との相性は抜群。Rake や Sinatra を初めてさわったときは衝撃をうけたものです。メタプログラミング最高。
Web アプリケーションフレームワークは Rails という鉄板があります。Sinatra も人気。Ruby も私が設定した選考基準を満たしていました。