generated at
callback
プログラムは、メインの流れの中で順番にstatementを実行するけど、
ある処理をメインの流れに書きつつ、その処理はsub routineの中で実行してほしい。

それには、sub routine(関数)の引数にメインの流れで書いた処理を渡しておいて(関数を渡す)、
その関数の中でその処理を呼んでもらう。 callbackしてもらう。

また、以下のような利点もある。
sub routineがいつ終わるか分からない状態のときもある。
その場合、sub routine とメインの処理のスレッドを分けておけば、
メインの流れとsub routineで別々に実行できる。
そして、メインの流れに記述した処理を、ad hockにsub routineの引数に渡して、
sub routine内の(プログラマーによる)任意の場所で実行(callback)できるようにする。

イベントベースのプログラムには便利。

ただ、問題点として、
callbackがたくさんあると、プログラムの可読性が下がる(順番に読めない)
なので、coroutineがあり、multi threads での処理を書く事がおおくなり、パラダイムシフトに繋がってる。

あと、interfaceを使って特定のオブジェクトにcallbackを実装をさせる。
実装をしたオブジェクトでcallbackを実行する形(これでcallbackを渡したことになる)もよくある?(kotlinを書き始めたせいかな)