Goolge などの IT 企業の発展を受けて、 最近は子供にプログラミングを学ばせたいと思う親が増えているらしい。

プログラミングを学ぶことはいいことである、 たとえ将来にソフトウェア技術者や計算機科学者になるつもりがなくても。 プログラミングを学ぶことで、まず論理的思考力がつく。 そして、現代の社会を支える技術のひとつであるコンピュータの仕組みがわかる。 また、表計算ソフトやウェブブラウザなどの多くのアプリケーションは 高度な利用のためにプログラミング言語を備えていて、 プログラムすることでコンピュータを効率よく活用できる。

ゲームで遊ぶだけではなく、 自分でゲームを作れるようになる。 ものづくりを体験することは教育効果も高いだろう。 これはプログラミングに限った話ではない。 曲や映画をつくる、マンガや小説を書く。 ただ娯楽を消費するだけならば教育は不要である。 新しい価値を生産する手段を与えることが教育である。 そして、ものづくりは楽しい。

小学校低学年

まずは楽しむことが重要である。 プログラミングの取っ掛かりとしてはゲームを作るのが一番である。 Scratch のようなブロックを積み上げるプログラミング環境がいいだろう。 Scratch なら小学生でも読める本が出版されている。

小学生からはじめるわくわくプログラミング

小学校高学年

キーボードのタッチタイプの練習をしよう。 タッチタイプは現代人の基礎的技能である。 (ただし、将来的には音声入力が主流になって過去の技術になってしまうかもしれないが。)

ゲームを作るのがいいだろう。 言語はゲームを作りやすく、小学生でも読める書籍が出版されている Hot Soup Processor がいいだろう。

三角関数を勉強すると作れるプログラムの幅が広がる。 プログラミングでは数学が役に立つ。 中学レベルの数学も学ぶとよい。

HTML と CSS を学ぶのもよい。 これらはウェブを支える技術である。 毎日ウェブは使っていても 中身のさっぱりわからないブラックボックスだったのが、 どんな仕組みで動いているのか知ることができる。

中学生

ゲームのみならず、スマートフォン用の実用的なアプリも開発できるだろう。 興味があって、作りたいものを作るのがいい。

プログラミング言語は作りたいもの合わせて選ぼう。 Android アプリを開発したいならば、Java が第1候補だろう。 ゲームを作るならば Unity もいいだろう。

情報処理の基礎知識を基本情報技術者試験の教科書で学ぶとよい。 学校の授業の影響で教科書はつまらない印象を持たれやすいが、 どんな分野でも教科書はよくまとまっていて入門にお勧めである。

高校生

純粋関数型言語 Haskell を勉強しよう。 すべてのソフトウェア技術者は Haskell を学ぶべきである。

15年以上にわたり C や Lisp でプログラムを書いてきたが、 ここ数年で Haskell を学び、 ようやくプログラミングとは何か分かってきた。 (山本和彦 『プログラミング Haskell』 (オーム社))

プログラミング Haskell

UNIX も勉強しよう。Linux が第1候補だろう。 マイナーな OS に思うかもしれないが、 デスクトップOSは Windows が独占的だが、 サーバOSでは Linux がそうである。 UNIX の知識が役に立つからだけではなく、 UNIX がプログラミング環境として優れているからである。

UNIXという考え方

まだプログラミングに飽きてないなら、 プログラミングが好きなのだろう。 将来の職業を意識する時期である。 好きこそ物の上手なれ。 ソフトウェア技術者や計算機科学者を目指すとよい。

計算機科学を学ぼう。 計算機科学者になるつもりがなくても ソフトウェア技術者も計算機科学を勉強したほうがいい。

大学のカリキュラムを参考に

  • データ構造とアルゴリズム
  • 人工知能
  • 自然言語処理
  • データベース
  • コンパイラ
  • 論理回路
  • コンピュータ・グラフィクス
  • OS

線形代数、幾何学、集合論など大学レベルの数学の知識が必要になる場合は勉強しよう。