プログラミング初心者にはじめに教えるべきプログラミング言語

初心者にプログラミングを教えることになりました

会社の新人教育とかじゃなく、プライベートで。そこで、プログラミング初心者にどの言語を教えたらいいか自分なりに考えてみました。

私が使える言語は C/C++, C#, Java, JavaScript, Python, Ruby なので、これらが候補。

プログラミング言語の文法を覚えるところから初めて、最終的には Web アプリを公開してもらうところまで考えているので、それを選定基準にします。

C/C++

私が最初にさわったプログラミング言語は、大学で学んだ C++ でした。当時をふりかえると、プログラミングの講義では、相当数の生徒がポインタや再帰でつまづいていたように思います。中には脱落した生徒も…。

そういった経験から、C/C++ は、プログラミング初心者が最初に挑戦する言語じゃない、って個人的に思っています。なにより、私自身、C/C++ を教えるに十分なスキルを身につけていません。C/C++ を教えるのは無し。

C#/Java

C/C++ にくらべると、つまづきそうなところ(ポインタとかポインタとかポインタとか)が少ない印象。私は C# 歴が一番長いので、教えることもできそうです。Java もなんとか…。Visual Studioeclipse といった強力な開発環境が無料で手に入るのもポイント高いです。

ただ、IED の操作を覚えるのに一苦労しそうだったのが懸念材料。私も、Visual Studio 使いこなせてるとは言えませんし。プログラミング言語以外にも最初に覚えることが多いと、プログラミング初心者の頭は混乱しそうです。

C#/Java ともにデスクトップ・Web・モバイルなんでも作れるので、覚えておいて損はない言語。2番目に覚えるのがよさそう。

最初に教えるのはスクリプト言語が良さそう

メモ帳で書いて、インタプリタで実行すればいいだけですからね。いずれはちゃんとしたエディタを使ってもらうけど、とりあえずはメモ帳で。

JavaScript

JavaScript はブラウザとエディタさえあれば勉強できます。開発環境は最初から揃っている状態。

ただ、今回は Web アプリを作って公開するところをゴールにしています。Node を使えば作れはしますが、後述する PythonRuby を差し置いて、初心者がいきなりサーバーサイド JavaScript ってどうなんよ?と思ったので見送り。

JavaScript は必要になってから勉強してもらえばいいかな。

Python

Python は構文がシンプルでわたし好み。インデントを強制する、たった1つのやり方を提供する、といった Python の思想は、プログラミングの良い習慣が身に付きやすいです。

標準ライブラリは豊富だし、Django や Flask といった Web アプリケーションフレームワークもあります。Python は、私が設定した選考基準は満たしていました。

Ruby

Ruby は書いてて楽しい言語でした。言語内 DSL との相性は抜群。Rake や Sinatra を初めてさわったときは衝撃をうけたものです。メタプログラミング最高。

Web アプリケーションフレームワークRails という鉄板があります。Sinatra も人気。Ruby も私が設定した選考基準を満たしていました。

RubyPython、できることはどちらも同じ

PythonRuby で迷って、最終的に Ruby を選択しました。

日本の福岡だということが要因の一つ

日本初の RubyPython に比べて日本語の書籍や資料が探しやすいです。Python は公式のドキュメントがしっかりしていますけどね。

あと、福岡が Ruby を推進しているのも大きいです。Python プログラマの求人なんて皆無。gumi が来たから0ではなくなったけど…。Java ほどではないにしろ、Ruby の需要は結構あります。「これを機に、私も Web 開発で使うのを Python から Ruby に乗り換えようかな」、そんな考えが頭をよぎるくらいに。

Ruby は書いてて楽しいというのが一番の決め手

少なくとも「Ruby は楽しい」と世間で評されるくらいですから。実際に楽しいと感じるかどうかは個人差があると思いますが、私自身 Ruby は書いてて楽しかったです。

プログラミング初心者には、良いコードの書き方を教えるよりも、まず「プログラミングって楽しい」と感じてもらうことが一番重要ですから。