草稿。あとで書く
Markdown は(リッチテキストに比べると)表現が貧弱だとよく言われれる。自分もそこは同意する。 しかし、それがデメリットではない。Markdown の貧弱さは、意思伝達上の明確なメリットであると考える。Markdown の枠組みの中でテキストを組み立てることが、書き手・読み手に低負荷なまま意思伝達を可能にする。
markdown は元々はメール文面の慣習的なテキスト装飾が元になって発展した記法だ。プレーンテキストでも読める、という点に最も大きな価値があり、プログラミングエディタによる装飾や、GitHub上で閲覧するときの HTML 変換は補助ツールでしかない。
プログラマと非プログラマの一番の思考の違いは何か考えた時に、「制約」に対する認識の違いがあると考える。 プログラミング学習とは、プログラミングを学ぶことで自由になるものではなく、自分に課された制約を認識することに重点がある。
ルールベースのコンピュータには厳密な制約があり、対して自然言語はほとんど意味が一意に定まらない曖昧なものである。 プログラマ同士の情報伝達は、最終的にコンピュータに対する指示の厳密性が下敷きになるので、曖昧性を廃した表現が好まれる。
意思伝達におけるテキストの自由度とは、解釈の自由度とセットになっていて
Notion, Power Point, Excel はそれ自体が保存されているのではなく、専用のデータ構造として格納される。
これは、高度なデータを保持できる反面、常に閲覧/編集ツールの開発が高コストになると知られている。
よく知られているアンチパターンとして、専用のデータ構造に対して専用エディタで表現が追いつかなくなった時、プレーンテキストとして編集することがある。データ構造を直接いじりだす往々にして悲惨だと知られている。 編集ツールとして内部データをいじるのは想定されていないので、触ったしまった際にUIが読み込める保証はない。非可逆性がある。
プレーンテキストとプログラミングツールには、ある程度の非可逆性がある。入力段階や何らかの事情で構造が壊れている事自体が織り込まれており、それを修正するのが人間の仕事だ。
人間同士のコミュニケーションで意味を制約しているのは、厳密なルールというよりも話者同士が共有するコンテキストにある。日本人は特に同質的なコミュニティを前提にコンテキストを多く要求する傾向があり、主語を省略する文法にもそれが現れている。
LLM との会話は(システムプロンプトで設定しない限り)話者同士のコンテキストを持たないので、常に初対面の人に対して説明するのと同じ水準を要求する。
結果として、LLM 用のプロンプトは、オンボーディング資料を作るのとそう変わらない。