技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

確かに!下手な入門書より面白い「プログラマを育てる脳トレパズル」

最近読んだのでレビューを。
入門書じみてるのにワクテカがとまらんw

この入門書のポイント

  • Good
    • 発想をコードに落とす実装力が身につく : あくまでゲームとパズルを解くのが中心
    • 課題に対して解決を考える基礎力がつく : プログラミングの考え方を中心に据えているので、「入門書やったけど、これで何ができるかわからない」がない
  • Weak
    • 逆に言語仕様の深い話はしない : GUI とか 3D とかやりたくなったら、ライブラリは別途調べる必要がある

という、非常にアルゴリズム寄りな内容。
むしろ小学校でのプログラミング教育に突っ込みたい内容だ。

ただし文章などを含むと、独力で読むには最低中学生、高校生以上が望ましい文章だと思う。
逆を言えば家庭であれば親が一緒になってやるには丁度いい難易度。

ターゲット層

多分この本が狙ってるターゲット層はこんな感じだろう。

  • 何らかのプログラミングの入門書やったけど「これで何ができるんだろう?」という人
  • 言語仕様説明系の入門書読んで混乱した人。写経系入門書読んで意味不明とブチ切れた人
  • プログラミング初心者(年齢的には、高校生以上。頑張れば中学生でも読めないことはない)可能。
  • プログラマー就職してからプログラム言語を触ったけど、自分で実装設計できない人

所感

基本は最小限、あとはアルゴリズムパズル

本の内容は初心者向けに調整されたこの本。

…というか、この本を読んでてやたらと頭をちらついたと思ったら同じ作者じゃねーか…GoodJob!

あくまで「考え方を要求し、自分で覚える」を徹底する

プログラミングの入門書は多くの場合、以下のケースが非常に多い

  • ひたすら言語仕様に特化 : 仕様書ひゃっほう(個人的には好き)
    • 問題点:
      • プログラム脳ができてないと、読み終わっても仕様をどう使っていいかわからない
    • おすすめできる人種 :
      • 既に1言語以上習得済み
      • 今使ってる言語を極めたい人。
      • 自力で応用できる人。
  • 写経系 : 実用系サンプルアプリケーションを作る手順の中で言語仕様を説明
    • 問題点:
      • サンプルの改造するなど好奇心がないと、サンプル以外作れなくなる。しかし改造の方針が思い浮かばない。
      • 著者作の独自ライブラリに依存した瞬間すべて台無し。メンテもされないライブラリに依存したら、使えなくなった瞬間ピクミンと化す。
    • おすすめできる人種 :
      • サンプルに指定されてるアプリケーションをすぐ作れとか言われてる職業プログラマ
      • 雰囲気だけ知りたい人(応用の必要のない人)。
      • 既に言語は使ってるが、アプリケーションのジャンルとして知りたい人。
  • ガチ実用系 : アルゴリズムデザパタ、実装Tipsの紹介(個人的には好き)
    • 問題点:
      • 使う場所が思い浮かばない、応用しにくい(つーか最近はライブラリが補ってしまうので、あんまり用途がない)
    • おすすめできる人種 :
      • 求道者(競技プログラマ、セキュリティ関連の人)
      • ライブラリや言語を作る人
      • 既に言語が体の一部になっててさらなる職人芸を目指す人。

しかしこの本のコンセプトは違う

  • 基本の言語仕様を説明したら、自分で考えて作ることを要求する

なるほど、プログラマを育てるという意味では実にいい気がする。

現職プログラマでもやる価値あり

私は前職が SIer だし、現職の新卒なんかも時折眺めるのだが、結局プログラミング初心者が学習するとしても、職業訓練上あくまで「 言語的基本 」「 仕事で使う環境 」にどうしても課題が偏ってしまう。
指定のプラットフォーム上で小規模な修正/保守仕事をする分にはともかく、実装設計は現場で学べってスタンスにどうしてもなってしまう。

これは企業の教育のあり方を批判してるのではなく、営利企業である以上は即座に換金できる技術を学ばせるというごくごく当たり前の話なのだから当然である。
だが同時に、応用が一切効かなくなる。

試してみてほしい。

と突然言われて、即座に実装できる人がどれ位いる?

  • 環境のセットアップ方法に詰まる
  • 使ったことのある言語であっても、コンソールアプリって書いたことないからどう書いて良いかわからない(業務だと既に準備されたフレームワークでしか実装しないし…)
  • 実装の手順がわからない

はっきり言おう、こういう詰まり方をして 2-3 時間消費しても実装しきれない職業プログラマでも結構居る。
別に悪いと言わないし、それでも仕事自体はできたりするものだ。

要するに 慣れ親しんだ環境と、わかっている業務でしか手足が出ない ということを意味する。

でもプログラミング脳を持ってる人間は、必要最低限の言語仕様さえわかれば 1-2 時間で実装し得る。   よほど独特な仕様を持っていない限り、プログラミングの考え方の根底はほぼ同一であり、プログラミング脳というのはそういう考え方ができることを指している。

この本ではここを中心に据えている。

大体のものは作れる人でも面白い

そこそこ何でも書くプログラミングの変人さんでも、(第一、第二章はまぁ当然と考えても)第三章あたりになってくると数学パズルじみてくる。
解くことそのものが面白いのだ。

腕試し問題としてやってみるのも面白いかもしれない。

つーことで

ちょっと年末、小中学のプログラミング教育の内容に悩んでる親父と一緒にやって遊んでみる。