Javaの指導にて

最近、新人に偉そうにもJava未熟者の私が教育する場がありました。
そこでわかったことを書いておきます

  • なぜJavaオブジェクト指向であったり、マルチスレッドであったり、例外処理に強かったりするような特徴を備えることになったか?を過去の改善から生まれてきたことを説明する。
  • オブジェクト指向の説明は抽象的な階層関係よりも保守容易性の観点から説明する。
  • 半導体を組み合わせて電子機器を作るように、APIコンポーネントといったプログラム部品を組み合わせて作るイメージを図を使って説明する。
  • String s = new String("hoge"); のようなインスタンス生成と参照に対して実際メモリ上にどんな風に変数やオブジェクトが割り当てられるか順を追って説明する

ちなみにメインは「オブジェクト指向でなぜつくるのか?」で、歴史的な背景は「Javaの10年」、若干細かいことは「SunJava2認定ガイド」を一部参考にさせてもらいました。

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

Javaの10年

Javaの10年

Sun Java2認定ガイド 310-035&310-027対応

Sun Java2認定ガイド 310-035&310-027対応

まぁ、これだけだと実務を使う上では全然足りないのですが、「Javaがよーわからん!」という人の悩みをいくらか解決してあげられると思います。そこから先は自分でガンガンやってもらえればいいわけですし。

で、反省点はメモリ周りの改善ポイントをうまく説明できなかったこと。
「Cだとメモリを壊す恐れがあるけど、Javaはその心配がない」という説明に対して、
「メモリを壊すという意味がわかりません」という返答が。
そこでアドレスがうんたらかんたらって説明したからいきなり?モードになったらしくそこから行き詰ってしまいました。でもメモリ云々を突き詰めていくとハードウェアに関しても説明しないといけないんですよねー。
何かうまく説明できる資料をみつけないと。