問題を簡単にする

  • 前提:ユーザ(自分)はバカではない
    • 実際にはバカかもしれないが、それはどうしようもないので、バカではないと仮定しておいて、問題・機械・ツール・手法をユーザに合わせて変形させることで解決を図る
    • [[ 人を賢くする道具 ]]

関連する情報を見やすくする

問題に関連する情報の表示を調整する。余計な情報を削る。足りない情報を補う。情報同士をつなげる。 問題を解くのは難しい。認知資源を無駄遣いしない。繰り返しはスクリプトにやらせる。でも完全に自動化しなくてもいい。

問題を多角的に見る

自然言語とプログラミング言語の両方で記述する。図に起こす。ただし、一つのViewに一つの視点。複数の視点を一つのViewに詰め込むとあまりうまくいかない。

手法

LLDBのスタックトレース

call graphを出力する

  • CならEgyptが使える

テキストファイル

出力結果などをペタペタ貼って眺める。「抜き書き」をする。スクリプトでの操作が難しければ手で編集する。ローカルで動作して、なるべく軽いエディタを使う。

デバッガスクリプト

~/.lldbinit ~/.gdbinit


  • 抽象化する
  • 手続きの簡素化(自動化)とオブジェクトの抽象化はある程度対応する。手続きを自動化するときに、なるべくオブジェクトのモデルと整合するような切り分け方をするとベター。
  • ワーキングメモリに収まるように手作業を減らす。自動化をする。
  • 時折、「結局何に悩んでいるのか」を考え直す。書き下す。悩みが複雑な形を持っていることもある。
    • 例:「Pという問題があって、一番雑にはAという方法で解けるが、理想的にはBでやったほうがよいと考えている。Aを実行する方法もBを実行する方法もわからない」
      • こう書くと「そもそもAかBをどう選択するのか」という問題の存在が明確になる
  • 抽象化にもなる自動化は存在する。自動化にもなる抽象化は存在するか?
    • 自動化されたスクリプトが、抽象の存在を示す表象になるのではないか。

Backlinks

There are no notes linking to this note.